{"_id":"redux-hammock","_rev":"26-9cf2c6e706b36b59079bd189a0faa9f1","name":"redux-hammock","description":"A library for simplyfing the use of redux-thunk with REST APIs","dist-tags":{"beta":"0.2.0","latest":"0.3.3"},"versions":{"0.0.1":{"name":"redux-hammock","version":"0.0.1","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"src/hammock.js","repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","lodash":"^4.17.4","ramda":"^0.24.1","redux-actions":"^2.0.3"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","eslint-plugin-flowtype":"^2.34.0","flow-bin":"^0.47.0","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"988a8002647190f2f13319462aff790ddd176c94","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.1","_shasum":"800896aa9c48584a97c799f34a25ea9ba5a929a8","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"800896aa9c48584a97c799f34a25ea9ba5a929a8","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.1.tgz","integrity":"sha512-70qPMLRBifL05L1sivP5PiwLgcvnLuSADZ+tQi9Ee17uaECzFt99QyMTnd3wv1LB1/vBw0jJ0/9JZHD4guf7Kw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBba36TtWr5WFkwGmgL8gway+tzqX89spuTVlVsls2kAiEAvHHohSxJLPAIfrm0eUmkAZEI2AykP8BUjKxCVak9M/U="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.1.tgz_1497975866941_0.16116600460372865"},"directories":{}},"0.0.2":{"name":"redux-hammock","version":"0.0.2","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"dist/hammock.js","repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","lodash":"^4.17.4","ramda":"^0.24.1","redux-actions":"^2.0.3"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","eslint-plugin-flowtype":"^2.34.0","flow-bin":"^0.47.0","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"b9026a24283223f60bd1eaa6b9e04c13f942c0fd","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.2","_shasum":"415680f649152b649fe0dff0a0312e16e2cfc164","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"415680f649152b649fe0dff0a0312e16e2cfc164","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.2.tgz","integrity":"sha512-6ZEZIY2jW3I/+xZOGyL/9ZIDZuqnix5MwCJx/HdKOCeMQYTfBNC2z1rtlEV47K8k63v6E8GdUAMdIrTCkoI8iA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDb05fPWIA5lt0BEkiBn47QNqwyERrg7q0EK2tcpbAckgIhAKrF0kfQh9KsW07UKj942Y6HKsl8e/QHuF9uWd5tyVly"}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.2.tgz_1497976309493_0.7753181513398886"},"directories":{}},"0.0.3":{"name":"redux-hammock","version":"0.0.3","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"dist/hammock.js","repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","isomorphic-fetch":"^2.2.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"c68d4057816d77ce76ea70ae64eace3af649e5f9","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.3","_shasum":"1db8f5519b36460e71921b07b846067f116a33be","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"1db8f5519b36460e71921b07b846067f116a33be","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.3.tgz","integrity":"sha512-0PIvyc/eybVlQ6XH/u8LrlLmeRLGdfUyUpTG1yTeVW51/WOfJSlgeqwNmUVUbexEeiKHG/Cw2HgodwxWddEIyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGe5G5Pyc3ZOTB0uYkbF7IBIVBgAPCnIi6NtRxwRTrjDAiBwehHwST1cmq8/JZH7KCLOvXS6mZSQ+VmzKY6rN78bwQ=="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.3.tgz_1498233859691_0.8508346392773092"},"directories":{}},"0.0.4":{"name":"redux-hammock","version":"0.0.4","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"dist/hammock.js","files":["dist"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","isomorphic-fetch":"^2.2.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"25240b1d15646f4c34416a9726a7c75555d4ad25","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.4","_shasum":"2a409e1d171c8d78bdae191796b9b921e9776462","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"2a409e1d171c8d78bdae191796b9b921e9776462","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.4.tgz","integrity":"sha512-z4w1Rt6umDgRvBc6j0JezENt7JmkVnMdi9fgLORvA5VkqF08Z4rF6DQsPuKWT6k4kIPPTaXZ5s4qdt39rMk2iw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzDoGTxfH0xz8KcfYO+iYy/Rm2lNl1Pk/l5Eec1oJW/AIgRzIR7wglOKneRX7ljMeQnQhkQxSRd+UtVQPBx5u7B70="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.4.tgz_1498235620300_0.5319423212204129"},"directories":{}},"0.0.5":{"name":"redux-hammock","version":"0.0.5","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build","postpublish":"rm hammock.js && rm django_csrf_fetch.js"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","isomorphic-fetch":"^2.2.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"2d9379c55e327dc54bed83058f6cb8e6dc891c4a","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.5","_shasum":"c723710d80520e3109b2418b4185724815bc6f96","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"c723710d80520e3109b2418b4185724815bc6f96","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.5.tgz","integrity":"sha512-Vxhuas9yjJyARwYnMP01E5jPSEw9H73Y2f4XuhePJKJG2bT7lqvihc/EeHnd7KITNscifmP/n2g2Ik9yl+WVkA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLE7+olr1v44kwLnyyDLTvPNDdmClf8azOG00jO7p7cgIgCAterkOxtzTIAvjaRo/YGXsugZXPI8bkUCApre0Epp8="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.5.tgz_1498235887208_0.38854495086707175"},"directories":{}},"0.0.6":{"name":"redux-hammock","version":"0.0.6","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build","postpublish":"rm hammock.js && rm django_csrf_fetch.js"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"b80681cacedc59ad754b0a7fb1c0f746faf63556","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.6","_shasum":"e80b64d580d4cb6bdbcb8251fbe807b619237677","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"e80b64d580d4cb6bdbcb8251fbe807b619237677","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.6.tgz","integrity":"sha512-jeGVtWjxe4Ll1kVwx/NhJ+XFBgeFU74QhKhrH74oGls4VoMLSlzBh+P9Up1FE6Gl03kPtuZ3FeqkgnSXuwH2tQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG82jMh+LHmBWn2jvvU4poQBSV/oWWwxPBYUEzHwXooeAiA+Is7DgnB7iIGtTr//WORZyaVoYpLNervGoeXQF7fQZw=="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.6.tgz_1498236950069_0.25755805242806673"},"directories":{}},"0.0.7":{"name":"redux-hammock","version":"0.0.7","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"634d0ae54588a43acbccde12557ff1422ce94690","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.0.7","_shasum":"787001d6de565cf2cd85a4075fd2c3c98aab5026","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.1","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"787001d6de565cf2cd85a4075fd2c3c98aab5026","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.0.7.tgz","integrity":"sha512-YGnDKBYibisukeqUzirO6FvKa7pricsPNAn1cC5e7zkT2Jy4o5ZbHGVxfRpH3D4TJMSL9xGVdpYtTIMycBGaCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxIKU0ir8jF24kZzYbzZOxg0VrLeS0okfdulTIxvgEygIgS68Rvgu+TJabeTB3KyjfBZqnkb3MQZuaAeS5wj3N1sk="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.0.7.tgz_1498239877460_0.772150439908728"},"directories":{}},"0.1.0":{"name":"redux-hammock","version":"0.1.0","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"ISC","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"gitHead":"30a1ec98f7fa4775f7810e821cd1484f57c0a4d3","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.1.0","_shasum":"efa3c492f2f4421c0c9632f7090244a9086efe7c","_from":".","_npmVersion":"4.6.1","_nodeVersion":"8.1.3","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"shasum":"efa3c492f2f4421c0c9632f7090244a9086efe7c","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.1.0.tgz","integrity":"sha512-QiTypdqfQjE4n/8Y0pqdeHrV1bxGQtO3mvk7HuT7987nwmKrJkhhmg43AK85zbitnm2gPp5O6l04+XevO7Nt2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5e+eqbwcL9gTlu9R77Xiz9q2f96hLv2u93c3gBOPadAiEAxrOZkWMw9g0wDvhJB7V5EafT4qn0gq6z+cEmvqEfgKs="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.1.0.tgz_1499264026217_0.19924645498394966"},"directories":{}},"0.1.1":{"name":"redux-hammock","version":"0.1.1","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"52dba1bb824d5343afc204c74777cf6df8a269e5","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.1.1","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"integrity":"sha512-+Bkaaelp3mFn0iedlzLg8TFaFEwivpV9jFOg2jKUpy1hCz2eE+rF8LvJjCF9FsTHr2uQLcNGNjO1VXMNAEMb7w==","shasum":"8c703fbd85f444ed059cb17424327a2c19edd7b0","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDd/Go4f0a1W7hw8Y7DzzBVbV1jfW+3poCFzAOarBXZDAIhAPDTaAG9Tvd1yRw/bbq+Q5tudn57tFR7Wk6Pr9Ab1za5"}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.1.1.tgz_1500393278231_0.6052644588053226"},"directories":{}},"0.2.0":{"name":"redux-hammock","version":"0.2.0","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js","constants.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"10dd1c9b2dc745f59fb5051eb58492c4e5e2fb3a","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.2.0","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"integrity":"sha512-P+i3d7Ypnk63MS5EBSmQCtO0iYxCKvz73XohQz/EWcdNv8u9zmjymQndnW1DmH1O74qlaTtF6uVwXZcPa+OXrQ==","shasum":"ef4955f03d8dd1bee6179f4445f08a83e380493e","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG3ZGMgP41nYDKMtB8EfP4spo//6SrTwXhD2b3Mlg8D5AiEAjoMV7esZO0vPYLAG6K+ETTrMq6vey6Bxe1LJSLsueME="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.2.0.tgz_1500648227687_0.8025141360703856"},"directories":{}},"0.2.1":{"name":"redux-hammock","version":"0.2.1","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js","constants.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"b44da620ce02fd0850cca84889dc57356faad12a","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.2.1","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"integrity":"sha512-apk6AQqDkpHVN4aqQQQY5kWHzGczzc1aJ9IR0102li8JUZno9E23LsO2KU9y/R4NKOmW8QS5kRmp8l6TuMRT7Q==","shasum":"6c5fe3d221c3b2eb9817477d422926579cefd75e","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOOKSdM1o6efv7mqNCqC7aEypskjVhmm/jis/Ek5LV9AIgV2HlxacV5LupOXk8rP07FiJUOvegY+h3Rgru3s6vUcg="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.2.1.tgz_1500661418973_0.7621717504225671"},"directories":{}},"0.2.2":{"name":"redux-hammock","version":"0.2.2","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js","constants.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3","sanctuary":"^0.13.2"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"71e86d29f09234e26da15eb11e913e9e5b38a60c","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.2.2","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"integrity":"sha512-PZMD+INBZ9qhz2ojm30yclhoXR2xhknxp4MoJNnueqBwKD7wwNC71lIo5Inu3Jy5ltXFpzB/CNKczCp9Nj54jQ==","shasum":"fe666281ac94dc12b807587d6e40862e0bd7529e","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQLgPvPbhm1dKS9b/k7fI5lEZe0T5fL7gVWl18jkuAjwIgDslJqLUYd5DxXpP5W8l0PQvOsSrfbg15IlflF5uJyHE="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.2.2.tgz_1507911830850_0.2150742495432496"},"directories":{}},"0.2.3":{"name":"redux-hammock","version":"0.2.3","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js","constants.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"669ecfc8c48b3474d6e6b95b4680300d7879b4e9","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.2.3","_npmVersion":"5.5.1","_nodeVersion":"8.7.0","_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"dist":{"integrity":"sha512-PLCbeOUeCQtasCoPX1NkIW/DO/Jjk1tNk3/1ScWIQiG3bSyzruzGxGlr0tHWE/qLAuZ49DmEDAznIga5f6XCYQ==","shasum":"0235e8657d4808c6a9c9d25bdf367b2e3f0714f2","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ4E/Z7lq54QwIpV/iCchuP+t7cxIysamZoZps+nFHiwIgFfFjpq9O4ts5Sy+crioHWAZLz6EegV2xxdOptV/M4IE="}]},"maintainers":[{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"mitx-devops","email":"mitx-devops@mit.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock-0.2.3.tgz_1508876335763_0.919047407573089"},"directories":{}},"0.3.0":{"name":"redux-hammock","version":"0.3.0","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","files":["django_csrf_fetch.js","constants.js"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --compilers js:babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.23.0","isomorphic-fetch":"^2.2.1","lodash.merge":"^4.6.0","lodash.snakecase":"^4.1.1","lodash.camelcase":"^4.1.1","ramda":"^0.24.1","redux-actions":"^2.0.3"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.0.2","chai-as-promised":"^7.0.0","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^11.0.0","jsdom-global":"^3.0.2","mocha":"^3.4.2","redux-asserts":"^0.0.10","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^2.3.4","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"27ec1fda001ef8c6eae626495542d2239fbe08ad","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.3.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"rhysyngsun","email":"rhysyngsun+npm@gmail.com"},"dist":{"integrity":"sha512-KPK5nYAVOVNxKwf9g09Zv347MG6oVgSkG2UNsgvX9oRm3ibcT+dAIc3a8jjmrYfA++1lmZGechZOYFxKRQkN5A==","shasum":"7db00cf826bdba6b5a69baf15f29ea9ce9cd525b","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.3.0.tgz","fileCount":6,"unpackedSize":26390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbInN7CRA9TVsSAnZWagAAAqcP/1c7GwcIHkQZeZzu4g/q\nmhSnQwkt3jq2G2OM6N6FJJTxuuLPYefwTqmT2RjnUPh1C+NFs4LBOhT0nxFb\nk/Sh4of5agCZNM2Rxy+/8CUoDxoaAKZW0QiHVxQ748/HWhXer0cVwoadrVrJ\nYVQDPRvcyQ8NpiWCrKmdFCsRR7vHR9ULya0q3zJ6Us23EZUCf+HyNPjYgKD1\naEkpwoo+XbL/MEc3K9sRukUm6Leff4nybmgtXryDua36hjIf/I+b+T4yjVcX\nJg/QRYs9A6nVKZaGjtfiGlsOx0BVj2FnNUF08aBeTc2cfaXyXbyYDy7uLdTv\n/DhH7K/1aAIbRyZftejo6dL6Em+HORVFZPPwQcM83YeWhJ72bgptfSzexLQv\nzMT/iM+HA3sZ7wWCoOnuL3N3ZwxgcBakqhZqW0PPwW/IdgcQ0w7UURNiBk8V\n/cGNIux0F+kfY1YA8wGD6syjB0PeVXAsrl3Tu0NalLkk6TC2jrIg5SaGwRaK\nkGrq+q8yQVr4Zj0wPuSrqCpW/2K1TbChnPEVu+hAJ16wR36bGBPRh8GrWMKb\nHTSr4Q/Sq6UrdV2sKCweFyrC6As9SxbgkvYxZNi5yUefP7jjW5WCavqFlkS0\n0RQqOgm6NrP4fSRSaAl7Vr/8x1Zo/jluzpqzXf+1SRTh1CiYaJvJkuODHdOa\nQUia\r\n=JSxa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV3w12PoFylzkBgsHQAGisQ/pJtV1weYKiFmBKvsAVjQIhAO5R2kkHTkYuWgQ3wguax3ujJL30nBKZo+pqfmRyexny"}]},"maintainers":[{"email":"alice.writes.wrongs@gmail.com","name":"aliceriot"},{"email":"mitx-devops@mit.edu","name":"mitx-devops"},{"email":"rhysyngsun+npm@gmail.com","name":"rhysyngsun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock_0.3.0_1528984442755_0.279270363035828"},"_hasShrinkwrap":false},"0.3.1":{"name":"redux-hammock","version":"0.3.1","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --require babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.26.0","isomorphic-fetch":"^2.2.1","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.2","lodash.snakecase":"^4.1.1","ramda":"0.24.1","redux-actions":"^2.6.5"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint-plugin-flowtype":"^2.34.0","fetch-mock":"^5.11.0","flow-bin":"^0.47.0","jsdom":"^15.1.1","jsdom-global":"^3.0.2","mocha":"^6.2.0","redux-asserts":"^0.0.11","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^7.4.1","standard":"^10.0.2"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"33bcc89c58096f65e6e824d0499fb9a73a9dca26","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.3.1","_nodeVersion":"11.15.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-deq7k6OyAgio6wv/YEK8G3/cn4OptrUSpHzgcgmtj2YeAqM2zfgR17/S2G8iQi6nMNP3BsnakCkHeVJaSfXGUA==","shasum":"ae52d22f2ccc90e3b467458a7ec94e537d9cd377","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.3.1.tgz","fileCount":6,"unpackedSize":26376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXZiMCRA9TVsSAnZWagAAVUYP/0DXv9kFbJhsxqMNkyt7\nVyGe5Jq34JxwUdneg/RcVp92nc5TdvafD53I0nADPVj2WvdYENbCdXl5NCqM\nJtftcYkm8/GteJaanPCrfixnHg/5PAgLPdYVU2zYghWQytYf6DOMYTIPKa1u\ncqwV7hmLdiOqe21x2rHqjz7eGklkuRDaIf01nlA0a8c0iB7EH0ThGix24PIT\n5DaQ1a1FCPjG5ptTIc3IaYiiYAmLXJC4hKlpzE3w5ZQwr/HPZXhqLE4GDrBw\nvTJtEiTUjY/bgdiSVOwibyxrLSQRAKbMxxmrUiEetUojDhn6Ge6DnNeUkn/V\nsgPgLrupPfD74t9wFpqWS5C8B2wVNRKiUaGXbbglYf9DB1cIaH5oS/Jzogw2\n8Qdkv3A9Sm6qAebF2YIQ2aeRi8EMKNf0lt8AjGs5guUDXAKU4zbIXmgVwgeQ\nPNlkXH663uEA0F5W5s/opn+nmg6MKeVl87Evu5tVIblQsLessMcRhpJbeuFQ\nkr1R2uSpBFZcAW9tHapD7e0Z1ZSbrB5VGg2lan6zDPquP5AF+gR1fAtX4Wlg\nmLptDlqpcPaFZFfYVtoL82Z2KhMo3vvqP0XmkcjA03DDsHWQq0iRyv4scfBV\nQ0KTmIZewzn24CIrdCj4NA+PDlU5eIlVM21Iv3yhnzkfCIqoRL8AcjiW2Pi7\n4Z89\r\n=FqcY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjnVy6kBebjxEaU3ixhSgVxWGdbs7BLf0xoAkqBrx3RgIgH3JTWPOyURBkbH6spxzNQjyJZySP5TWCaGR/p+zF6lU="}]},"maintainers":[{"email":"alice.writes.wrongs@gmail.com","name":"aliceriot"},{"email":"mitx-devops@mit.edu","name":"mitx-devops"},{"email":"rhysyngsun+npm@gmail.com","name":"rhysyngsun"}],"_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock_0.3.1_1566414987625_0.33228394038359044"},"_hasShrinkwrap":false},"0.3.2":{"name":"redux-hammock","version":"0.3.2","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --require babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.26.0","isomorphic-fetch":"^3.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.2","lodash.snakecase":"^4.1.1","ramda":"0.24.1","redux-actions":"^2.6.5"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^10.1.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint-plugin-flowtype":"^5.2.0","fetch-mock":"^9.11.0","flow-bin":"^0.47.0","jsdom":"^15.1.1","jsdom-global":"^3.0.2","mocha":"^6.2.0","redux-asserts":"^0.0.11","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^7.4.1","standard":"^16.0.3"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"c205c8de85b793182494d5c684d6da1a727e97cd","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.3.2","_nodeVersion":"15.4.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lgFEXDI/ue76mUZSKmQkaORfeBk+q8HeRSJGK7Y4Ckp/ecefhg7EG+KpAvjVRX19D/aQzdOv1aUIdDgl/yo7Bw==","shasum":"2de5c2de52bccf6531a972a5abec97f50eb8790c","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.3.2.tgz","fileCount":6,"unpackedSize":26376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/gQ+CRA9TVsSAnZWagAAqHYQAIfmPGpfX2VIgqukmL15\nKUFso2CC+LufQx53XNTo5aQUKXj9gyFoMnbGVTQsRzPKLHAsa5VvVMpUz6uW\nCP1fc1N8jhG8wIhrA0zpVfHS1r5dtQFbWXf6NhLmJfrmRhr0kI8LlwI73PP1\n3sTeSMQxgTQ8vxxrfwr4dt2y16Y7uM3V3TwU8nvt27+1b/6FARXNKBGAuUrY\nW3PJPDWTozF3jm5dq+YOXrBFeIgSYMRt1ghb6afuFxDoxjkau5mURMFfWJdM\nLupAIFlh9cOvUxmuTbRl+EDknQQUg8hOW7upRr8OXtsz5Erir0U43XkN5koz\nLkMeT8BjwM2IavgtcCaxdi2dQlmkpdOk1JwifUmPf1xmeVZVX4u/kd9ZCECb\nCk6fNNzgjftinoEgK70nSvIkYqO/qGR/166mBKuWiqhmvFdbnCK8m6lJY8/i\nocZFyyEfl48t2+UjAyBpVzA0ZvxSR2ibNg3FzPTRBJuUrQX6lzFvHWyRm9PE\nEvQG6nbbUMnrNv2J5lY4En3af+gTA7zDo3gaiAS0VTRewsq8uz0A7oEbvYrw\nzKKPd24Cxcp52clS1yNgqqHXqDKsqsCiptEcr+R3HWdyP06qQrxhximUa8pG\nI2jSR4LFhJjrOtvpOESZengXUfoE7vZwNnaSLiYDR5zrn44UvzwQpLqztgWh\nFh2v\r\n=9dAQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCahz5Q34IJLvE/COpqT16PYnyX3xaS6d2dLES7sPGuKwIgOHQXFwrJpzDPcbKEFytYlqEKNJhvODbR5YhgvYVfLfw="}]},"_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"directories":{},"maintainers":[{"name":"mitx-devops","email":"mitx-devops@mit.edu"},{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"rhysyngsun","email":"rhysyngsun+npm@gmail.com"},{"name":"gumaerc","email":"gumaerc@mit.edu"},{"name":"gsidebo","email":"gwsidebottom@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock_0.3.2_1610482750329_0.10909836368490033"},"_hasShrinkwrap":false},"0.3.3":{"name":"redux-hammock","version":"0.3.3","description":"A library for simplyfing the use of redux-thunk with REST APIs","main":"hammock.js","repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"scripts":{"test":"mocha --require babel-polyfill --require babel-register src/*_test.js","watch":"mocha --watch --require babel-polyfill --compilers js:babel-register src/*_test.js","lint":"standard --env mocha","lint:verbose":"standard --env mocha --verbose","flow":"flow","fmt":"standard --env mocha --fix","build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["redux","REST"],"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"license":"BSD-3-Clause","dependencies":{"babel-polyfill":"^6.23.0","babel-runtime":"^6.26.0","isomorphic-fetch":"^3.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.2","lodash.snakecase":"^4.1.1","ramda":"0.24.1","redux-actions":"^2.6.5"},"devDependencies":{"babel-core":"^6.25.0","babel-eslint":"^10.1.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-flow":"^6.23.0","babel-register":"^6.24.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint-plugin-flowtype":"^5.2.0","fetch-mock":"^9.11.0","flow-bin":"^0.47.0","jsdom":"^15.1.1","jsdom-global":"^3.0.2","mocha":"^6.2.0","redux-asserts":"^0.0.11","rollup":"^0.43.0","rollup-plugin-babel":"^2.7.1","sinon":"^7.4.1","standard":"^16.0.3"},"babel":{"presets":["flow","env"],"plugins":["transform-object-rest-spread"]},"standard":{"plugins":["flowtype"],"parser":"babel-eslint","ignore":["flow_declarations.js"]},"peerDependencies":{"redux-thunk":"2.x"},"gitHead":"54d93ca662de19d45b2e5cb0c08c586aa5488b35","bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"homepage":"https://github.com/mitodl/redux-hammock#readme","_id":"redux-hammock@0.3.3","_nodeVersion":"16.0.0","_npmVersion":"7.10.0","dist":{"integrity":"sha512-JMykN5RhgQIutiuGms2NzY0lLi1ZLCQ0uEkXdFPKv7UnI/UzalGzSpCxv9DOMzFHNkLGDq8qrr6L1KDPVNQUjg==","shasum":"c84904fe85a74f8d4702b5518f809342fb2c7004","tarball":"https://registry.npmjs.org/redux-hammock/-/redux-hammock-0.3.3.tgz","fileCount":6,"unpackedSize":26376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp87uCRA9TVsSAnZWagAAt3EP/iJKrde3BR5qZ/orashV\nS0OmHIgrErU/gdsdvZhGhR7b6IQXBdCGLoJiOHlosJQk+cSeuRDuY5pzPuEF\nF/6PG/I9REwtlb5rDYkdTuKC54l+IDBfc6MhuLep/dd7M0TzGAgs3LHgoiN4\n2w5kgjfH3gzhunuKBhZWZn+qOPAews/BYuFkp7U+K0/J6/Kmrm1V6l7JY7kf\nskEIosecoSiRNEORbd9k+pqhzVHJkMaVCHXEOQlqA/ZWhH12Gjs5h20JwQlz\nbRfwLQ+ZoL8uGI4647F74+0pVv2yby7dhcivJCdPucuK2T7ulysIOQE0QGoF\nOQUg76WyR+ezqNyXrvfi5Ddh1v4YwkZsoiuoqL1K93P7ovXR1MN52NAkXMyM\ngceJddlBsfrDlJqgi6EhBMH2S5QiZ42dZigV7rOMIaiQIbyRvwTbDVCMUDRd\nq/6ypChXkdX29FBoL25snFI/udoScpqtRRsurdMWuiei+Fgkw8XBzZ0n+lP7\nh1x/gf3xuKN2j4iChyh0f2qCyhageC6okizzL6aqRvhXboEOxLUX56k+UhL9\nvMF5Asat1tnfNMwZoCxsG58qgnZubAesgc/liVmR/G3AlSgM7lBji7KDTB5N\nDhZSm0O02Ygngcvu9E70S7pIbd2MMlBXLZiRs7abv6IZR8efuNTBow8jwU07\nIjJB\r\n=EJz7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjruZdKGJYMk0yQVs7omcmxmO5tVZz57yE8sxtup9krAIhAMhEGTVR5dSx3spPvfHZ5TyN+0FoSotYw3yTNu42Momo"}]},"_npmUser":{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},"directories":{},"maintainers":[{"name":"mitx-devops","email":"mitx-devops@mit.edu"},{"name":"aliceriot","email":"alice.writes.wrongs@gmail.com"},{"name":"rhysyngsun","email":"rhysyngsun+npm@gmail.com"},{"name":"gumaerc","email":"gumaerc@mit.edu"},{"name":"gsidebo","email":"gwsidebottom@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-hammock_0.3.3_1621610221258_0.14696309536248386"},"_hasShrinkwrap":false}},"readme":"# Redux-Hammock\n\n[![Build\nStatus](https://travis-ci.org/mitodl/redux-hammock.svg?branch=master)](https://travis-ci.org/mitodl/redux-hammock)\n\nHammock is a library which allows you to abstract away some details and\nboilerplate when using redux and fetch with REST endpoints. You just write\na little configuration object and hammock generates actions and a reducer\nfor you!\n\n## Motivation\n\n`hammock` is designed to abstract away the boilerplate involved in using\n`fetch` and `redux-thunk` to manage communication with a REST API from\na JS frontend application. Consider the following (trivial) example of\na `user` API:\n\n```js\nconst fetchUserInfo = id => fetch(`/api/v0/user/${id}`)\n\nconst REQUEST_GET_USER = 'REQUEST_GET_USER'\nconst requestGetUser = () => ({ type: REQUEST_GET_USER })\n\nconst RECEIVE_GET_USER_SUCCESS = 'RECEIVE_GET_USER_SUCCESS'\nconst receiveGetUserSuccess = response => (\n  { type: RECEIVE_GET_USER_SUCCESS, payload: response }\n)\n\nconst RECEIVE_GET_USER_FAILURE = 'RECEIVE_GET_USER_FAILURE'\nconst receiveGetUserFailure = response => (\n  { type: RECEIVE_GET_USER_FAILURE, payload: response }\n)\n\nconst getUser = id => {\n  return dispatch => {\n    dispatch(requestGetUser())\n    return fetchUserInfo(id).then(\n      response => dispatch(receiveGetUserSuccess(response)),\n      response => dispatch(receiveGetUserFailure(response))\n    )\n  }\n}\n\nconst INITIAL_USER_STATE = {\n  userInfo: {},\n  fetchStatus: undefined,\n}\n\nconst userReducer = (state = INITIAL_USER_STATE, action) => {\n  switch (action.type) {\n    case REQUEST_GET_USER:\n      return Object.assign({}, state, { fetchStatus: 'PROCESSING' })\n    case RECEIVE_GET_USER_SUCCESS:\n      return Object.assign({}, state, { fetchStatus: 'SUCCESS', userInfo: action.payload })\n    case RECEIVE_GET_USER_FAILURE:\n      return Object.assign({}, state, { fetchStatus: 'FAILURE' })\n    default:\n      return state\n  }\n}\n```\n\nSimple enough, right? We have some actions for indicating the request is\nin-flight, one for success, one for failure. When we want to make\na request, we call `dispatch(getUser(id))`, and if the request goes\nthrough (i.e. if the `fetch` call resolves) we'll get our user information\nin our store, so we can display in a React view layer or similar.\n\nThis works, and is actually fine, but consider the case where we have four\ndifferent APIs we need to communicate with, or ten, or fifteen. We'll have\nalmost this exact same set of functions, with associated nearly identical\ntests, for each API. Yuck! That's a lot of boilerplate. We can cut down\na little bit on this using utilities like\n[redux-actions](https://github.com/acdlite/redux-actions), but we've still\ngot to write down all that code for each reducer.\n\nIf we look a little closer, we can see that the only parts of this whole\nsetup which are particular to this API are the URL and the name. So\nwouldn't it be nice if, instead, we could write something like:\n\n```js\nconst userEndpoint = {\n  name: 'user',\n  verbs: [ 'GET' ],\n  getUrl: id => `/api/v0/user/${id}`\n}\n```\n\nCoincidentally this is exactly what `hammock` lets you do! Great!\n\n## Installation\n\nTo install hammock you can just do:\n\n```\nnpm install --save redux-hammock\n```\n\n`hammock` assumes that you already have your reducer set up to use the\nredux-thunk middleware, as described\n[here](https://github.com/gaearon/redux-thunk#installation). \n\n## Usage and API\n\nAs hinted above, to use `hammock` you declare an object (of type\n`Endpoint`) which is used to automatically generate action types, action\ncreators, a reducer, and a `redux-thunk` async action creator which wraps\na call to `fetch` (along the lines of the example above).\n\n### Endpoint declaration\n\nThere a few properties that are a required, and a few optional ones which\ncan be used if more customization is required.\n\n#### name\n\n`String`: the name for the API, used to name the reducer and also any derived\nactions.\n\n#### verbs\n\n`[String]`: the HTTP verbs the endpoint supports. Currently `GET`, `PATCH`, and\n`POST` are supported.\n\n#### ${verb}Url\n\n`String|Function`: This is either a string, or a function which returns\na string, which is used to get the URL to `fetch` for a particular HTTP `verb`\n(e.g. `{ getUrl: '/api/v0/example' }`). If a function is provided, the\narguments passed to the async action creator are passed through, making it easy\nto use with a REST API to `GET` or `PATCH` a particular record.\n\nExample:\n\n```js\nconst getEndpoint = {\n  name: 'user',\n  verbs: [ 'GET' ],\n  getUrl: id => `/api/v0/user/${id}`\n}\n```\n\n#### ${verb}Func (optional)\n\n`Function`: This is a function which is used to issue a `verb` request. If\nthis option is passed, the `${verb}Url` parameter is no longer necessary.\nThis may be useful if you need to do some specialized error handling for\na particular endpoint, or if special editing needs to happen immediately\nbefore the request is issued.\n\n#### fetchFunc (optional)\n\n`Function`: If a nonstandard `fetch` implementation or wrapper is necessary\n(for instance to deal with CSRF tokens or similar) a `fetchFunc` can be passed,\nwhich will be used instead of `window.fetch`.\n\n#### initialState (optional)\n\n`Object`: by default `hammock` will generate a sensible default empty\nstate for you. This property can be used if you want custom control, for\ninstance you need a property other than those defined on the `RestType`\ntype, or you need to use a custom starting placeholder value (like an\nempty string instead of `undefined`).\n\n### Generating actions and reducers\n\n`hammock` exports two functions (`deriveReducers` and `deriveActions`)\nwhich both take an `Endpoint` and return and reducer and an object holding\naction creators, respectively. The reducer can be treated like a normal\nRedux reducer, combined with others using `combineReducers`, etc. The\nactions object will have a property for each supported HTTP verb defined\non it. For our `user` example above, this would look like:\n\n```js\n// fetch a user object\ndispatch(userActions.get(userId))\n```\n\nThe async action creator function also has the relevant action types\ndefined on it as properties, at `actions.${verb}.requestType`,\n`successType`, and `failureType`, as a convenience for testing and\ndebugging. Again, for our `user` example this would look like:\n\n```js\nuserActions.get.requestType // REQUEST_GET_USER\nuserActions.get.successType // RECEIVE_GET_USER_SUCCESS\nuserActions.get.failureType // RECEIVE_GET_USER_FAILURE\n```\n\nIt's up to you how to organize the created actions. On strategy is to\nstick them all on one object, under the same keys as the stores, so that\nyou just import an `actions` object in your redux container files and do\nsomething like `actions.user.get(userId)`. Another option would be to\ndeclare the actions alongside the reducers, in separate files. It's up to\nyou!\n","maintainers":[{"email":"abeglova@mit.edu","name":"abeglova"},{"email":"cchudzickinpm@gmail.com","name":"cchudzicki"},{"email":"mitx-devops@mit.edu","name":"mitx-devops"},{"email":"rhysyngsun+npm@gmail.com","name":"rhysyngsun"},{"email":"gumaerc@mit.edu","name":"gumaerc"},{"email":"alice.writes.wrongs@gmail.com","name":"aliceriot"}],"time":{"modified":"2023-05-11T15:26:50.525Z","created":"2017-06-20T16:24:28.009Z","0.0.1":"2017-06-20T16:24:28.009Z","0.0.2":"2017-06-20T16:31:50.719Z","0.0.3":"2017-06-23T16:04:20.800Z","0.0.4":"2017-06-23T16:33:41.221Z","0.0.5":"2017-06-23T16:38:08.904Z","0.0.6":"2017-06-23T16:55:51.024Z","0.0.7":"2017-06-23T17:44:38.328Z","0.1.0":"2017-07-05T14:13:46.312Z","0.1.1":"2017-07-18T15:54:39.348Z","0.2.0":"2017-07-21T14:43:48.725Z","0.2.1":"2017-07-21T18:23:39.994Z","0.2.2":"2017-10-13T16:23:51.837Z","0.2.3":"2017-10-24T20:18:58.478Z","0.3.0":"2018-06-14T13:54:02.828Z","0.3.1":"2019-08-21T19:16:27.785Z","0.3.2":"2021-01-12T20:19:10.453Z","0.3.3":"2021-05-21T15:17:01.429Z"},"homepage":"https://github.com/mitodl/redux-hammock#readme","keywords":["redux","REST"],"repository":{"type":"git","url":"git+https://github.com/mitodl/redux-hammock.git"},"author":{"name":"Alice Pote","email":"alicep@mit.edu"},"bugs":{"url":"https://github.com/mitodl/redux-hammock/issues"},"license":"BSD-3-Clause","readmeFilename":"README.md"}