{"_id":"redux-optimistic-ui","_rev":"19-3639909704606d3f2b60cdbb183c3132","name":"redux-optimistic-ui","description":"a reducer enhancer to enable type-agnostic optimistic updates","dist-tags":{"latest":"3.1.0"},"versions":{"0.1.0":{"name":"redux-optimistic-ui","version":"0.1.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./src/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"b12b3a8c62c9439be2871ae8573c42814ee9b079","_id":"redux-optimistic-ui@0.1.0","_shasum":"ca4a9e43e602cfa58c8530db8b86b12712f1164a","_from":".","_npmVersion":"3.5.2","_nodeVersion":"5.2.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"ca4a9e43e602cfa58c8530db8b86b12712f1164a","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.1.0.tgz","integrity":"sha512-4KeJw8P+QeOuXmMnHXVu2nbuVD5NFxQO38R8x+6LWwz7J+17AIMsmFZhnVmgrDVMjTQRm+i0+vTgqh7lm/KmJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMV760uPu+ftk1AxxTKTX3nrDGbvi3yhs5DvNUTF+BeQIgBXLwaVGIAue3wBqwh3PmCbWSh9THgQ1oGbTkhg/IDsg="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}]},"0.1.1":{"name":"redux-optimistic-ui","version":"0.1.1","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"91459e8e2edfc7a5377cd3b550f49fe4fd68223e","_id":"redux-optimistic-ui@0.1.1","_shasum":"884c0a2e8ec6e452c5f3f92234eb9457fa2effd2","_from":".","_npmVersion":"3.5.2","_nodeVersion":"5.2.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"884c0a2e8ec6e452c5f3f92234eb9457fa2effd2","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.1.1.tgz","integrity":"sha512-lQoE+DVE6gG5Hcg7O1HN59mt4AGizQIC72l/kSImi1k7g2wMflo+wbaumvqoNRhucoGxBo+VgDM9HPvRGHoMJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEl+CjWeESM86ESYnFaVbnrMSrcld121fxnP0umT/GoyAiEA0e1c+5p11ZsPRuDXw3az2cHXujkVveugBgcaKmL0rmc="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}]},"0.2.0":{"name":"redux-optimistic-ui","version":"0.2.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"b5052c555c6b0d164ca0d0e6702ea8c47d6e3bb4","_id":"redux-optimistic-ui@0.2.0","_shasum":"fefd3d385cbe9b38f5b797d75f6d18d78d9a51db","_from":".","_npmVersion":"3.5.2","_nodeVersion":"5.2.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"fefd3d385cbe9b38f5b797d75f6d18d78d9a51db","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.2.0.tgz","integrity":"sha512-f5c3c67T+znlJ4jvK+f6+LEUcL8MRlxwlw0zlARKfO8bm4JZyNYgrJmnd32q6jTCwt3vRPomzkZTq6n7mBQcqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUNY6R1BxTTxvCpXsGODCHyiYPhGn5lfX/mgCVgMH7DQIgREBOcQuELfgiGeVQ0zHV/K1SV7gys9d9DuOv4LhFQQ8="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}]},"0.3.0":{"name":"redux-optimistic-ui","version":"0.3.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"4e8ecd4df274b70ec0659509aa17f56094f9b0bd","_id":"redux-optimistic-ui@0.3.0","_shasum":"7049ecc64b520db8cd0e6605f2d1733170835235","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.4.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"7049ecc64b520db8cd0e6605f2d1733170835235","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.3.0.tgz","integrity":"sha512-HLuU6Vfh9Rsmomu7cGzzjqZguO044bW6xKeMuq9QKb66Pdyf3C9oir3Auexy956qKKvIhkzyzuTdVzjKWv5kAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2DLhFW7yzbhhM5VR64/WxR5LYmaMEsxMh1eKVhzaSLwIhAL+vGvuFVMCIpKZtsbOflzRwaCm2Kq0LJ5LrCFJ7OMCB"}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}]},"0.3.1":{"name":"redux-optimistic-ui","version":"0.3.1","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"1932049b434e5c8bc8aedc9bfa9e84768197b6cb","_id":"redux-optimistic-ui@0.3.1","_shasum":"c86db26aa6273cb0a0f1dbaaac2a5363c7859674","_from":".","_npmVersion":"2.14.12","_nodeVersion":"5.4.1","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"c86db26aa6273cb0a0f1dbaaac2a5363c7859674","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.3.1.tgz","integrity":"sha512-jeMPJ4aLfm+7BVC0QNvYANOtDyKF/Ty7i4hAl5gZkLIWj7s92ahztKDuld9nweI8OL5/GQ0qmbHG+aubG+8Y6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIEgNmeYxR7fEgPS7m8O0wNAEYEhguEu1qM8IPwTgSKasAh9TUHhQlms4yTuwsLUW71pWd7Hk5MGYoDpJJ53Z/7YM"}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}]},"0.3.2":{"name":"redux-optimistic-ui","version":"0.3.2","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"babel-cli":"^6.4.5","babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"f93289206d74d49caeddb70fec843113e64ba56d","_id":"redux-optimistic-ui@0.3.2","_shasum":"fda18db05a3356cbbc044c63c0411b7836c7a9c1","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.4.1","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"fda18db05a3356cbbc044c63c0411b7836c7a9c1","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.3.2.tgz","integrity":"sha512-5Nog+u1a1w30YnJ6k8H575nHsq2pVE2A1b2r2vX8bbyb/1xjfOU1LNpFodTirfrNhA+AtbKM+f2laEPXl7y4qA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB/SUE53Zr412EoJ0MDkpaYYKaYxk70lLnMyDq/dYWSXAiAmtIVfTZqI/q3hiOMODOA5oNqzpZKfPtzFkgo7Q8yXRw=="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/redux-optimistic-ui-0.3.2.tgz_1454720758383_0.7068065833300352"}},"0.4.0":{"name":"redux-optimistic-ui","version":"0.4.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.7.6"},"devDependencies":{"ava":"^0.13.0","babel-cli":"^6.4.5","babel-preset-es2015":"^6.3.13","babel-preset-stage-0":"^6.3.13","babel-register":"^6.3.13"},"gitHead":"778e5ec0c85502553033d233de1c3fc43632b63f","_id":"redux-optimistic-ui@0.4.0","_shasum":"8fdb23c9482797aacb5ccc5e8ed415ceeb9a1a0e","_from":".","_npmVersion":"3.7.3","_nodeVersion":"5.9.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"8fdb23c9482797aacb5ccc5e8ed415ceeb9a1a0e","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.4.0.tgz","integrity":"sha512-/z0KfnqCzem1WgkpN7Ze+yaos4LicsoFw+3qO3if+EjBJ8CTsWgeEoz/LGMRyBfeoWF7BxZr/m1Yb2ktA+GwNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrtWu6+F89x1ZHm3tIBcq1+Xpsv+H5p8g4eCgmYxHI8AiEAuncm74jvlKDz7zaauNFPB1qQMKm/hwfztfZyBwUBt+U="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/redux-optimistic-ui-0.4.0.tgz_1458623911760_0.6644929985050112"}},"0.4.1":{"name":"redux-optimistic-ui","version":"0.4.1","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"nyc ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.8.1"},"devDependencies":{"ava":"^0.15.2","babel-cli":"^6.10.1","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","coveralls":"^2.11.9","nyc":"^6.6.1","rimraf":"^2.5.3"},"gitHead":"e443f0900ceaede36691d799efc6dfd12b048c86","_id":"redux-optimistic-ui@0.4.1","_shasum":"bdfa0ca0626fd1c977abba1b310de059a954c226","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"bdfa0ca0626fd1c977abba1b310de059a954c226","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.4.1.tgz","integrity":"sha512-bf2BOHF1L9UJBziLJQvEm4hS8ad9FQ/dNO9MVreqYbEusmUVhvuiVCpGYw4S+1W9F3PKOPyVIXOGy00b0kvxvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRE8dZa6BdmfXw9GdlenUrLNnWtydUmCYiviek4Yg9AAiAw6jxxdcTxZ/OVXQLUUwxnvMg/Vap78HJ8qIidr11LHw=="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/redux-optimistic-ui-0.4.1.tgz_1471475880151_0.4217488302383572"}},"0.5.0":{"name":"redux-optimistic-ui","version":"0.5.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"nyc ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.8.1"},"devDependencies":{"ava":"^0.15.2","babel-cli":"^6.10.1","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","coveralls":"^2.11.9","nyc":"^6.6.1","redux":"^3.6.0","rimraf":"^2.5.3"},"gitHead":"85b5947692b0216932c064b2dcf3be415756e8a2","_id":"redux-optimistic-ui@0.5.0","_shasum":"f6b4512262356d6592037e37aba9ceefcd9876e4","_from":".","_npmVersion":"3.10.8","_nodeVersion":"7.0.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"f6b4512262356d6592037e37aba9ceefcd9876e4","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-0.5.0.tgz","integrity":"sha512-EMsNqgrec5KY9XxiE2tMPqCGc10Chh06drezbC3HSiKV027Asz+1f7s4dc+PTB5J3rMw6nyZ/BKTcJFCcFOuKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv6UK+sUSdrM9MVQlsEfEGkat4nygg0aK/cxLBtILO9AIgYpRIshZ4RTF8e2lkcBVav8TI9LCgRTjbp2lPqBrUfqY="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/redux-optimistic-ui-0.5.0.tgz_1481922137235_0.5243279763963073"}},"1.0.0":{"name":"redux-optimistic-ui","version":"1.0.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"nyc ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.8.1"},"devDependencies":{"ava":"^0.18.1","babel-cli":"^6.10.1","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","coveralls":"^2.11.9","nyc":"^6.6.1","redux":"^3.6.0","rimraf":"^2.5.3"},"gitHead":"6868145934031b4bbe2530e805520624c4fea375","_id":"redux-optimistic-ui@1.0.0","_shasum":"caccbe48837614b92a056459da2a927751df85fe","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"shasum":"caccbe48837614b92a056459da2a927751df85fe","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-1.0.0.tgz","integrity":"sha512-ZLAcnkP3v3JdaOJbyHQrWZ+BysUAAh8Cz0tMnpeVUwTWpo5d01WQtGJFOfNonKNyPmwAZRiFXKeij5lqQkQyLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCuQ4g5r87g0cj+EpAuALkGxn1PhGJ8JjnQ1ITil38CwIhANSqNKdJw1OUJAFE7g1YzAJL+YQZwJ/rWUzTu4XOnQiK"}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/redux-optimistic-ui-1.0.0.tgz_1487300580498_0.24436407117173076"}},"2.0.0":{"name":"redux-optimistic-ui","version":"2.0.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"nyc ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{"immutable":"^3.8.1"},"devDependencies":{"ava":"^0.18.1","babel-cli":"^6.10.1","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","coveralls":"^2.11.9","nyc":"^6.6.1","redux":"^3.6.0","rimraf":"^2.5.3"},"gitHead":"91b0dea12c9d056c19ebc021f45d377f8f08ff26","_id":"redux-optimistic-ui@2.0.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"integrity":"sha512-/md+qKy8/ST/6MT2nPDX9C3s6OJIIrN9fhT/69zmC3D3a0zhiyZ6q59ktXZtICmpgfUBoj0e8/CmXptOTUv2QA==","shasum":"7d5377d24c374c6d202be09a730c7d26f396af55","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeSxq+HWocMbbdbL4sEkUGvKRc+nWMxFQN4Tca8brcFgIhAN3J7OamZq5hqQ7wb2S9bQyH1V3b9wu7WaPSHJgk8/DM"}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-optimistic-ui-2.0.0.tgz_1498226133587_0.6820308682508767"}},"3.0.0":{"name":"redux-optimistic-ui","version":"3.0.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","prepublish":"npm run clean && npm run build","test":"cross-env NODE_ENV=test nyc ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{},"devDependencies":{"ava":"^0.18.1","babel-cli":"^6.10.1","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","coveralls":"^2.11.9","cross-env":"^5.0.1","immutable":"^3.8.1","nyc":"^6.6.1","redux":"^3.6.0","redux-devtools-instrument":"^1.8.2","rimraf":"^2.5.3"},"nyc":{"require":["babel-register"],"sourceMap":false,"instrument":false,"reporter":["lcov","text"]},"gitHead":"7dedce6dd0605074f07cfa96fd1f7ab91cfb8b90","_id":"redux-optimistic-ui@3.0.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"integrity":"sha512-pKi792bO00niKiPJDOzGrOQnyBD+25dUhAtAK9nemtS/UluPf7ros9kJj0En3zk6L7AlL5ZiUCvItdhDYz3s/w==","shasum":"ecac3dd4b5c4a30972d91fe20937b387b6cf1ce2","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-3.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHh4wCJYl9yPibxRcLRlZw323M0guytnzA3RLv4fADEQAiEArxVy9U61ywTwTJ0feLcCsP0U8BDMg8nVQDb8EfsmXjQ="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-optimistic-ui-3.0.0.tgz_1501731229925_0.4493314791470766"}},"3.1.0":{"name":"redux-optimistic-ui","version":"3.1.0","description":"a reducer enhancer to enable type-agnostic optimistic updates","main":"./lib/index.js","scripts":{"clean":"rimraf lib dist","lint":"xo src/index.js --esnext --space --fix","build":"babel --presets es2015,stage-0 -d lib/ src/","build-dist":"mkdir -p dist && browserify lib/index.js -s ReduxOptimisticUI -o dist/redux-optimistic-ui.js && uglifyjs dist/redux-optimistic-ui.js -m -c -o dist/redux-optimistic-ui.min.js","prepare":"npm run clean && npm run build && npm run build-dist","test":"cross-env NODE_ENV=test nyc ava __tests__/**/*.js","watch":"babel -w --presets es2015,stage-0 -d lib/ src/"},"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","dependencies":{},"devDependencies":{"ava":"^0.18.1","babel-cli":"^6.10.1","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","browserify":"^14.4.0","coveralls":"^2.11.9","cross-env":"^5.0.1","immutable":"^3.8.1","nyc":"^6.6.1","redux":"^3.6.0","redux-devtools-instrument":"^1.8.2","rimraf":"^2.5.3","uglify-js":"^3.0.28"},"nyc":{"require":["babel-register"],"sourceMap":false,"instrument":false,"reporter":["lcov","text"]},"gitHead":"bb16f814f918ea4aacc13540734041efd12aa064","_id":"redux-optimistic-ui@3.1.0","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"mattkrick","email":"matt.krick@gmail.com"},"dist":{"integrity":"sha512-TYYre7+3GUKhQvzRInzJfP4sRnH6G8N7QtDoEnTMTifAkUg7iP3EtqDaKvYHBfP+dnny5c81IsLzqtbCDw6c0A==","shasum":"efd07bb8483185db221b50f3d0ea42ce93b12d6d","tarball":"https://registry.npmjs.org/redux-optimistic-ui/-/redux-optimistic-ui-3.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgFZ23+zvVMnJBDnXgoKOrep+lyEeA6QcMh7FoeXzCYgIgZ0vEUWF7C2m+iS9FyP0FeT9m4ZLtzbZ/3k5g+luiHH0="}]},"maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-optimistic-ui-3.1.0.tgz_1504223708294_0.5386558356694877"}}},"readme":"[![npm version](https://badge.fury.io/js/redux-optimistic-ui.svg)](https://badge.fury.io/js/redux-optimistic-ui)\n[![Build Status](https://travis-ci.org/mattkrick/redux-optimistic-ui.svg?branch=master)](https://travis-ci.org/mattkrick/redux-optimistic-ui)\n[![Coverage Status](https://coveralls.io/repos/github/mattkrick/redux-optimistic-ui/badge.svg?branch=master)](https://coveralls.io/github/mattkrick/redux-optimistic-ui?branch=master)\n\n# redux-optimistic-ui\na reducer enhancer to enable type-agnostic optimistic updates\n\n## Installation\n`yarn add redux-optimistic-ui`\n\n## A what-now?\nA reducer enhance is a function you put around a reducer.\nIt can be your rootReducer (the output from a `combineReducers`) or a nested one.\nOptimistic-UI means you update what the client sees before the result comes back from the server.\nThis makes your app feel super fast, regardless of server location or internet connection speed.\n\n## How's it different from redux-optimist?\n\n| redux-optimistic-ui                                    | redux-optimist                                                    |\n|--------------------------------------------------------|-------------------------------------------------------------------|\n| reducerEnhancer (wraps your state)                     | reducerExtender (adds an optimist to your state)                  |\n| can use immutable.js or anything else                  | must use plain JS objects for your state                          |\n| only uses 1 state copy                                 | saves an extra copy of your state for every new optimistic action |\n| FSA compliant                                          | not FSA compliant                                                 |\n| must wrap your state calls in `ensureState`            | no change necessary to get your state                             |\n\n## Usage\n\n### Feed it your reducer\n\n```js\nimport {optimistic} from 'redux-optimistic-ui';\nreturn optimistic(reducer);\n```\n\nThis will transform your state so it looks like this:\n\n```js\nstate = {\n  history: [],\n  beforeState: <YOUR PREVIOUS STATE HERE>\n  current: <YOUR STATE HERE>\n}\n```\nIf the client is not waiting for a response from the server, the following are guaranteed to be true:\n- `state.history.length === 0`\n- `state.beforeState === undefined`\n\nIf you don't need to know if there is an outstanding fetch, you'll never need to use these.\n\n### Update your references to `state`\n\nSince your state is now wrapped, you need `state.current`.\nBut that sucks. What if you don't enhance the state until the user hits a certain route?\nLucky you! There's a function for that. `ensureState` will give you your state whether it's enhanced or not.\nJust wrap all your references to `state` and `getState` with it & you're all set!\n\n```js\n// Before\ngetState().counter\n\n// After (whether you've enhanced your reducer or not)\nimport {ensureState} from 'redux-optimistic-ui'\nensureState(getState()).counter\n```\n\n### Write some middleware\n\nNow comes the fun! Not all of your actions should be optimistic.\nJust the ones that fetch something from a server *and have a high probability of success*.\nI like real-world examples, so this middleware is a little bit longer than the bare requirements:\n\n```js\nimport {BEGIN, COMMIT, REVERT} from 'redux-optimistic-ui';\n\n//All my redux action types that are optimistic have the following suffixes, yours may vary\nconst _SUCCESS = '_SUCCESS';\nconst _ERROR = '_ERROR';\n\n//Each optimistic item will need a transaction Id to internally match the BEGIN to the COMMIT/REVERT\nlet nextTransactionID = 0;\n\n// That crazy redux middleware that's 3 functions deep!\nexport default store => next => action => {\n  // FSA compliant\n  const {type, meta, payload} = action;\n\n  // For actions that have a high probability of failing, I don't set the flag\n  if (!meta || !meta.isOptimistic) return next(action);\n\n  // Now that we know we're optimistically updating the item, give it an ID\n  let transactionID = nextTransactionID++;\n\n  // Extend the action.meta to let it know we're beginning an optimistic update\n  next(Object.assign({}, action, {meta: {optimistic: {type: BEGIN, id: transactionID}}}));\n\n  // HTTP is boring, I like sending data over sockets, the 3rd arg is a callback\n  socket.emit(type, payload, error => {\n    // Create a redux action based on the result of the callback\n    next({\n      type: type + (error ? _ERROR : _SUCCESS),\n      error,\n      payload,\n      meta: {\n        //Here's the magic: if there was an error, revert the state, otherwise, commit it\n        optimistic: error ? {type: REVERT, id: transactionID} : {type: COMMIT, id: transactionID}\n      }\n    });\n  })\n};\n```\n\n## Pro tips\nNot using an optimistic-ui until a certain route? Using something like `redux-undo` in other parts? Write a little something like this and call it on your asychronous route:\n\n```js\nexport default (newReducers, reducerEnhancers) => {\n  Object.assign(currentReducers, newReducers);\n  const reducer = combineReducers({...currentReducers})\n  if (reducerEnhancers){\n    return Array.isArray(reducerEnhancers) ? compose(...reducerEnhancers)(reducer) : reducerEnhancers(reducer);\n  }\n  return reducer;\n}\n```\nNow you get an enhanced reducer only where you want it. Neat.\n\nTo see how it all comes together, check out https://github.com/mattkrick/meatier.\n","maintainers":[{"name":"mattkrick","email":"matt.krick@gmail.com"}],"time":{"modified":"2022-06-26T10:18:03.520Z","created":"2016-01-08T00:48:27.769Z","0.1.0":"2016-01-08T00:48:27.769Z","0.1.1":"2016-01-08T01:25:58.404Z","0.2.0":"2016-01-08T03:09:31.478Z","0.3.0":"2016-01-10T21:31:56.289Z","0.3.1":"2016-01-22T21:23:11.529Z","0.3.2":"2016-02-06T01:05:59.496Z","0.4.0":"2016-03-22T05:18:34.340Z","0.4.1":"2016-08-17T23:18:02.129Z","0.5.0":"2016-12-16T21:02:19.038Z","1.0.0":"2017-02-17T03:03:00.721Z","2.0.0":"2017-06-23T13:55:33.698Z","3.0.0":"2017-08-03T03:33:50.045Z","3.1.0":"2017-08-31T23:55:08.368Z"},"homepage":"https://github.com/mattkrick/redux-optimistic-ui#readme","keywords":["redux","optimistic","latency-compensation","optimistic-ui"],"repository":{"type":"git","url":"git+https://github.com/mattkrick/redux-optimistic-ui.git"},"author":{"name":"Matt Krick","email":"matt.krick@gmail.com"},"bugs":{"url":"https://github.com/mattkrick/redux-optimistic-ui/issues"},"license":"MIT","readmeFilename":"README.md","users":{"ohcoder":true,"nisimjoseph":true,"rahulraghavankklm":true}}