{"_id":"redux-crud-manager","_rev":"38-bb039b4dcedceed3cfa268d9a5787b34","name":"redux-crud-manager","description":"Redux CRUD utilities for keep store sync with your server","dist-tags":{"latest":"0.4.5","next":"1.0.0-alpha.23"},"versions":{"0.1.0":{"name":"redux-crud-manager","version":"0.1.0","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","scripts":{"build":"webpack --env build","dev":"webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepublish":"webpack --env dev && webpack --env build"},"dependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","gitHead":"6c46d114f692586e2d97b3a19e2fffeef96a5f19","_id":"redux-crud-manager@0.1.0","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-JkgHHz5Cfjryqi5rXZT9FlczXIRvOLe1+qp4OSOy21i7Ctt2srH12TN1MMuGM2aJppzubwWz2al2uAns+P0tmA==","shasum":"d823b58010f45e9d577da868de36ee19cb2c5f84","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATIuzJJQzFqttFMiRkW/wmCmW60hjEXsgtX64IdDFKdAiA0Ui7nob1XL+/6V67vE1Bqtky+8GDmMPVU8UX+CgRnlg=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-0.1.0.tgz_1514858812645_0.6063857122790068"},"directories":{}},"0.1.1":{"name":"redux-crud-manager","version":"0.1.1","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","scripts":{"build":"webpack --env build","dev":"webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepublish":"webpack --env dev && webpack --env build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","gitHead":"8acf01ae31cfeb7781fe19b45b31f577a6deb284","_id":"redux-crud-manager@0.1.1","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-l409AoUIbB/z929LH2QkIsXuJgTBqpWctibKYmc4hYobticAEIkiJiYur3wR4RS8sBLqBekXVLa/cJKsdHh8Zg==","shasum":"f51056693b4ec4c1ea03892c3ae08f84601ca8c3","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9j/b20GC15V9h+wog0JcuCbIPu4qlBx/GUNjHeZ7yFwIhANbspJJd30dg/u0qbib4aGV/DI6PDSN0YGAVrdbLUdoV"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-0.1.1.tgz_1514859385030_0.7905519334599376"},"directories":{}},"0.2.0":{"name":"redux-crud-manager","version":"0.2.0","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","scripts":{"build":"webpack --env build","dev":"webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepublish":"webpack --env dev && webpack --env build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","gitHead":"ebae679bad80ab892e679b048d3f3ffd5f72b15a","_id":"redux-crud-manager@0.2.0","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-I2P83ONVk5w7Zo7SMZui2ONSKv8tySRSqwzwHvCohDeFoWiEcgqqfQAKKmx4TjIQcb1Mw+HEPnIG3j5bx7MrDw==","shasum":"3b6fa41dfe183bbf253eff7e08673e2aef40f011","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-0.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGZAZ/jEENX+poq8b30CZch9t9wKqwqhecP7dAIfzvF2AiBPNLaaKKpeGy4otcfoyE7pW8q98e5ynV3j18vEKIPJjg=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-0.2.0.tgz_1515110531017_0.8603342545684427"},"directories":{}},"0.3.0":{"name":"redux-crud-manager","version":"0.3.0","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","scripts":{"build":"webpack --env build","dev":"webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"webpack --env dev && webpack --env build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","gitHead":"864a264aee1cf04e1f9ea928eace0d2207677b21","_id":"redux-crud-manager@0.3.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-SvPneriNFxSd8Ce8JSd/WYe7CA75435eR9PadTlEi6jT7oTJgp34xX5tMVk5XM/wp5KzVAXjAie0PCV1ScLm7g==","shasum":"c600a7de01a3741c9e22ca9834220aa239de24c9","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-0.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUpcLxL2JTZzSdsd2XZES387RFitsu5E878/+cGDm1CAIhAOIi8VKKAaIXdyGjEzzNZIPXER+uvDcCqlSeX+43YmAj"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-0.3.0.tgz_1515149948294_0.5121958784293383"},"directories":{}},"0.4.4":{"name":"redux-crud-manager","version":"0.4.4","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"webpack --env dev && webpack --env build","dev":"webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"a6169caa82a74e9d36191ee1d4f2267dbaf8bd6a","_id":"redux-crud-manager@0.4.4","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-jZlHRkGq3IG2U9PwesCWXgNM/A9MxsXxcL9w5q+fcR3jtaeexpAe3GWAzWPgJ4uATtcHXnaSNejvxe1C4yIz/Q==","shasum":"551fd4fa9a0b98692f8cb8baf741929d1ae792da","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-0.4.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDaoKKF9sYgCRWKKZYDyfCvasxK1p8cyDfaZ/pdJl9BrAiEAg5Jj01DZs7RItLSkgprEQyxPCXgHAo1c2M/i+c/mXQc="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-0.4.4.tgz_1515424112707_0.2586891127284616"},"directories":{}},"1.0.0-alpha.1":{"name":"redux-crud-manager","version":"1.0.0-alpha.1","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"2106b5cf2873e80b8cd7ea114cb1562e81f9b417","_id":"redux-crud-manager@1.0.0-alpha.1","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-++cKpaZS4QaD6NLSLcZ8xz6DgHtjvjONm+XKe+ZrbEWlA1cf7A5qpKXom0zGrDdjIgHjlvUh8sT481hAS30qlg==","shasum":"04efe178a1204b1018771e75da6c8f26677424fd","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBs+9eK0j58gN/Gr9ATFq+J7+51JOEb/vAOo6jGoL5iAiApofukgqn+6ZiT2B7bRbWkkigxdJpYIAflu7m4B62Ifw=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.1.tgz_1515982497847_0.8094623896759003"},"directories":{}},"1.0.0-alpha.2":{"name":"redux-crud-manager","version":"1.0.0-alpha.2","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"e6f67886e78f96bd64490cc8f53139ed3b4374f1","_id":"redux-crud-manager@1.0.0-alpha.2","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-WJ78dcwNtf9M5NjAFsE0Y8HgxRMAU++USibcTutDm3AMuZ5OqRBa5oitYiNH79/fmlmTZZG8MJ65GjIZVMm75Q==","shasum":"4ef13356ea77b2464ffc931732a87a8c96964d33","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn/Eu3fwKq6Ttb/vuCv5/koFir/nNsEiJ90NNFD4tBjwIgJaWyT+NGlrUsGZK0/kh1YZCTYevqBI1JkODQ2zCkrkY="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.2.tgz_1516017629086_0.02964990260079503"},"directories":{}},"1.0.0-alpha.3":{"name":"redux-crud-manager","version":"1.0.0-alpha.3","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"92171f59d7b67db8b3538f77291cccfa211c4c07","_id":"redux-crud-manager@1.0.0-alpha.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-Vp6SrFWCp4EfN5LjCyarZeM1/lQ5F1fExYJJBiFNt2VzG4tBtpMtYIKw7oAo5yTKMFb2qZ/du7D1tWW8OllCuw==","shasum":"b06e272766bbab7e03cac3edf70ec8d67c85a861","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdMIUR2t5fKrb2g67w1xfucVZHJOVv8rK7SkWEtVqELQIgbXR8rzw4a1w7SrEPBuk4onWMKfcqT5uvUy3o/TAamv8="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.3.tgz_1516273924990_0.6401002132333815"},"directories":{}},"1.0.0-alpha.4":{"name":"redux-crud-manager","version":"1.0.0-alpha.4","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"098b441f5829ef87912796473862dfb7a9fc5abb","_id":"redux-crud-manager@1.0.0-alpha.4","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-jb+IAh2PiRemNkPx1iWktzQQZcK2rJR9uZwq1OkJz6rPIkxJEVo1cuHEqb2XdBJy0clTAIe2/1zSFovVAz+3/w==","shasum":"0cee55336e85686fcd025a2cdee7142c85f1563f","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAC/3GkN6fzxkL4IKukHLDJFAAU8seIav+W4wy2t/TETAiBjM0KBfrDJofGUJW+fNddiU2NBnp9dM29N3J7KIRXuTQ=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.4.tgz_1516378809160_0.08246174571104348"},"directories":{}},"1.0.0-alpha.5":{"name":"redux-crud-manager","version":"1.0.0-alpha.5","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"eff856ab7e43e78a21e9570e7f57768d49d68a6e","_id":"redux-crud-manager@1.0.0-alpha.5","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-4O84Ye6jFJ3aj+rLY2ppc14o1FXQqibpOQ/NUi8pgpL4sKtWiUIaaZWlftvA47kynlvzOZ1xpLSNPCFiGrmFYQ==","shasum":"e81970683a6d864c05a9c3935edba2ddf7fcf750","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChrOYIoL1EfYTzz/PqBxqOHTJMRedWGMGq29CFZBPVLAiEA5NZkAriPiEJKNx54bmOHL2jRJb2QkEhgV0TWYWtG48s="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.5.tgz_1516877452536_0.40115180844441056"},"directories":{}},"1.0.0-alpha.6":{"name":"redux-crud-manager","version":"1.0.0-alpha.6","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"77f4874216cc7e136302fd9ef9639cbddb8be489","_id":"redux-crud-manager@1.0.0-alpha.6","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-rBLeqgxuVGRgQwycQ0NeR2IXgF3O2Z55aij6kadCXSnGf51GynHWuwNr4Wdyix9obhAk8jeiCvb/yQZ083AojQ==","shasum":"ff1d6d3136aaf17824474164af1e1dae4a46af66","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFH+nuCwqaKS9y09500z0tjq8ZHg6RavxSzPGJDMWuuiAiA8GsKGKmReIxwU580CE521KwqLfRpHgbcpmJddFz3bkw=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.6.tgz_1517253378243_0.47355552366934717"},"directories":{}},"1.0.0-alpha.7":{"name":"redux-crud-manager","version":"1.0.0-alpha.7","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"efb028508bbd7263769a25310790e85e57358785","_id":"redux-crud-manager@1.0.0-alpha.7","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-gNxkHn6RxpHGERFVaVlGgWeoNYoYFNqVUCmRi7stEEa59Ue1AsDYw2hIqaV4SO9ATTSiWJYP/HdOa86pmcF2Yw==","shasum":"05ee80d6e52aa4f87ae7188a137c91d3e22d2f2b","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7GpVo7BAk2QMfti5DyImuKQvAh0+HkrFhi1PC+A60nAiEAh4QkbcI0/kqVadFbd0GeEu5X/8ry+8bPNP+ri91Ojpc="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.7.tgz_1517312809666_0.28475515847094357"},"directories":{}},"1.0.0-alpha.8":{"name":"redux-crud-manager","version":"1.0.0-alpha.8","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"9c74e3807d9ea01c9c18d3c762d889eb6f0c65d9","_id":"redux-crud-manager@1.0.0-alpha.8","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-Rn2q00+9yhAUl57h0uuWqN/AoAKJadIKxhBjA0JnJNuTqhJ+HWBINgf1kmKIOgHnm7UTkuP0OjR1fea02u2bjA==","shasum":"76429e67f42ca9140123c57e568ed85a7ec79a32","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.8.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5eQkZIv+6FthR2yAQSMr2x5CzqUNkPdmiLPBpbDEf1AiEAojdIUVxILcKvKebYi0tD+M+R/u6ygDcBYFOWfRx+4Ms="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.8.tgz_1517397793921_0.03978730458766222"},"directories":{}},"1.0.0-alpha.9":{"name":"redux-crud-manager","version":"1.0.0-alpha.9","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"be2a9cd84c1d7aaac41d9cc7b0cf7f49fd1c2fc9","_id":"redux-crud-manager@1.0.0-alpha.9","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-CjKP7Ssk2H4F/vHkboDFADjR7+W84ZoJTDrvRceXhgSx8NEJ6qnjbPJB81Dl/Ojl4Pc6iYY3MXiXWwIY8+srKg==","shasum":"c1b540cd42f4072a8cf26efb3f670a1b620479d5","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.9.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICKkdp8cY1DtXJyTggHoHpkCnY2Y/zrh9qjmg9j2KCWxAiAiqbLO22YEqr95Ib4S0O2q1VYFmRkccWBfkeU6ib7KIw=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager-1.0.0-alpha.9.tgz_1517485017875_0.015023635234683752"},"directories":{}},"1.0.0-alpha.10":{"name":"redux-crud-manager","version":"1.0.0-alpha.10","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"8d7bc8268f5a4a38b17b4decd24cfb1f9881a857","_id":"redux-crud-manager@1.0.0-alpha.10","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-X2VvtruAFlhzhhkhQhfvmP9lfsIIeNwjFnv9f3tgJQUc5qUkU9btKa9j98MyKAwucvR+qUUJLZ6fBgMSz/WTfg==","shasum":"5ac9374c4a5bb6b7f9ffcbed7338fa581d01f543","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.10.tgz","fileCount":18,"unpackedSize":260199,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDr5asXnVIwMzQDHlLHZhp5c9uTa7XI3lQc1dmIuc7+/AiEA1bOyY2nF5jminM96DjValCJitFH49+UIdNsIwy5873o="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.10_1518540196452_0.38828090755405964"},"_hasShrinkwrap":false},"0.4.5":{"name":"redux-crud-manager","version":"0.4.5","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"webpack --env dev && webpack --env build","dev":"webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"7afb166b0dc68c4df3595b4ce31be242c7725263","_id":"redux-crud-manager@0.4.5","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-t+xi2Z02yZGTR4hlXOJA+RYp+JfxwVNXMVkcotPqxupCc2Ub9YyCcybmac6GpHV8aVo8uKDJuNjDtuBqfT9kzQ==","shasum":"f7e180dd95e7ead6b927efc19461f1b9b5ea1a86","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-0.4.5.tgz","fileCount":17,"unpackedSize":206536,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4gLLgc7nYDEtupYrpOxZ+Mzg4pm4P0Ce/JE6eHnkdKAiEAxcPFvN7Jojsx5lSeb/WTEUttXytqawJi2CeECpI0DUQ="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_0.4.5_1518540700994_0.2299028574531623"},"_hasShrinkwrap":false},"1.0.0-alpha.11":{"name":"redux-crud-manager","version":"1.0.0-alpha.11","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"c64dfc2bc951b6aa6d8ace286aeff2b13fb4c50c","readme":"Redux CRUD Manager\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n# Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\n\nNo more need to write actions and reducer to update your store. \n\nWhat precisely each manager ?\n\n* It use CRUD pattern\n* update your data localy (redux store)\n* update your data localy AND sync at the same time to your remote server\n* update your data localy, and save few moment later to your remote server\n* indicate loading process to the user (for example with a loader). No need to manually set a ```isLoading``` flag.\n* fetch your data and use local data (redux) if resource are already fetched.\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n# Documentation:\n\n* [Configuration](#configuration)\n* [Simple Example](#simple-example)\n* [Configure remoteActions](docs/v1/remote-actions.md)\n* [Configure reducer](docs/v1/reducer.md)\n* [Events](docs/v1/events.md)\n\n# Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {...};\nconst usersManager = createManager(config);\n```\n\n## Config object\n\n\n* ```reducerPath``` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* ```remoteActions```  {object} - required - async action for HTTP request\n\n* ```customActions```  {object} - make possible to create your own actions\n\n\n* ```idKey``` {string} - optional - the key use as the unique identifier. Default: ```id```\n\n\n* ```cache``` {bool | function} - enable cache if resources are already fetched. Default: ```false```\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* ```merge``` {bool} optional - default ```true``` - merge item property on update()\n\n* ```deepMerge``` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* ```replace``` {bool} optional - default ```true```\n\n\n* ```remote``` {bool} optional - default: ```false``` - save your change in your server, with remoteActions\n\n\n* ```prefixLocalId``` {string} - optional\n\n\n* ```showUpdatingProgress``` {bool} optional - default ```true``` . ```syncing``` will be set to ```true```\n\n\n* ```updateLocalBeforeRemote``` {bool} optional - default ```false```. Properties will be updated locally before the server response. Ignored if ```showUpdatingProgress``` is false\n\n\n* ```forceDelete``` {bool} optional - default ```true```\n\n\n* ```includeProperties``` {array[string]} optional - include property on save.\n\n\n* ```excludeProperties``` {array[string]} optional - include property on save. Ignored if ```includeProperties``` is defined\n\n\n\n<a id=\"simple-example\"></a>\n\n# Simple example\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {\n  reducerPath: ['users'],\n  remoteActions: {\n    fetchAll: () => {...}\n    fetchOne: () => {...}\n    create: () => {...}\n    update: () => {...}\n    delete: () => {...}\n  }\n}\n\nconst usersManager = createManager(config);\n```\n\n* [How configure remoteActions](docs/remote-actions.md)\n\n# Actions\nCreate, update and delete redux store only\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst userManager = createManager({...});\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\n// data can be an object or an array\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nIf you want to not make a remote request but only use local change, set `remote: false`\n\n## PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, links actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n## Customs actions\n```js\nconst userManager = createManager({\n  customActions: (defaultActions, internalsActions) => ({\n    customFetchAll: () => (dispatch, getState) => {\n      dispatch(internalsActions.fetching());\n      fetch('http://...').then(items => {\n        dispatch(internalsActions.fetched(items));\n      });\n    }\n  })\n});\n```\n\n```js\ndispatch(userManager.actions.customFetchAll();\n```\n\n\n## defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* createFromItem\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n## internalActions\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n\n\n\n# Metadata\n\n```js\nimport { getMeta, isSyncing, isSynced, getChanges, syncingKeys } from 'redux-crud-manager';\n\nconst user = store.getState().users.find(...);\n\nif (getMeta(user).preCreated) {\n  // ...\n}\n``` \n\nmetadata are defined for a resource, and also for the list of resources:\n\n```js\nimport { getMeta } from 'redux-crud-manager';\n\nconst users = store.getState().users;\n\nif (getMeta(users).syncing) {\n  // show loader\n}\n``` \n\nmetadata item:\n```js\n{\n  preCreated: false,\n  creating: false,\n  preUpdated: false,\n  updating: false,\n  preDeleted: false,\n  deleting: false,\n  localId: null,\n  lastVersion: {},\n}\n```\n\nmetadata list items:\n```js\n{\n  fetching: false,\n  fetched: false,\n  creating: false,\n  updating: false,\n  deleting: false,\n}\n```\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.11","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-4nwlSuCSCZxg87xJioS/cT+hqF0VBL2NIYVDIv0q6ND4JX0pIPX9FvlJ3InI35+2fHSV6YWo/en1NhAUdMOuCQ==","shasum":"9992ea12c70f3236025f7cefc43c846b608beb5a","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.11.tgz","fileCount":18,"unpackedSize":260199,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApnl91Pz7xDl9LoKNLCFm3YXzvYNYGt0p3OXRIZ/9aBAiB42fOGFIvKP8D1+JnoNdhaRU3j1I11hkXdl2tLUXolKg=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.11_1518540941154_0.6917580198142121"},"_hasShrinkwrap":false},"1.0.0-alpha.12":{"name":"redux-crud-manager","version":"1.0.0-alpha.12","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"8e56f37ea7257a8265012e7b812c160d7672ddbb","readme":"Redux CRUD Manager\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n# Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\n\nNo more need to write actions and reducer to update your store. \n\nWhat precisely each manager ?\n\n* It use CRUD pattern\n* update your data localy (redux store)\n* update your data localy AND sync at the same time to your remote server\n* update your data localy, and save few moment later to your remote server\n* indicate loading process to the user (for example with a loader). No need to manually set a ```isLoading``` flag.\n* fetch your data and use local data (redux) if resource are already fetched.\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n# Documentation:\n\n* [Configuration](#configuration)\n* [Simple Example](#simple-example)\n* [Configure remoteActions](docs/v1/remote-actions.md)\n* [Configure reducer](docs/v1/reducer.md)\n* [Events](docs/v1/events.md)\n\n# Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {...};\nconst usersManager = createManager(config);\n```\n\n## Config object\n\n\n* ```reducerPath``` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* ```remoteActions```  {object} - required - async action for HTTP request\n\n* ```customActions```  {object} - make possible to create your own actions\n\n\n* ```idKey``` {string} - optional - the key use as the unique identifier. Default: ```id```\n\n\n* ```cache``` {bool | function} - enable cache if resources are already fetched. Default: ```false```\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* ```merge``` {bool} optional - default ```true``` - merge item property on update()\n\n* ```deepMerge``` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* ```replace``` {bool} optional - default ```true```\n\n\n* ```remote``` {bool} optional - default: ```false``` - save your change in your server, with remoteActions\n\n\n* ```prefixLocalId``` {string} - optional\n\n\n* ```showUpdatingProgress``` {bool} optional - default ```true``` . ```syncing``` will be set to ```true```\n\n\n* ```updateLocalBeforeRemote``` {bool} optional - default ```false```. Properties will be updated locally before the server response. Ignored if ```showUpdatingProgress``` is false\n\n\n* ```forceDelete``` {bool} optional - default ```true```\n\n\n* ```includeProperties``` {array[string]} optional - include property on save.\n\n\n* ```excludeProperties``` {array[string]} optional - include property on save. Ignored if ```includeProperties``` is defined\n\n\n\n<a id=\"simple-example\"></a>\n\n# Simple example\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {\n  reducerPath: ['users'],\n  remoteActions: {\n    fetchAll: () => {...}\n    fetchOne: () => {...}\n    create: () => {...}\n    update: () => {...}\n    delete: () => {...}\n  }\n}\n\nconst usersManager = createManager(config);\n```\n\n* [How configure remoteActions](docs/remote-actions.md)\n\n# Actions\nCreate, update and delete redux store only\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst userManager = createManager({...});\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\n// data can be an object or an array\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nIf you want to not make a remote request but only use local change, set `remote: false`\n\n## PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, links actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n## Customs actions\n```js\nconst userManager = createManager({\n  customActions: (defaultActions, internalsActions) => ({\n    customFetchAll: () => (dispatch, getState) => {\n      dispatch(internalsActions.fetching());\n      fetch('http://...').then(items => {\n        dispatch(internalsActions.fetched(items));\n      });\n    }\n  })\n});\n```\n\n```js\ndispatch(userManager.actions.customFetchAll();\n```\n\n\n## defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* createFromItem\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n## internalActions\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n\n\n\n# Metadata\n\n```js\nimport { getMeta, isSyncing, isSynced, getChanges, syncingKeys } from 'redux-crud-manager';\n\nconst user = store.getState().users.find(...);\n\nif (getMeta(user).preCreated) {\n  // ...\n}\n``` \n\nmetadata are defined for a resource, and also for the list of resources:\n\n```js\nimport { getMeta } from 'redux-crud-manager';\n\nconst users = store.getState().users;\n\nif (getMeta(users).syncing) {\n  // show loader\n}\n``` \n\nmetadata item:\n```js\n{\n  preCreated: false,\n  creating: false,\n  preUpdated: false,\n  updating: false,\n  preDeleted: false,\n  deleting: false,\n  localId: null,\n  lastVersion: {},\n}\n```\n\nmetadata list items:\n```js\n{\n  fetching: false,\n  fetched: false,\n  creating: false,\n  updating: false,\n  deleting: false,\n}\n```\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.12","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-Mb4+RKLguYHVOUqsM5HCuIlCofQvS22/t+kYH8XTUvGyuKYnkJOzKF4GZb0he7ofp07E5m/iH96nF4oltkCnvA==","shasum":"803961b3a7bbfb1d6c375816583bb625e7a523bc","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.12.tgz","fileCount":18,"unpackedSize":260237,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh3fYKA3DhGCyeNViNYvBE7BHcwcq0DmFoDGJYWD1bowIhANY0yTzTVKsdCwt6k1TpBxvpQz293X+haTTuNnGaL3gi"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.12_1518545387469_0.859403299254637"},"_hasShrinkwrap":false},"1.0.0-alpha.13":{"name":"redux-crud-manager","version":"1.0.0-alpha.13","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"af610fcd4476d9a9157cdd85b5eea967d4976656","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Simple Example](#simple-example)\n* [Configure remoteActions](docs/v1/remote-actions.md)\n* [Configure reducer](docs/v1/reducer.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {...};\nconst usersManager = createManager(config);\n```\n\n### Config object\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* `remoteActions`  {object} - required - async action for HTTP request\n\n* `customActions`  {object} - make possible to create your own actions\n\n\n* `idKey` {string} - optional - the key use as the unique identifier. Default: `id`\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true`\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `forceDelete` {bool} optional - default `true`\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n\n<a id=\"simple-example\"></a>\n\n## Simple example\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {\n  reducerPath: ['users'],\n  remoteActions: {\n    fetchAll: () => {...}\n    fetchOne: () => {...}\n    create: () => {...}\n    update: () => {...}\n    delete: () => {...}\n  }\n}\n\nconst usersManager = createManager(config);\n```\n\n* [How configure remoteActions](docs/v1/remote-actions.md)\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst userManager = createManager({...});\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* createFromItem\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Internals actions\n\nInternal actions are used inside `defaults actions` , and you will never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n\n### Customs actions\n```js\nconst userManager = createManager({\n  customActions: (defaultActions, internalsActions) => ({\n    customFetchAll: () => (dispatch, getState) => {\n      dispatch(internalsActions.fetching());\n      fetch('http://...').then(items => {\n        dispatch(internalsActions.fetched(items));\n      });\n    }\n  })\n});\n```\n\n```js\ndispatch(userManager.actions.customFetchAll();\n```\n\n## Metadata\n\n```js\nimport { getMeta, isSyncing, isSynced, getChanges, syncingKeys } from 'redux-crud-manager';\n\nconst user = store.getState().users.find(...);\n\nif (getMeta(user).preCreated) {\n  // ...\n}\n``` \n\nmetadata are defined for a resource, and also for the list of resources:\n\n```js\nimport { getMeta } from 'redux-crud-manager';\n\nconst users = store.getState().users;\n\nif (getMeta(users).syncing) {\n  // show loader\n}\n``` \n\nmetadata item:\n```js\n{\n  preCreated: false,\n  creating: false,\n  preUpdated: false,\n  updating: false,\n  preDeleted: false,\n  deleting: false,\n  localId: null,\n  lastVersion: {},\n}\n```\n\nmetadata list items:\n```js\n{\n  fetching: false,\n  fetched: false,\n  creating: false,\n  updating: false,\n  deleting: false,\n}\n```\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.13","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-Zz0ssGqSTaGKbLD7m9bq1leTc9jOkGfsdAKH28nvHlE2HqOv85M7ragRtgyY4cZC3buK0zX1FRwlynyonsoR2Q==","shasum":"2d6c9576730d0e12fbd629a154fefa8e59d4411e","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.13.tgz","fileCount":17,"unpackedSize":260623,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJoUacg2a6DyTFIpFron156yvtbOkRR4QbcEJ163RTWAIgSXoSvVR1fZcwwhqhkbW7B9+8E45GfgMcXNPWbK12R+s="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.13_1519905553140_0.617751784628586"},"_hasShrinkwrap":false},"1.0.0-alpha.14":{"name":"redux-crud-manager","version":"1.0.0-alpha.14","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"6e1c8fbe29c433baccb5265bad2c111ba06bf29d","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Simple Example](#simple-example)\n* [Configure remoteActions](docs/v1/remote-actions.md)\n* [Configure reducer](docs/v1/reducer.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {...};\nconst usersManager = createManager(config);\n```\n\n### Config object\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* `remoteActions`  {object} - required - async action for HTTP request\n\n* `customActions`  {object} - make possible to create your own actions\n\n\n* `idKey` {string} - optional - the key use as the unique identifier. Default: `id`\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true`\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `forceDelete` {bool} optional - default `true`\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n\n<a id=\"simple-example\"></a>\n\n## Simple example\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {\n  reducerPath: ['users'],\n  remoteActions: {\n    fetchAll: () => {...}\n    fetchOne: () => {...}\n    create: () => {...}\n    update: () => {...}\n    delete: () => {...}\n  }\n}\n\nconst usersManager = createManager(config);\n```\n\n* [How configure remoteActions](docs/v1/remote-actions.md)\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst userManager = createManager({...});\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* createFromItem\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Internals actions\n\nInternal actions are used inside `defaults actions` , and you will never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n\n### Customs actions\n```js\nconst userManager = createManager({\n  customActions: (defaultActions, internalsActions) => ({\n    customFetchAll: () => (dispatch, getState) => {\n      dispatch(internalsActions.fetching());\n      fetch('http://...').then(items => {\n        dispatch(internalsActions.fetched(items));\n      });\n    }\n  })\n});\n```\n\n```js\ndispatch(userManager.actions.customFetchAll();\n```\n\n## Metadata\n\n```js\nimport { getMeta, isSyncing, isSynced, getChanges, syncingKeys } from 'redux-crud-manager';\n\nconst user = store.getState().users.find(...);\n\nif (getMeta(user).preCreated) {\n  // ...\n}\n``` \n\nmetadata are defined for a resource, and also for the list of resources:\n\n```js\nimport { getMeta } from 'redux-crud-manager';\n\nconst users = store.getState().users;\n\nif (getMeta(users).syncing) {\n  // show loader\n}\n``` \n\nmetadata item:\n```js\n{\n  preCreated: false,\n  creating: false,\n  preUpdated: false,\n  updating: false,\n  preDeleted: false,\n  deleting: false,\n  localId: null,\n  lastVersion: {},\n}\n```\n\nmetadata list items:\n```js\n{\n  fetching: false,\n  fetched: false,\n  creating: false,\n  updating: false,\n  deleting: false,\n}\n```\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.14","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-Nx99CnApe3UjnZgwgJhxmxmdcH3ozzAgq7CZaz9zhkmw701yGKgGcFsTH5U+L8p26kmtuuXCyq53vhDKpx4EOg==","shasum":"48f79534e1339cb5464794502355830b48c99f7d","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.14.tgz","fileCount":17,"unpackedSize":261019,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDJRlSgN+GJM70ZcRG2YhMDdtZURaGcPNCekJXwep/RCAiBtg/XfKawywn0xD0Yso6O0xp8AvPULUGOAmo49fECbxQ=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.14_1519915704825_0.33966552216644064"},"_hasShrinkwrap":false},"1.0.0-alpha.15":{"name":"redux-crud-manager","version":"1.0.0-alpha.15","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Simple Example](#simple-example)\n* [Configure remoteActions](docs/v1/remote-actions.md)\n* [Configure reducer](docs/v1/reducer.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {...};\nconst usersManager = createManager(config);\n```\n\n### Config object\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* `remoteActions`  {object} - required - async action for HTTP request\n\n* `customActions`  {object} - make possible to create your own actions\n\n\n* `idKey` {string} - optional - the key use as the unique identifier. Default: `id`\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true`\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `forceDelete` {bool} optional - default `true`\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n\n<a id=\"simple-example\"></a>\n\n## Simple example\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {\n  reducerPath: ['users'],\n  remoteActions: {\n    fetchAll: () => {...}\n    fetchOne: () => {...}\n    create: () => {...}\n    update: () => {...}\n    delete: () => {...}\n  }\n}\n\nconst usersManager = createManager(config);\n```\n\n* [How configure remoteActions](docs/v1/remote-actions.md)\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst userManager = createManager({...});\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* createFromItem\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Internals actions\n\nInternal actions are used inside `defaults actions` , and you will never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n\n### Customs actions\n```js\nconst userManager = createManager({\n  customActions: (defaultActions, internalsActions) => ({\n    customFetchAll: () => (dispatch, getState) => {\n      dispatch(internalsActions.fetching());\n      fetch('http://...').then(items => {\n        dispatch(internalsActions.fetched(items));\n      });\n    }\n  })\n});\n```\n\n```js\ndispatch(userManager.actions.customFetchAll();\n```\n\n## Metadata\n\n```js\nimport { getMeta, isSyncing, isSynced, getChanges, syncingKeys } from 'redux-crud-manager';\n\nconst user = store.getState().users.find(...);\n\nif (getMeta(user).preCreated) {\n  // ...\n}\n``` \n\nmetadata are defined for a resource, and also for the list of resources:\n\n```js\nimport { getMeta } from 'redux-crud-manager';\n\nconst users = store.getState().users;\n\nif (getMeta(users).syncing) {\n  // show loader\n}\n``` \n\nmetadata item:\n```js\n{\n  preCreated: false,\n  creating: false,\n  preUpdated: false,\n  updating: false,\n  preDeleted: false,\n  deleting: false,\n  localId: null,\n  lastVersion: {},\n}\n```\n\nmetadata list items:\n```js\n{\n  fetching: false,\n  fetched: false,\n  creating: false,\n  updating: false,\n  deleting: false,\n}\n```\n","readmeFilename":"README.md","gitHead":"cdb11cfd26ac4d0973c5c4d71b8ab0aaf4a86ed5","_id":"redux-crud-manager@1.0.0-alpha.15","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-KfmrJ4dLv/egGyH3E8UJol/wktYiGzA2H0DZcoO5z/gLNkIOkqCkEEA8JbT/GMCvA/y042lR1JpYCopkNRx0Ng==","shasum":"3add0c137c6a2db774039cc7571b37e4accdbc63","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.15.tgz","fileCount":17,"unpackedSize":264309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvaIxU189d65RK99CgpoDLF9ilzomiJYEjtrMwtVpThAIhAIZN0Cue+M2szas96wFs1s7EYWF/Grw9MrcMsP62DqIm"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.15_1519918059611_0.3517081349707052"},"_hasShrinkwrap":false},"1.0.0-alpha.16":{"name":"redux-crud-manager","version":"1.0.0-alpha.16","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"f3702302961ca562d25e5369f45c7aa3f3ef1399","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Simple Example](#simple-example)\n* [Configure remoteActions](docs/v1/remote-actions.md)\n* [Configure reducer](docs/v1/reducer.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {...};\nconst usersManager = createManager(config);\n```\n\n### Config object\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* `remoteActions`  {object} - required - async action for HTTP request\n\n* `customActions`  {object} - make possible to create your own actions\n\n\n* `idKey` {string} - optional - the key use as the unique identifier. Default: `id`\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true`\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `forceDelete` {bool} optional - default `true`\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n\n<a id=\"simple-example\"></a>\n\n## Simple example\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {\n  reducerPath: ['users'],\n  remoteActions: {\n    fetchAll: () => {...}\n    fetchOne: () => {...}\n    create: () => {...}\n    update: () => {...}\n    delete: () => {...}\n  }\n}\n\nconst usersManager = createManager(config);\n```\n\n* [How configure remoteActions](docs/v1/remote-actions.md)\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst userManager = createManager({...});\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* createFromItem\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Internals actions\n\nInternal actions are used inside `defaults actions` , and you will never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n\n### Customs actions\n```js\nconst userManager = createManager({\n  customActions: (defaultActions, internalsActions) => ({\n    customFetchAll: () => (dispatch, getState) => {\n      dispatch(internalsActions.fetching());\n      fetch('http://...').then(items => {\n        dispatch(internalsActions.fetched(items));\n      });\n    }\n  })\n});\n```\n\n```js\ndispatch(userManager.actions.customFetchAll();\n```\n\n## Metadata\n\n```js\nimport { getMeta, isSyncing, isSynced, getChanges, syncingKeys } from 'redux-crud-manager';\n\nconst user = store.getState().users.find(...);\n\nif (getMeta(user).preCreated) {\n  // ...\n}\n``` \n\nmetadata are defined for a resource, and also for the list of resources:\n\n```js\nimport { getMeta } from 'redux-crud-manager';\n\nconst users = store.getState().users;\n\nif (getMeta(users).syncing) {\n  // show loader\n}\n``` \n\nmetadata item:\n```js\n{\n  preCreated: false,\n  creating: false,\n  preUpdated: false,\n  updating: false,\n  preDeleted: false,\n  deleting: false,\n  localId: null,\n  lastVersion: {},\n}\n```\n\nmetadata list items:\n```js\n{\n  fetching: false,\n  fetched: false,\n  creating: false,\n  updating: false,\n  deleting: false,\n}\n```\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.16","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-4UqCYQ4kzFG3EGGUat+IfltctgbeErpp5j57xsOY9KGIx+NaL2mIBlocFm6TU4ufJVoEQAQW527oL+tQm8BPiQ==","shasum":"d31f51c45a37e5ed936acc99195741bacac4a0ca","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.16.tgz","fileCount":17,"unpackedSize":264796,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwUSVBYKvtTUQjskWa1SVuJqBcIFI2/bncotIGjPFVJwIhANGIZ9q0ScHI2Ow7CJvDQiWR4uWGueHfGrgmszcfgbRk"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.16_1520252788519_0.6850150230049248"},"_hasShrinkwrap":false},"1.0.0-alpha.17":{"name":"redux-crud-manager","version":"1.0.0-alpha.17","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* `remoteActions`  {object} - required - async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions`  {object} - make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `linkedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableLinkedManagers` {bool} optional - default `true` if `linkedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","gitHead":"c22417b159c2d210dacc29b3b3046ce7f4920a46","_id":"redux-crud-manager@1.0.0-alpha.17","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-SpGjUlzi9nDo3k1psy1MYj+FR8T+tNd/HImEb2gpQsw+VQU531bRRJsGIQD1eep9uWyXIEhvmsdAHgUeBvfWkQ==","shasum":"4968313049333abe86dc9f063ce603f0923a064e","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.17.tgz","fileCount":19,"unpackedSize":1492659,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAR3RethyWdJ3iFPhoA5SFF9W0dqes/fkFLyNZsH5wIIAiANt86fMWU3rVc9Hv/G3RjIJsM9UBiz2wUCsSWehIfIBQ=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.17_1520851942722_0.667779700776093"},"_hasShrinkwrap":false},"1.0.0-alpha.18":{"name":"redux-crud-manager","version":"1.0.0-alpha.18","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"b3d4fb4d803916986541315c196392614152206d","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n\n* `remoteActions`  {object} - required - async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions`  {object} - make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `linkedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableLinkedManagers` {bool} optional - default `true` if `linkedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.18","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-Mp4RgLzoJcfioB3DlbO9nOA+ml19BJu/xU7kOf1uo1qtnrztEvI38rUpFAc0RnPdbgJrMuO8ux3rOzjrGrsuUw==","shasum":"9dea6a446b687c597bbd49fe7b615afd59f99cc7","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.18.tgz","fileCount":19,"unpackedSize":1493348,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh/N5J9vcoxFy3g+d64hQaoIPJbxcMf5b2RRn8CZCqbQIhAJsoNx4k92vX/fzb25On0hp6i8puNUh8Q/bkVSU2UnEV"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.18_1520856664965_0.9260880814740846"},"_hasShrinkwrap":false},"1.0.0-alpha.19":{"name":"redux-crud-manager","version":"1.0.0-alpha.19","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"4666c49ed5791bb0a00ae96af97fa63721cc79d5","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n* `remoteActions`  {object} - DEPRECATED, use `actions` instead. async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions` {object} - See [actions](docs/v1//actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `linkedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableLinkedManagers` {bool} optional - default `true` if `linkedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.19","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-nRKiX8SgismPIC5pFB2s+QuggX624jNaot70pW7VFiLzuxd0TIWNOBHg8Nda9y6y/93JaRrd/ckzpREIGBA0cA==","shasum":"0f5e0d2649dbb47c80b2c65420db847b0d0c0b29","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.19.tgz","fileCount":20,"unpackedSize":1561778,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC2jEEsJu3+6eOk51LFwE3xJVTcQjmDT8jnHXBzgGx3DAiAhbyIWZ1NZgGNAhjThL1jb69TUEt47pe3RWlXvPREnhA=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.19_1521047334892_0.2546193118913851"},"_hasShrinkwrap":false},"1.0.0-alpha.20":{"name":"redux-crud-manager","version":"1.0.0-alpha.20","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"f6d7a8cf3491ca4157f989340c47ba459955840d","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n* `remoteActions`  {object} - DEPRECATED, use `actions` instead. async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions` {object} - See [actions](docs/v1//actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `bindedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableBindedManagers` {bool} optional - default `true` if `bindedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.20","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-sUBVRRsEv9H0ZsjiD3WrDevhSbhMyi2A9M5QqKtepczOmardW8AGJBrDdY1syreCct5QJvfcux41lMsemA78FQ==","shasum":"7639042661e2b14313f08d4595211695d7be5d87","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.20.tgz","fileCount":20,"unpackedSize":1562901,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsGrDqr+3QLe+s0AqfuRHH/52P6ffBLN11QB2Sv7X1igIhAJ2jb2CmqBMYvgXDC0LechZ1Oh+c2/1kma3fq+iByWaq"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.20_1521121128750_0.8532427246037106"},"_hasShrinkwrap":false},"1.0.0-alpha.21":{"name":"redux-crud-manager","version":"1.0.0-alpha.21","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"07ad74f32c3ddbac2adeaf6434a60b53e4698ba5","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n* `remoteActions`  {object} - DEPRECATED, use `actions` instead. async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions` {object} - See [actions](docs/v1//actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `bindedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableBindedManagers` {bool} optional - default `true` if `bindedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.21","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-MradRW99NDbp9AMsfPJt1J+uwzihiOKuc6MTu5TzxDEMx4eEW0zJrx+IjzUq29gjDjzg9+m/4eEBsxuOGZKhxw==","shasum":"e37fb61511ce6a9939164652a9fa727d7baae2be","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.21.tgz","fileCount":20,"unpackedSize":1564069,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFhh+Fu/uh5tSmLa+33xUfLrTFpkm0ACf+cKLi4sTV4gIhAO530CxBR2tz7XPicMTu5LdxFd2AZ6Eots/CPdiY0tKr"}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.21_1522435767284_0.07388184531030606"},"_hasShrinkwrap":false},"1.0.0-alpha.22":{"name":"redux-crud-manager","version":"1.0.0-alpha.22","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n* `remoteActions`  {object} - DEPRECATED, use `actions` instead. async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions` {object} - See [actions](docs/v1//actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `bindedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableBindedManagers` {bool} optional - default `true` if `bindedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","gitHead":"228fb2145efce7fad8478b3a84b2184057e5146d","_id":"redux-crud-manager@1.0.0-alpha.22","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-ByP51/Aj+aV5YEusRkmUOtWqIFTxujuTkhc2raWvlFaU1pTugFE7N1gKnloZHiZidnncWGZhbJLmSAvn7+BDWg==","shasum":"50a99ec571e859284cc32633eae369a33346d9cb","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.22.tgz","fileCount":20,"unpackedSize":1650389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa0fjiCRA9TVsSAnZWagAAWuwQAKTimLJMZbmwyFHE2666\n/ZAwvOFDapot6flMdjp/1+OmqybxH6aXnZMLxeluSUsPqXMFYMAQGMmy9VXJ\ntytRY9r5MTcxc+glrDNjdExBocT3paiZPkb2TwBWwZkSUsU8qRCFKxkStYHi\nsPG5Gjkj9ndKsSbKYjRe+JnUkMAB5I4Z29quj3b+rlDaKkZAOeWkEehEdV1I\n1rJlNUsQZGKAcfHXybESBeK/dgCjDoYerwdVH0sW1Qbh5b6Ge4ZTpEPK6UHs\nKM6Xh6vn6NRpu5A7Bd5vUeySp3ONJ10Ywj2Pof2t7Eq+8nyZ3VvMM23T5QfY\na2tESQXqUXjGVRZgtkRZtWcW18pou1Lz3XRgE7DDv32uksF7vBitTEFYLPTk\n/OXjZtXQhZWgyEm4PpaTahnGIKIAF12/fDIXqSLZzg6JSUAZHnQEJi0Hqlgw\nQb+TUeftEV8G2BFbnrlJMKQ41cy8eRVTQ069SgH9ACDda6AMHcr8zFz8yTSA\nGZC2l1zj3DJgZRWgUVtXP0LyTF6UUL/AbZobSPGU3mgiQLWYwDFyh/vOFpwe\nj24N0IEDlnsIyabRZ6t0ebMLJgaaz9NWN8YT9iQECoZjJzYl1BUlczKsQTrl\nRFFoF40ipMLU6ehDunfvWWTPUlrxUbm5bNTM0LMxdS5vix99FD7NtjMGUT39\n5++/\r\n=YekH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG669HUO6SeSUvBma112cM2sbgHnX51hzlK0aFWgmO6/AiAMxw8E6819vkXIbtxvOI0bYwzqgPkgDNPLoYuOqehi2w=="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.22_1523710177372_0.2995636346422561"},"_hasShrinkwrap":false},"1.0.0-alpha.23":{"name":"redux-crud-manager","version":"1.0.0-alpha.23","description":"Redux CRUD utilities for keep store sync with your server","main":"dist/ReduxCrudManager.js","files":["dist","src"],"scripts":{"build":"NODE_ENV=production webpack --env dev && webpack --env build","dev":"NODE_ENV=development webpack --progress --colors --watch --env dev","test":"mocha --compilers js:babel-core/register --colors ./test/*.spec.js","test:watch":"mocha --compilers js:babel-core/register --colors -w ./test/*.spec.js","prepare":"npm run build"},"devDependencies":{"babel-cli":"6.26.0","babel-core":"6.26.0","babel-eslint":"8.0.3","babel-loader":"7.1.2","babel-plugin-add-module-exports":"0.2.1","babel-plugin-transform-object-rest-spread":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.1.2","eslint":"4.13.1","eslint-config-airbnb-base":"12.1.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.8.0","immutability-helper":"2.6.2","lodash":"4.17.5","mocha":"4.0.1","pubsub-js":"1.5.8","uniqid":"4.1.1","webpack":"3.10.0","yargs":"10.0.3"},"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"keywords":["redux","redux-crud-manager"],"author":{"name":"Guillaume Jasmin"},"license":"MIT","bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","config":{"unsafe-perm":true},"gitHead":"bb0ac45f9932b23db8e371d8ac2efb08b3b91a31","readme":"Redux CRUD Manager - v1 alpha\n===================\n\n[v0.4 docs](docs/v0.4/README.md)\n\n## Keep your redux store synced with your server.\n\nRedux CRUD Manager provide a simple way to sync your redux store with your remote server.\nNo more need to write actions and reducer to update your store. \n\n* CRUD pattern\n* update local data and sync with remote server when you want\n* update local data only\n* metadata for pending action\n\nReudx Crud Manager do not include any library around redux, and do not provide any UI component. It only provide actions and reducer.\n\n## Documentation\n\n* [Configuration](#configuration)\n* [Remote actions](docs/v1/remote-actions.md)\n* [Reducers](docs/v1/reducer.md)\n* [Metadata](docs/v1/metadata.md)\n* [Custom actions](docs/v1/custom-actions.md)\n* [Linked managers](docs/v1/linked-managers.md)\n* [Events](docs/v1/events.md)\n* [Batch actions with redux-batchted-actions](https://gist.github.com/GuillaumeJasmin/3956fb03becdba50dc18ab9a721b9793)\n\n## Configuration\n\nInstall from npm registry\n```\nnpm install redux-crud-manager@next --save\n```\n\n<a id=\"configuration\"></a>\n\n```js\nimport { createManager } from 'redux-crud-manager';\n\nconst config = {};\nconst usersManager = createManager(config);\n```\n\n### Config\n\n\n* `reducerPath` {array[string]} - required - Most of time, there is a single item: the reducer name. But if you have nested reducer, define the full path.\n\n* `idKey` {string} - optional - default `id`. The key used as the unique identifier.\n\n* `remoteActions`  {object} - DEPRECATED, use `actions` instead. async action for HTTP request. See [how to configure remoteActions](docs/v1/remote-actions.md)\n\n\n* `customActions` {object} - DEPRECATED, use `actions` instead. make possible to create your own actions. See [customs actions](docs/v1//custom-actions.md)\n\n\n* `actions` {object} - See [actions](docs/v1//actions.md)\n\n\n* `cache` {bool | function} - enable cache if resources are already fetched. Default: `false`\nYou can pass a function to customise the check:\n```js\n{\n    cache: (existingItems) => existingItems[0] && existingItems[0].bookId === someBookId\n}\n```\n\n\n* `merge` {bool} optional - default `true` - merge item property on update()\n\n\n* `deepMerge` {array} optional - List of properties wich need a deep merge. Currently only available for 1 depth\n\n\n* `replace` {bool} optional - default `true` . Use on fetch. If it's `true`, the previous list will be replace. if `false`, new items will be added to previous.\n\n\n* `remote` {bool} optional - default: `false` - save your change in your server, with remoteActions\n\n\n* `prefixLocalId` {string} - optional\n\n\n* `showUpdatingProgress` {bool} optional - default `true` . `syncing` will be set to `true`\n\n\n* `updateLocalBeforeRemote` {bool} optional - default `false`. Properties will be updated locally before the server response. Ignored if `showUpdatingProgress` is false\n\n\n* `includeProperties` {array[string]} optional - include property on save.\n\n\n* `excludeProperties` {array[string]} optional - include property on save. Ignored if `includeProperties` is defined\n\n\n* `bindedManagers` {array} optional - default `null`. [See example](docs/v1/linked-managers.md)\n\n\n* `enableBindedManagers` {bool} optional - default `true` if `bindedManagers` is not null \n\n\n* `batchDispatch` {function} optional - default `(dispatch, actions) => actions.map(action => dispatch(action))`\n\n\n* `params` {object} optional - custom params used to pass arbitrary data. Use it as you want. [See example](docs/v1/remote-actions.md#custom-params)\n\n\n## Actions\nCreate, update and delete\n\n```js\nimport { createManager } from 'redux-crud-manager';\nconst config = {};\nconst userManager = createManager(config);\n\ndispatch(userManager.actions.fetchAll());\n\ndispatch(userManager.actions.fetchOne(userId));\n\ndispatch(userManager.actions.create(data, { remote: true }));\n\ndispatch(userManager.actions.update(data, { remote: true }));\n\ndispatch(userManager.actions.delete(data, { remote: true }));\n```\n\nNote: `data` can be an object or an array\n\nIf you don't want to make a remote request but only use local change, set `remote: false`\n\n### PreCreate, preUpdate, preDelete\n\nYou can create update and delete data locally and then save on remote.\nIts usefull when you want to do many changes and save after.\n\n```js\ndispatch(userManager.actions.preCreate(user));\n// or\ndispatch(userManager.actions.preUpdate(user));\n// or\ndispatch(userManager.actions.preDelete(user));\n\n// ...\n\n// this will save changes on remote, like actions.create(data, { remote: true })\ndispatch(userManager.actions.sync());\n\n```\n\n### Defaults actions\n* fetchAll\n* fetchOne\n* preCreate\n* create\n* preUpdate\n* update\n* preDelete\n* delete\n* sync\n* clear\n* clearChanges\n\n### Base actions\n\nBase actions are used inside `defaults actions` , and you may never have to use them. But if you need to create custom actions, you can use it.\n\n* fetching\n* fetched\n* creating\n* created\n* updating\n* updated\n* deleting\n* deleted\n","readmeFilename":"README.md","_id":"redux-crud-manager@1.0.0-alpha.23","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"},"dist":{"integrity":"sha512-FE9n9RJ0zxEYzGwjNHv4vnaniusLjAmhYIqk7FYt0l+8RuRaZz/EufKeka9ybWeyZFbJORE8PEzNmag4nRBL+g==","shasum":"f0487e01c787cebd298ac9af697147bb9f0f4cd4","tarball":"https://registry.npmjs.org/redux-crud-manager/-/redux-crud-manager-1.0.0-alpha.23.tgz","fileCount":20,"unpackedSize":1651781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa30kzCRA9TVsSAnZWagAAVIUP/3mMh50fSydKVBjZTkAS\ncDgQAfls2c3I4mcbScn/NJSyClqEWqWQ3dquFoovt9Ya8T6+sAgmQdqj7V5q\ntBNu2FPOzPZAtopsq+FCtd+4EWoJRjrbMOjy7xuYwuFve7UsAYHUc5IY0xB6\nfZxTSmFLF/8WW/34nqO9yackt753cCnyxyj8pOgX69cNnuX8/rRN4DFy4rR4\nrw6Y3lNMrXksY1XqFGWU7Qfs4A96AzaQcWgr3/MohcBSW6CdhbmU+5ASKqCm\nN7Hza6b6YlSoZaUVMNg61bDWd5R6QpCNreZWKTG4ziZoPDYB9M8nzdK1VUYh\nkWhu567kRLy0rEwNf8rN7ZODYSNGh64p782eC6JyKwtmbiYoh8ev1u7Rb/Uo\nCBaPaLZRd1OqOUo0BJyKBPI0IOPB5AjUoVjjx6xuTu6xbBqGEb8828F9gWfp\nVu4m9gLcSZtb+JRcRXl2WSV2EOkI7JiiKzlLELknLGyCtKwt0Px6LonCY3XD\njBtLT1/Vy7eVT7p7zFYMEuUNU7R5i7KHqqdRY/M1bSEt/OsMV2UluDpOXIrg\nVkLSjV4hU2Ogemw44wVTAovjIsHii7OKI6lZju/+xOYmCw/qNV6lIa8wN4Ww\nYm5Jf+rcvjej/EQNes+uf+YLLAbQVGDoyO25W2eYW3pwezIfjp6MM6SVV3VE\n+6qg\r\n=focK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDH95b7Exonbuta8Z8MQQYgG3OFwBUcodyiuzVFun4kgIgYx+STqp1l9ne40TIvQDuUh2gwxUkXx5ItV2JnAGrUXs="}]},"maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-crud-manager_1.0.0-alpha.23_1524582706780_0.3718222498033583"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"name":"guillaumejasmin","email":"npm@guillaumejasmin.com"}],"time":{"modified":"2022-05-15T15:03:00.123Z","created":"2018-01-02T02:06:54.090Z","0.1.0":"2018-01-02T02:06:54.090Z","0.1.1":"2018-01-02T02:16:25.106Z","0.2.0":"2018-01-05T00:02:12.286Z","0.3.0":"2018-01-05T10:59:09.665Z","0.4.0":"2018-01-08T13:53:54.125Z","0.4.1":"2018-01-08T14:17:28.762Z","0.4.2":"2018-01-08T14:25:27.787Z","0.4.3":"2018-01-08T15:02:31.792Z","0.4.4":"2018-01-08T15:08:33.857Z","1.0.0-alpha.1":"2018-01-15T02:14:59.078Z","1.0.0-alpha.2":"2018-01-15T12:00:30.328Z","1.0.0-alpha.3":"2018-01-18T11:12:06.093Z","1.0.0-alpha.4":"2018-01-19T16:20:10.293Z","1.0.0-alpha.5":"2018-01-25T10:50:52.616Z","1.0.0-alpha.6":"2018-01-29T19:16:19.809Z","1.0.0-alpha.7":"2018-01-30T11:46:50.846Z","1.0.0-alpha.8":"2018-01-31T11:23:16.030Z","1.0.0-alpha.9":"2018-02-01T11:36:58.006Z","1.0.0-alpha.10":"2018-02-13T16:43:17.423Z","0.4.5":"2018-02-13T16:51:41.759Z","1.0.0-alpha.11":"2018-02-13T16:55:42.173Z","1.0.0-alpha.12":"2018-02-13T18:09:48.330Z","1.0.0-alpha.13":"2018-03-01T11:59:13.231Z","1.0.0-alpha.14":"2018-03-01T14:48:24.998Z","1.0.0-alpha.15":"2018-03-01T15:27:39.687Z","1.0.0-alpha.16":"2018-03-05T12:26:28.775Z","1.0.0-alpha.17":"2018-03-12T10:52:22.779Z","1.0.0-alpha.18":"2018-03-12T12:11:05.187Z","1.0.0-alpha.19":"2018-03-14T17:08:54.978Z","1.0.0-alpha.20":"2018-03-15T13:38:48.854Z","1.0.0-alpha.21":"2018-03-30T18:49:27.401Z","1.0.0-alpha.22":"2018-04-14T12:49:37.603Z","1.0.0-alpha.23":"2018-04-24T15:11:46.928Z"},"homepage":"https://github.com/guillaumejasmin/redux-crud-manager","keywords":["redux","redux-crud-manager"],"repository":{"type":"git","url":"git+https://github.com/guillaumejasmin/redux-crud-manager.git"},"author":{"name":"Guillaume Jasmin"},"bugs":{"url":"https://github.com/guillaumejasmin/redux-crud-manager/issues"},"license":"MIT","readmeFilename":""}