{"_id":"react-use-rest","_rev":"67-4ec564f5981795b7bed913b070ee26ec","name":"react-use-rest","dist-tags":{"latest":"1.9.0","next":"1.7.1-next.0"},"versions":{"0.1.0":{"name":"react-use-rest","version":"0.1.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"kevin.whitley@arundo.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/arundo/react-data-hooks.git"},"bugs":{"url":"https://github.com/arundo/react-data-hooks/issues","email":"support@arundo.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.1.0","dist":{"shasum":"6bb5ad1396d96a21c13af64bb7e8889f81776b6c","integrity":"sha512-a4KqvNagSdsI2l4ziUeyjGl6G9XIoOvhTFr/TAq6jeb6srE91B39qbOCWuT5qTc652lb3EcsGQIZVrZIzSTZ1w==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.1.0.tgz","fileCount":11,"unpackedSize":20681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJNHfCRA9TVsSAnZWagAARRoP/3DVC0kqqCmmdbkMr9cA\neVp12Z3ofSJNl2xEoZrbZJKK+7j4FKCSNpbHDYcKOQ3msDEIZxImhmReHl2O\npYK04B3ysnZSoeSV0Ln8u1rVpcAvAnrgeam7e3VSy3e6/w7VEykfrq/6l6s1\nEL4k9SNzRRUdntXxJ8x5Hsas/HOX5Hydf2zy4OK76h4AzVp9UVte+79fOrtH\nRb7zexqtZeYlRFXb5Nso7VfDDjHFNOIrTr/syEedvEAGf9mLraUp/0k4r6xt\n/kPKNDXMASIwz2LtKzCqlIACu7zNUOl74OshqiD6VjB3i+YKutuMooZfC1oA\nt1Jvd9cXsXOKS0o/CGQYGalMglf2Osc39o+gd3KilfsRa1bFOeP5L5wLKwdS\njbIOHcL7m0vAy0REdKQ8WTMnA+oWOmxVBwRqx1qCYuMUIYF9o1Ol3ortQCAg\nCHhqT3rwhe2knoIBvt90NyIFX5b1tNHVDSLR5r3g7ubptciFHggAxebwC029\nWxLAUApHFbbo5nJvDiTmJOVHcPD+WTfx7Lf/44pOgWBMAZb5YlnTrAyxReuM\n/TwBCx11GPHyx4X/eFEZaVi+lu/ZbpvL7BpYIiCdOnTpCx96hB4XrR3D+v6U\nncUoNVfNeEHSmMK1F3RHWolJljw14B6H6HbBOtuXqqXBNOqr7rPgHXfVZmiP\nlr0U\r\n=2MRE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIElhAp5RgSoR0uTFQVGB1xMW3WcLF7dMdIUkUmJ56UpIAiEAhOm6k2R7zZYg0qbLyoM2FB850n8RYOfGHtqWPjcVbPg="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.1.0_1562694111087_0.41911656565818634"},"_hasShrinkwrap":false},"0.1.1":{"name":"react-use-rest","version":"0.1.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"kevin.whitley@arundo.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/arundo/react-data-hooks.git"},"bugs":{"url":"https://github.com/arundo/react-data-hooks/issues","email":"support@arundo.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.1.1","dist":{"shasum":"9a922ee6234a8bd8a037f3df07b2e1b07a727d12","integrity":"sha512-RAYAAEerVD4oI28ybFsj4pPt5zXbIkXLiZ1160Ck+RRJUKUcyRRF8eJNpzHH2tlarUv5Fp5lO2zcHdJRuV56Bw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.1.1.tgz","fileCount":11,"unpackedSize":22887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJNa2CRA9TVsSAnZWagAAcoMQAJ0VSokt+jq35yHsk3RE\n6R/FAeRUYdf2L9XEsBUyoPjiaxcqL0OlMJr3BVqh6e2sBZWRdZw4v+G/1/BY\n2wiywYf7uXEZzdvihQlMUqfkrZTNb5rgOkoMooIvah9WTBEGA1MG56E9+OeL\nsJRM4RJpSZYeJYlCEpAKQGu3n1Af57WqQuNof08sfmyKrR6Hd4hlJT2lPi9n\nVHf40VkY0bci7c5Oi3VR5mJiQGuGaAiWBvJzf8km6wvlrlByCtWaT8TQ7Sz4\nbVcg420QQxKRFtPOrn0VYi28B1uuz+Bvl+7Z67DvSNj4gH7FC2iqf7F7h5pg\n6a9NWPOG9YsoXutJartb4EMpDjbAYaioedHK6MckPyfGX6Uat9955YgEdOVo\nxhOIJTaTP30vp5Hc5/1fk4M+tVsScJ4wJreg96jvp+kASwQ0kKc+oWdl0MF4\nNtv75U64JJ1ed53uPEyxZFdglDdk2Pp6Y+h8ZmUFeAe2RRD7GF/n2F+SoK6b\nQ4eDSq6YHv01nz0+h9a0ddjpcNDPXdZozh+zD72S/D1AW0WO0nBQdiiQb56n\nl85AvmGbLYzJee8R5M2+ct7kZU0G51UQgsjPEK6xwTE281ZdZutuBgwQFsT2\nKvf+PU6K4AGh1mf1KltF9kKz48cobTfWwT3GkP6oRggZEYx0gCaxXRbziWHu\nB3ud\r\n=58tm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBSF2pP3PYGMiMPaA8qNGncm9QkHuwf8qT+LP2uyo9QqAiEAlV703iFyZyNybLIAXzPaIHTOCX6/pi4d4A09XDYwvnU="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.1.1_1562695349648_0.3281125278004837"},"_hasShrinkwrap":false},"0.2.0":{"name":"react-use-rest","version":"0.2.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"kevin.whitley@arundo.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/arundo/react-data-hooks.git"},"bugs":{"url":"https://github.com/arundo/react-data-hooks/issues","email":"support@arundo.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","react-use-rest":"^0.1.1","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.2.0","dist":{"shasum":"2eafc55292252c50dc21a5d3a6057aae6c771ec5","integrity":"sha512-SjF9MWOvkjANn9sv13NmXJFSPdMYn/99/AjmjoOKJiznv2ztr2cXxR3IFMOmNwXT9wH1TgBtzEk+KN+jUiFUZA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.2.0.tgz","fileCount":11,"unpackedSize":23262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJOocCRA9TVsSAnZWagAAY+sP/ityJS/vvH1RU3QBX3yH\nPHiHnkJexO/SNPTws6x+mcmai4VoWI5uUe5XGRVV9dfWlkop5LdD+efOPXoH\nxSllqA6G7D/fHWus9F3/uD4HnqmsWnkzPV5+ovfKelNOq7nM5Ec+eiDNb8NG\nNgvcfKGsqDNEcIGzmLITKq9wy81xjueiegOpYB0/ZzrHp7WiGE3cL+KFW9Xn\nMx+FlLF9JJYKqjb31NDCFjF4VqjydIThxDqQbMRBOomgh1LJElEZei3XLKs6\nHJ6SufNP0dDAKQI1acW4uR92yOYlFSEE6LVthE76YKXDMak1cd2mPs1qQFx+\n6SpTT+fKL490qbUaSMmh2bnUDtN9fSYSQx2t9q4DBxuY1/c/1qVcdE/gQEIp\nB2tXYt8Ec+LAY17ftqjTAGmuc98kruwSDFmCckKWHpTfpskI1XKe4khEpmac\nD+L/nNpVHFGCgfJEoaASpAcN4OoK/Ykf0C2g2GLkoT9WqKO5YffPXJpeutO8\nId12J4iJz+A/LHQgkEjOlZbt1m57223+zNFNUufAWTz7TALAw1HN6nGHPGwm\nXx3jAuDc2pz8X5F4yzTRwFAx9FkGX65AKN41rXmce+yhlov46Zx4RdVQe9Nw\nxmpQCPyeDC5QaWIMD/7Fq4HI2RulZ1YXJ8h/jHw4lKeazlLLilQ4mbeeaJ8T\nAt1+\r\n=qFi6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5J6ZarqjBdWXadICDhNepQRE/Z4jrQBMsbjqo00Id2wIhAK0yy0fGbtX5FmuLn9vwHl4gMCc72d2M5bhkbIXYFRjH"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.2.0_1562700316100_0.49586599570382983"},"_hasShrinkwrap":false},"0.2.1":{"name":"react-use-rest","version":"0.2.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"kevin.whitley@arundo.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/arundo/react-data-hooks.git"},"bugs":{"url":"https://github.com/arundo/react-data-hooks/issues","email":"support@arundo.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.2.1","dist":{"shasum":"2f59bc560c3ca9642f5057e555d1347a78da992f","integrity":"sha512-KBfcp8Z4+1sOjxAvOGjSjUtorr45HyoCIXLyjiF5qrLvdk/X70L3PHXo9Nd4qOAILW3Opgdu47jXNzdVIlUSNw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.2.1.tgz","fileCount":9,"unpackedSize":17586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJOtgCRA9TVsSAnZWagAAJ4QP/21rmyJABaSRul7Yk9oA\nCZx/M5rhk0xOSPmGt5kl12Tnhv/a+C4lcIU5BtfodFccU2qsAUZx+s8BQ0YY\nANYyoVFbcq1GMjRhgQ3QcdmHpAQl907Amxsr9wMSZ+o6ZE9H2CtCn4xhbh3a\nCb7PP66S4EZSZ3JPyBXuVRQMphOyEPM7NZEtVNrui3pwmauAque1arKfTxth\nK0YuqyC63GpfEe1eDwMjKpbvaRE24FxNE0QbGqhlLZ3+YNnuAG+Uy5k/2nRb\n0EamGjuphFLQsovmmH5+WYPo7GPcejAJNHyySM9kp9qknFo5S8VdTGXA89L8\ndZ9qYnB9zArRS9XpJNNyhmMDlvtXJILdzKnYBB3uVfyezGXRVZlibD1ng4dl\nwefrcTYqUnprMsh4qRV9zKnz3YXKs5r5gfUQxk0vFcAyRhoQTOrWyGOl0n+/\nJ0egEEf3RZha701XNkUH7I1trgeHjR7Ov9hMbLMvxlVYtHU3kBpqF8mGJX65\nQQUDGTRk94TLKKPn1JXNUL8ygBJE1ik0bPBZRTRBvP3LnGfjJFKLZYy7YIML\n1tLZGajc6OLbiVaPsxKTcbz9+BVDpFm/+l0VF8nX63Drc/UncoU4NUE5OXU3\nfvBxr6cVUiSumu9Bt8uCaMFs0prWUTMeAVbLN5cnh9f/sPDHARsc5LUHhI7v\n9o6U\r\n=Iuf6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9ZxiRVScKvZXyDbM/kbjagNszAy3bJa/4LS7izbyoGAIhANo96sibeNC8dtuVIMy5D0ZH66aN2oN31E48hzPDWyCF"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.2.1_1562700640288_0.7294568685247789"},"_hasShrinkwrap":false},"0.2.2":{"name":"react-use-rest","version":"0.2.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"kevin.whitley@arundo.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/arundo/react-data-hooks.git"},"bugs":{"url":"https://github.com/arundo/react-data-hooks/issues","email":"support@arundo.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.2.2","dist":{"shasum":"6f6f964d2854cf9d48740a27a1d5ee76df116924","integrity":"sha512-m0T38Vtmo2OoQt62xFFDy14vBtzKSmTAuOyXKyhYHmxtP/00UbjJn19Q+6psY4c2tbrn2vYcgsVINc8qLfe/Eg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.2.2.tgz","fileCount":9,"unpackedSize":17591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJOuTCRA9TVsSAnZWagAAjgYP/0eOPVhW1c0ldjuyqw4W\n5oHWSszsHS9/wCaCiL3ey+flLMv0C1/GSZZg9DTosasUlYR71N620P8/vbW/\nV9eNxZc62yiy4euarzalKPOGeNqjEj0Xzj9aUbq0N4I+BIBvEUQZNZxpzo31\nesLjrtFdFDC0kCYX7XWel9g9OJK3m6+LaU+EhEyzbf0RwrMmDrbLRsufu3wL\nppBlMZ7zr3YPLaPTiAaumx+GOT2moNX37xpxUbQ3YUI5pR/fb9pArpBjJbRd\nHwMw5XjxCTMQcg5hlew2Xr1A0pV6aXLNSMb5EvdCGg+fMovZieLK7LYf7ojn\njyHP0ne+yL9d3D2VQImFrF96M7IDkHv4FX72lpPLb/j7effdYl9RW9y5izBS\n2IizjIEv8CxkQHq7I9XJTUeKe2jip5mKIDcYRy2JzDm7GH59rO3JPUQEf3Jx\nzO9BvgE7efD8F4ILMD2tRqP1HwyeqK1WhU4VuNgL2O0GeRBlgJqfFmxb/SRx\naNRmhzHRJ16B3JVLBmf35W/Lx1grXk9RvzlkkkOXyJb6IIrT4++vNFIHJbNV\n8gc2Rjkk8SnlmfbpkdYD91eyQKaE/DygPMGndq9vfArV0XAgAK/PdMSfGY0v\neHP6bWuqgU+V6e2ZLQBGZbnxFB/UwXjF8ievjW5bTex9SkstgS3M89WF4Bcm\niw7E\r\n=wkYX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICjFldFXPMkjADV5ikH2IEI7Ach5CyUAlJS6ElTKTLSnAiAs4pjYLAsZBVO5UZeqIz3cLNqX9f+WHMc8XeXEnCIdxQ=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.2.2_1562700690487_0.14346245103796917"},"_hasShrinkwrap":false},"0.2.3":{"name":"react-use-rest","version":"0.2.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.2.3","dist":{"shasum":"f59cf66b15f4957e05867e28fe8251b37b3b7205","integrity":"sha512-Uuui4ZNGaCbwJdVIyjZeZ3QS2VH9CG8Z2Z/REX9EU0RcWCtw9Fx5bYoB+n/peEt5KB7qfomB3R3IgeIPs6oeCQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.2.3.tgz","fileCount":9,"unpackedSize":17592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJO2pCRA9TVsSAnZWagAAWh0P/2n0X50Yoo8rDzHq8ppP\n1Yek/gnUTX5gQ77tgwcCNIHEi3WeyVriSffAyAig/0l3KB0+VZM4quFfCy0b\nq4SAU3FaTlZLtI9RGZJ7uS7QZBFthsnHr7oJnSBEs8BkhHn0pyytwt+kPZHi\nLkPrNHBVrsGZIgNf9lyyea1s0eOmK9RNNbeesc6gJ6bN370XdwNh3IhBD4qf\nYM+99YsuYDfMSxqVyzG0Rxx4y/eVXksvZLhMcp0itGSotztvyV7FZibYi3v2\nn2mU6UgzoBQZ31akNDyp5SUjDX63fXV6J45IQnH0x2M71hseYN2+EUnxIbWE\nGc/x5fBcnfTJl4fHwekNKgS0M3mNBbvVqyj/ntutmyJrHk5MWiN3sz/Fm96y\n8a587nOEoyxKnGo6rRxofRDc1XM03vsNXYz+a11O4pKAr+W952WEBfq6xMCi\nN5smBg1VmxXFxLF7s4U+K3vVTPrqaIdSyK+BoDxJdDpF2McFuZMN++P21O+h\nulqjCVksVZmR1AxEdqkimLgubYLhpij3G+pT7EADldJVe4h0wK2koqu2ICp5\nGkSvwFPbhggpv0j8EWNH8LCDhaifuN73oEVCyTEtQggmLwINM87phqelGyVt\nd4kgsIWZHsC1fCj3JY3YWxYTnDZ1d8M8QE2/V6xHtlsopYjn+K+jicYSv+tN\nDg2c\r\n=3OOS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Td7skCjtpyijq5H1mytarZN+7LDfOnJGBx1FqQIDWwIhAIsytf2k/sDptRDg0ErbRvIOLJ7UFGrqTDdovt+xMxKi"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.2.3_1562701224715_0.7596734962390468"},"_hasShrinkwrap":false},"0.3.0":{"name":"react-use-rest","version":"0.3.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.3.0","dist":{"shasum":"01ddde0e8c10e096ac051bd5fce01047cb28a5c5","integrity":"sha512-7WAaJ423zWWjI9NJziXI91i/3sC8yOctQ5i9u2RTuxukMcxJsEoBD1fkZPsC3pAXZsdhKf1XZULGNK58xVVgww==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.3.0.tgz","fileCount":9,"unpackedSize":17990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNdELCRA9TVsSAnZWagAAcHsP/irjmb+2gYhUk9K7hGsP\nMTW2Mz2L2YnltCwx3kEnXbBAr45XJ0+nyWX9NRgt52meCGHVPOBh7uAd0s1h\nckrm/JyZq9/PuNyvYAmbFKnyDcKzrt5aaIH3gT+wGzltpAix22OP1OzMgwJk\naSQttRtHZMKNfngvcDO1Fj4jr/mQ6A0VospkwSsA7ChH4Ebk5LdPdGW1YaP+\nak8/TCPS/321JW1Pow1xieKrK/+qMZXNTxW4ex+pI0Ps04A5btJPshzqfQsN\nRUINPoXwBlMgOuGwvw7unNV4WFhChYHyau8as3shbf33mw2JXRDueRsGSMjk\n5QU205ukSgAwfqUnpIJOWgBh/ko56qyU5O7mRyc/KS9KPBrJBzGx83tLD3In\npPqjL6ZQ5fPS+IhVmikLVm2bLMbD9yCtlZtPsG+//SF2oTkJh0F7M/gE1SwD\nuHaAzQaRS54whp73M5ScE9B3HQr+QZhu3QD12WmBXnIoh3Z6B9LkRery+7IM\n/KworGhKFlJMybSFxRav6i392DzmMoLmAahxn+ElaBoz3CiN2uZttCT1jSR2\ngE0TPUt91acbj9FZK76LiZw7E/YX2LoiMxt2shLS2/3bEEqUvQ//4Q1Q/BOo\n5DbTjZcfS1Ho+5sKmZa/8OcvqqMgzqpUECBtuVYKtXbApfPCKo9y0+5d71nJ\npPXi\r\n=l0uh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDJYzKCRHOgAfXJtIggUzXey3X6C96ONIvgYEZ6PlDOUAiBHsHxkqOi+qe108CUsHQs9aaLORjiOPJYW2siBocoPxw=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.3.0_1563808011047_0.29285068864601294"},"_hasShrinkwrap":false},"0.4.0":{"name":"react-use-rest","version":"0.4.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/plugin-proposal-class-properties":"^7.5.0","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.3","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.4.0","dist":{"shasum":"7f1687319c0aa04dcd885e36142916a3630a4dea","integrity":"sha512-iy5RV7OvDnZsoxQsw1gtjDoaq1/F5/3oOmBRRhURluRnytd5c6ixHZ4IrQyrlQmjEPU3HdlL30NpT7dmOkMskQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.4.0.tgz","fileCount":9,"unpackedSize":18597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNdj7CRA9TVsSAnZWagAArd8P/0ZpJq1j8w3OG+bkWGe4\nT+uhzstNPJ8y8L41kk/EjfYAQJrxKXmVwGhfXWCAcTWawG2Lgld31J3+lmK4\n6bId/LFeILC4mrR3XNSXk/fav/DHo9sRLJrgY8v5552uWGgjOe+E5JpWVV0l\nwWXFU7HvKsnRMghzp9OgQOXmMTDEBIfjCWyRMSV10+/nqFuw1wCNL5RNV1BS\nssFi8prX5rS+5S4CFNbIveBUWu9sUYw+YLnTWgBuun5+61wDYzOgyhzlf8u/\nbzKbR6ugZazNt2P+6WFA6BZrJFx8C5ULdiEN1rxOVz9geGAy6bhr2W0J2LJA\nbwNj2UcspEI79ZNHaNIA/qvzOTbbNh6hCBZQlp8pQ58OXnG9NmUWql8iSkq7\nrENyGWXUj2EZ9pKgdqbB1PLGToBoGlkpMQhIbgN86GFpKpNM+ekXui0aPrtE\nZDJLEcTyaITKJcZNqJE2GAfmHFTF6Z8O4PHWjKP9P7WZAoGfIEW48E9y7Icd\nMYh8dslM5ly+ysdHTuWOTU16a/Jf5iyOTjvoBNSfTFa3D9GtOISV/KBD+NeJ\nabErVnngJMJnDiCXb7Ern6xJ6ERWAOEJq+4JjsP8gHUJ06A5QpLTwahxbyMJ\noNsmwfHmt3vkLRe46NINvLFkY7BgkXSp8dJ0BEqhDRafdwaRqd3uayShB7eg\nnfzs\r\n=tfqX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgNxEM5ZKjmEpNQCFkrs0+wHgyc6jNdRJqT22S4fxiSwIgBjrVIoIoAAmcwuTiRNSz8xHGaTFWRRBOneKfVibTcFU="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.4.0_1563810042474_0.7547184102998106"},"_hasShrinkwrap":false},"0.4.1":{"name":"react-use-rest","version":"0.4.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.4.1","dist":{"shasum":"dc90ff93e1e68b197dd99ebe7739c41e558cf925","integrity":"sha512-pKqaaWIJgpMIewUEyvjJenjIxjdlL1QUQ4w0dmS/hZ5L8mc36lpg/jNRWgrCJxHJS29X3bQPcYXajtw9ZWVzxg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.4.1.tgz","fileCount":9,"unpackedSize":18597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNeX8CRA9TVsSAnZWagAAbOEQAKGAZ+qa/vlzC4H2DYNt\nh1CHTYZKV7qmhhF9n6N7vi5fYijcZugJWQHboIQ3+JP8TZ+8Iv/MRmjcUo28\n+S5Yu5oSIKMK61eWW3XNjg1jhXJs8ypMbuEmrvemcrkyAM50M848bp84JjiI\nemp+fDRFcW5BI/AaJzsjBCKQdies8iSv7ifSFoq8+ISI9zAqLfrMJypWhwaF\nKdcyK9vC0va6FdxIpfTHUzap5TbiWuQbE90XDGCAV2qKfaghcCh4d4TD9MZu\ng8D/jcooXmgG5He8JOhIQu9bYIsNx72N4OcnpN1DBSwL2vhngQ6lBETs/9Jg\nzcC597lb1OqOWQTsFARGWCcS6zskhgKHUSlIedk2CqaWBKdOM9ywUSkZyYqq\n1Gin/peGECrM+SrRgLQ2B5Ik7G3R42dNRleJDWiW9Le/nYWx/5UF13alOnnz\nctUJxMmHTepvYneqpdrqT4Cu3zu+Z7AQTSxGxC4WxVaJ0HE4wm3EwMeBd/d6\nH6gfenoL1igetJgxCKYSCyzwja8I7DzbsB0m6rvaDANlmPoBjW2jfjSl+/1D\nE+LYSv265Ky71HI05RckCII5goNYl+JN78mhaAtnSGsydQLDb9vnF5KKQjk4\nU4GGOAuJJWTQACJkGTv2AB2vBjiehf2+4Qr8K+8pgzytQ7SAvvdwB+T8g+LV\nYKIy\r\n=For0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBsXffJbB0iGILCkkYLcpVrB1wL5ZmCHFM4oUjHtg7cCAiB3KJ1mWIs3tEkUUoLmGMJyELX5c43q6SZx0jJiCA6ufg=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.4.1_1563813372200_0.6158788861638169"},"_hasShrinkwrap":false},"0.4.2":{"name":"react-use-rest","version":"0.4.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.4.2","dist":{"shasum":"154aa8395dda95ebc51eb4bdfa7e62eb56db1131","integrity":"sha512-RtJ/slH3oyAIYSSk3HiqY9rxWow2igfC7x6ZCyuhjyawZFTuzFMK3dDJBEJY2hh2ATrmtV3CnT9sgyNSQW7EdA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.4.2.tgz","fileCount":9,"unpackedSize":18603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNhl9CRA9TVsSAnZWagAALwsP+wXNS0wqjT//ht/JXtAe\n6UxaksuO52IXgLv/X2Zcdk+V9NK69FUJxz6Q+e0N/HTXmksRuk9vNdKAvafy\nqCrqwHVGiW6mOJltw4ZWYmBY1i61JYkL361Etz54qWzWZHmvhuZwpnXDGTuL\nUTMjQl7A6s2Gl80BTmWkIAPZRrtJTZSmEFgXM1CvzsVvQRdqhhI/CPqf/Wgb\nfsF7mOLZl04HPuwZS7/50YXy6Igb2GbOlbRhk4g+Slzrtu/clBLg/WQbp5SM\ngIQ7ZKlxU7lq1LL536px4gL7w8/eQbSP6LfDujNh4/r7HWin9ApVkfC7v369\nPO+s39m5CR/T3y5Iij10sQvYF5ZdDWVg4e0FUO/hf2LkUwL9OaCQO+IvxrKb\n7ypIqkbnbXqOIPKFzC98+3k85IRSZFO9ieq57DNcMw5CBf3WYWUIXWFMOERC\nK4RDAzGUJQlMERYBzEeoNqgXmnIkt+PC3U16MAkAZCYehgEjJBYLPIwEpwlK\nvr9lET8295vHI09vqz0WetK9ruiW6MUJAiVn6jtfN7cIEL7BbaPOePtt0Evi\nkLCp0xBdtr41jO0/5pHyfiqsLqQkLsLnFBPxwwWsRdRLl2qAB5qOoOwWahl7\n3eGMwQo9+j0cpIEUP7czz5/+6P8EMuCoc23m4olfJf7+hCfA1tdQF/G2BfZO\nHxHS\r\n=0XHV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjcpntSXjs5RoXWEv1mksKTfAqj2KCqQjRsWIX0w2NXAiAmyu1sCAGj9pIxyShZyFmmAI5GH3lbsFXOleMvXC2uqg=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.4.2_1563826557066_0.5675074032354184"},"_hasShrinkwrap":false},"0.4.3":{"name":"react-use-rest","version":"0.4.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.4.3","dist":{"shasum":"116d00d46d024e7fd54bbe25a2ba783270755319","integrity":"sha512-8DfhOVFEeZNZAHGwVBVD0KyhaLM6N9ttPqk+A20yznFsXnn0zn2slWygE3Qg9e8yMlfUZ6iGeM9jLYTp76YfBQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.4.3.tgz","fileCount":9,"unpackedSize":18954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQGWTCRA9TVsSAnZWagAABgkQAIfquS8DHySt4MFrzffR\nkYU7Mbyoj4Q8A0hIRjfutzEZv+e3ueI5qyHAporJlRLs+yMLEG+i0WP+LGUY\nNwk+NTPPZN6zfV7VjAfHTXASxZJbSLLonD4IPobcxQBa0PJbq/+oFPtgba8+\nCxqvA1oReoKusdzuaen8013cC3UuwAwTG2seuca29z0ezOnMNtEbIzNd/MvQ\netEgwsS83Te/il2/aUvXg8eZxiZBFgVmYLj+W6G3wM07O19BXa1KNKtHvp4T\nhX/YxG75HoAY2q43NzCIGSuq0yvuk5jZCAqh9t4fOnUTSqS6tkvsB2WGulRH\n0C0f0LE2xgOtm/Eq9tUB/pYUfK7uAlXpsyLJFBf73LL0jiZMUF4IYgZAbKZK\n/HN/M8Mbqnkfv1XgCXFQFizUT9qoPRk0um+DC3gz2IhKBJGhMpa8adXe0vx7\nVNF5ZnbkrbufjnQgutr4jZM9Z/TrVplrSG8/oVHvy3PN3a3hIVDMR4rICe0a\n1xIyt7E/daVIyDJhHqdcSl8fTHmadedDj7q4LJYrqkU3/PkVEzdYwT3i0QzF\nf244kuMD+uSemszXLagyLPRgT6JTfBWk+DF0Zh1mFerhK9O/OURgVV2xll38\nVe8bF9l6d1MZ0fjomlKxIpHUq1hV7W13vBFozpduI9Zbn6iaAANICpEvHROO\nUizi\r\n=vUbh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIELV6ZtLLx3GlDo1syWQg1z5Hj78QTU5jSNsDyML0GuOAiEAq1cj+SJnSh8V8sFeALX8SXPBz3aBi67J8SF8QWwJNiw="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.4.3_1564501394977_0.007701457674302192"},"_hasShrinkwrap":false},"0.5.0":{"name":"react-use-rest","version":"0.5.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.5.0","dist":{"shasum":"cab13ab71779a617e7934f7fd9a606f4c4dc0d9f","integrity":"sha512-IUuD8D0HEnMjKprN2BSuqnKnN9FNa+cZdMe1Fxe1ZcWMfbsUtgWBH4cdSqiskDGxFu4iZta9tNc+4nl3dVcRsQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.5.0.tgz","fileCount":9,"unpackedSize":19649,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTyk0CRA9TVsSAnZWagAA8hcP/0CdK+xQRtBbl+yQBoBB\nNgOU+BBDKFSDjiqABhtFTW/wYX2pSO2zWnr3LGbw4a/RZ7YMd6c/3c05h3xq\n/fP9cGui9V5go8kxQ7A8qA/7wbAajz5cITcQYsIEGq4BVD1PFnh+4SBzRAhD\nRWr4/1ioov07uOySXwOjzl6XSsKkugJy+TNRUjXAf70C4X/dHlZAubAAwYWU\noKyHpaQiyJOIKJwffa5sTtlvjisN2ZO9+7YM0vPW+2Cg3HcfrI3vKGhI/Ris\nfD4WGOc+szulUs5ZhO2WsbobsiMzJhfdUImm25Q/yNUyj6GVW3O+VvKm/lmt\nOcb7910kXuI3e+tBMYKy6uVx6O9PNdfaJolD8MIpoEN28cWYEx9IdzE++/KP\nJEIiohqjI7CPFhdwy1a6WVUmfREHoZL27oPM4/HlaPOI7ow3QPU0AOrFt9pW\nuF3cyc9nkDGWkTTS3GShU+TOvb/V7JkHQU0tM/UYBuDGo3PcCmN2ehHuVnJR\nqK1jculDn7J9n+uUIuR5qaTaJ6+r9bqkSXDKJnLV5GtQMHbkupZ18aq32KjO\nMeehVvQmHHyu+t5eg3G763/ZM+ocfdIFNAPgausnBBlePtaL3Z4ilPTsVpyl\nCp0TUUUrDdv8jihrP9VYaZLzFUOQU7DkMs7FzbCW7AVN2v/89+r7PL4FLLI0\nd7UB\r\n=ypyM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQ07t1fI+5HxQalMnV6Fs67dBCR8TVf1KJYRvw4R9xPAiEAqWmTdo0FnpXmYgF9yGRh8Y3DiFEIZW4e/k7HLFGrdnk="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.5.0_1565468979539_0.9926441113093327"},"_hasShrinkwrap":false},"0.5.1":{"name":"react-use-rest","version":"0.5.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.5.1","dist":{"shasum":"1814e14f7afde4a17119557307578b86f988cea3","integrity":"sha512-BQCOCIw52Z/dYhyHAivQu2j7PDcXcdPzRVYszcOynrm3GcI1aSZ5SdlqSdS2wjKD3ltfwvc7Zw9nerfxH5cKQw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.5.1.tgz","fileCount":9,"unpackedSize":19658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTz5hCRA9TVsSAnZWagAA8usP/2BE9B+03F3FpZ3EJwsq\n2uxgx3L0hR/aDEpbteUS53NFl/Dhvic46uBmP4S8JDN+pWj8ycUVd4ajPv4x\nc5S0k1bdDL4IHao9HnQdowtfHpogHFw70uIZkIPa1n34O59nurM2SShah3u5\nn5Q45zEVw6UYmIj1UErzrkH6sWsVH2BzH9AJEBnIhfyZ43uqs8ExUk7Kqj2S\nxn19GEbYOOhZVk3oGBoxqofE0U75jEyM3//wxZydjKZSNU+Sdgb3aYr7oIlR\ne8tq3xlL/IBYzEz2G+V6rsBrF2ylQOk11nDuIGzJ4CHWOzLiuJQbFELAaYmq\nR/54dPNYbS8y53WEmmgt6UomSOri7Vv7xacICkL4odqudI7IikJ/ucjRQDvy\n5gREwP/IfTDRT1KBdIUYMUIObSW6qizazctp9rDg/74AqgRwGMDkw07CjxXM\nJNaFk1Mstjyy58mGV0+js66Fs+6ps/BZqS9WMvQQ19m9BqQjo6G2hfM4R6M0\nTe19INYx+Ummdr9/jdwOs5XZrKQUReawy/1nQf6SNrEVCkK4lnUxUhEEwRJp\nrSG3t/ICbTGJTHfQm/tSt18qvNrRFc9B3+HsNk/4LrJfP8fNZlmJqR+QYLE7\nTup+vmTUhwEL2mgihP18f3SsniqrpPHYfYzLL3UiYbjwBZvLXSGcuOJLoxOu\nksJN\r\n=u+Zy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCItrv6BnpMJwFQW1X5sWkV5VYOi8JgyuWoYpnGxG3L3wIhALmSxgy0rHuLVGReDnN0uJP/x+Rq6+2BD2M33HHj1Cpm"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.5.1_1565474400932_0.11909453574788853"},"_hasShrinkwrap":false},"0.5.2":{"name":"react-use-rest","version":"0.5.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.5.2","dist":{"shasum":"215c474b0eb7a5ae3b30c8e01c85b298eeae1ee9","integrity":"sha512-oN8sWAnfgThbJ8ipZYMOIUuv+x5999DyaH/1TqWlFkv7TC903zJrYyk508Po2tcz0j+d1gXkVZxRyfZ9b5/MBg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.5.2.tgz","fileCount":9,"unpackedSize":19631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdT5FiCRA9TVsSAnZWagAACKAP/RerdGd0Ud3LrildqXHK\nDGwqnoA1OIopbIMI5o3se71nZO6tFh99JsEAJZg5d8S1rBGdxgXZ1ugiYRO7\nPhhXq4psBjJUFnUMUriQlcFIOVcdiZ3a290sh/InMUyI1CTqViiZaY/WRYl9\n36g99xk61wDu7Wv+AI7bk1ciQEAjUp55bHG5Sh/boHEQaeZyNECfrnN4/9Tu\nyNkBTkkYicb/tbjZQRBZUNsPjqXUIBSk64B+74VQjg23TqIW83iZFfGX3k0G\nA1gyosXwc4yv6fcFkWUI5n/U2kap9B3blBtS07u5Pa2oSkzJdL402MhEyoln\n47xiQRQC231tN+8WyK6HNbHg5GvfAvsN4qjr4W7mSr1PRAX9jeAQ9lQIDTko\nkjHWJkTucwRw897uO7rZEdJ4DzW/50+YKM5myK7iSX9N6YywnkK1oTiR7dwG\nOU1FAZeAHLsl4Aqwh+OERpah0YDQPtJ+PxLHzZVHX9xvIN5COybn2j5sn6ne\nZCPPIAu8/Kad9BlUV+B53IHud7EHgAdkbUlxYSICU4QKLZMJ0qolIHDCvzFQ\nGr6/d1whT7QJAiydh6JqZAIy+xFA8a6DHB0+9pbCNEQT0nhfp5u5GSzudKcA\nKuPikPgJBo506uUHktU819bGlx7n1iYOGFHbiCRR5Ly/FRArqAPxAEme8eqs\nZZfI\r\n=3Jwp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2Gz+xDNGGKvn7eI3LGNWphiJ6LpOn1VNlPeE6lyR6uwIhAMThps9KWyWvRqWBPRLq3E5zmle15IEuhy7W9yA4yRT/"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.5.2_1565495649363_0.10390078288281601"},"_hasShrinkwrap":false},"0.5.3":{"name":"react-use-rest","version":"0.5.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.5.3","dist":{"shasum":"0058c8513819082b6e58b62ee472f40eb41b3fac","integrity":"sha512-HrZ1d3POxCG/bwCaMCwlujs4LC79uEvr7we4T2ufhMMggywBYPsBhV0XOEcMnOJhU9aRo5nt1MOdHNCVzjC6FQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.5.3.tgz","fileCount":9,"unpackedSize":19637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdT5OSCRA9TVsSAnZWagAAe6oQAJLoNlg4Ofu5GGpxe3Aq\ny8+5YCduFWNOFfj8SeL6uTVNYE3siknlWdjapdK+2+MjFEStdS6ukktWx6Dl\nDrK4EBR6B74EfmuQosk+826UhwCguAtojk9vEsyZJiw0n063IL+ypXNuFtUe\nw50jQMUB5hP14y1ZQ547vLT0tK7nYbfXZrPipYfK4aDE1IAj2m+ld1TqRsRz\nJntOyFtuf5T5/sXuv+sA4MLbLnxC0RrHCAb0YztW/9NCffiUXh3cPJLIhiel\nc821dMWOObpwP449RoYIHl9EnZLkz5YUiqLBUhCmgfsB/Nfy+XPilwCSxjBB\nmApBtY8G+fmj+PAoOwdrUm5ryIIWGKl6GRR49JB8vqziFiZaHffsjJY2qewb\n6GS9lIeKYHRVBbc92au5M7QtN6+jsT3stv0/yxSZKACex047SlsGwFu6UOKW\nb8cLPG4vFBSh7zuxbSvchiPMspCLUXRweKHa9VeMYolpY68819BN+ybgp641\n07/npc4KOh/oKwp4XO7akiyHDlTzOjs4BSwd2v5/tMwjZsqpUau6B+R0FbbV\ng1iPR50c9XaYDcx8XDJXzQTMx+BMcfLIriQpfVN8lu4VlRLw9I4Mlhzvt+Vt\nnuPJfpUUW6c+Iw6h6P6ToIUESBnqWYe4MeWI0TEOfRgubyHjicBEEzG1d3Vh\nKSay\r\n=JKzk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNVS815h/rz3LaTSepqkfulSO1KPt11bEfahKFhm6SowIhAJRP7fZVoE8s8CHqAu05aro5P1frAba145xyXIe0r4qd"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.5.3_1565496209616_0.28265578450276574"},"_hasShrinkwrap":false},"0.5.4":{"name":"react-use-rest","version":"0.5.4","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.5.4","dist":{"shasum":"a32cd4f5a37ef9c5029a2ceac26b34f01b5801f5","integrity":"sha512-/OBojTa20bLkn7WUYhq7sPPkpF9EQ9wxlD2/0Kcwj+1lui3stlPs96y13t9XwfItnGkPvclsUw/Utns2KLYgzQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.5.4.tgz","fileCount":9,"unpackedSize":19663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdT5+kCRA9TVsSAnZWagAAeWoP/AkA4lkE65h0vw+tH+2o\nmDZADP15NWpRUVtwva07vMJ3AVG1yCk+paiUn0xFjq0HAuXAF1szblNN7yue\nxDULPb83YPTfxT4jPZr5kL6supJm/Iev0DKh6A+ZnMdRGClvlLitMa/Vv/89\ntmi+9eLRlnOLkk/FFJKoXO0xsWdxVF2nRF6DIO4nPtAMIPcudkXB2+DxFRtp\nZwV8zhUH/0px7gbYe5jIUHaV8kbNIa+AUpCxJ88Eq7Y7W24ILDZAS0YmGgdQ\nB63W+pqA32f80Dw38kKFOYUTkf6m6QjFWESGAAS2r8qx/bB184n2d9IOwTuI\neNij/omtw/t7N3yqy6qYo4ndmSSFABF4YfU9R8/tFpIq9JV4CBnONQN1Pl9+\n0DwPenqkSuG9tFe9OeGaa298ND1XR/IYPch6d0yNo19My6MBJ0cdefc6oUVm\nlesAAxgDQyLcrOey3KS1TXicARkl6yzXKraEYKxaNRs9ss8NRJweAtpO0LyT\novxUxDuRGep8cKIGJrJGfBSgRzir2L6QjDkONavWTdeWde7mSAERQ/Se0r3I\nmbqmR8I3LtoA0s/+Pa93pzE5rrT8YUd/qNmzNQkHD4SAmDyG2fHDs9qMcdrA\ndJBDlZ4IHxxfW4pNkTjM2V56TxKTpMLcJWZOMzUylIYSYuIlYmPCT5IVvhFH\nyQhE\r\n=C0TA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtH6GmeRq3eGs2vVNCQoon/O1DnVqebqNW4OOnS0/A+wIhAIIKVD7dD7bAYYz9pQuSmqh7GW+BAGwrnjziztLAemtZ"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.5.4_1565499300042_0.9555114535819722"},"_hasShrinkwrap":false},"0.5.5":{"name":"react-use-rest","version":"0.5.5","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.5.5","dist":{"shasum":"ae580e7d56d592f0cf325a4a0cc795f033e1e3f7","integrity":"sha512-lcbEf8eYyH2gk29Ldp+ZMFj/CDr0XRYlFcBfR9mcdUsHCWFV9J7hzMI/DP1dvK02xsPmIMolLBfMPq2mVGYa1A==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.5.5.tgz","fileCount":9,"unpackedSize":19773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdT6TwCRA9TVsSAnZWagAAicsP+gNlC3F/EXTIuzeLpZSE\nnkS8SM7i1yjXqswLEpquZENhpxbGtzsKQ4Srv/M7aVjZYAMZXK5cE6LOibjc\nY2PZdQcukugUPJDC/5IHQCJEktHcYphF39t2hPX1rFMo9q5xSkdlBYbOIy1C\nXwr/Im7K/FNuDJyOi+pCduIGjGhW8jmwu52r7TRRiHzyo9rJqNMgNUYEkpDb\nqIXPzGFDK8RgQt0iMMw9zQg+cT0TmCDNK8CdstSy7FtHDpCyjB5FYXLO9Mwl\n1y01ST/0OhZzEhw7+UHKLAmzTSrWPk8ds0/rw147r5BP3hRZ+x/PvI75IFwu\nLmDpzrrc/xbI5BvWNDvCzuxMnnP1BMjRJ0Jvr2JSouwcZkqMUa3V/12XJ0QH\nWJ6KXjRO2YWpnWIlEUSA37xy4rVLcKPbwn7PXs6ArRu4qHkO2ZF+4eFLB+lh\n4Azki0wkuhNG3sQ6h71FCBTnmLAPwO9BEc3iXN/B1Z524iolDofiECmN29pP\nwaJDPMrfcStsuyc3TSssc3WAqcktqIFY1PsVRki69lMA9N4U+kXWGzUukXIv\nVEprJrImZe0P2sch5C4VvCfm7u//FpZVzEnXf65ZfIq985ysf9HNcAiAQBl1\nRk3Lzs8z5A6BJUuZ4LIVkOGQI8HL/qc4lUZcrV93OZDDaFzT2ZTKLULREG5O\njaQ0\r\n=FU1C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1JmDPvJZ+/ZdQiDMYjT4S9M8uQQkKLOKuwGoMV5OttgIhANHTjFnAKfpCyo3lVniFCsAlyZdrXDCFHBFDioThRtbF"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.5.5_1565500655506_0.9295830689691067"},"_hasShrinkwrap":false},"0.6.0":{"name":"react-use-rest","version":"0.6.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.0","dist":{"shasum":"1ee07c9a48932affc9e649021cfc55506282bb15","integrity":"sha512-iyJUdgMERQqIDu4h8QOdZaad0Bbiad9Rzx0mfFN2r/ZP1EtkRJvxwDuaL6mHcAyjmk+yCEJivVc2O8J3VJpJYA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.0.tgz","fileCount":9,"unpackedSize":22032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUhoyCRA9TVsSAnZWagAAGwgQAJXL70ZJILhr7YlbQgAg\n2sNdu1I5REpATDVcovgvQTgK2+xQGqCfKuRwhU6BqbdpO7D2JytZfMWbMWjD\n6DTxIYKnP9D3/19XE+y4Bx5cJOSldgbTy1grjHvh9TADhkLkXJVaGIgOSVlI\ncDwWmfsJs7f0/tcJm9FOk8+yZf+a4q6EZWswbtxxiaxBtZ8i4TNLevXNVfnU\nomwk51U8LfJawzYNU9UK49N4Nom00CCZ2yI+vgSjjW3svWrJEfwOPJ0aKclT\nT2J97fyXeV8aDRvtYwDS7zLNtJJSQJBcftL9wuh71uWoD4tRAWbwrXOaFYl/\nONzUG1hX2MDQH04/jGJlVGR7DvXJNH1DTON5kpDADJfuQBk0jooqLKgznMNj\nMR8OKg2kiFM3X9LvIoG43Xq+I/fDC65FQQAarKPN+Kl4Z+q5kdwX2O7lrMZV\nEypf38jJPVo3JMy4MzX2jZJiYVlDaIcJbdsEb8Fzycnd9jyZjvSPFVSTiuOI\nEgONTMzcPnVTQlqIx+VgN/K9WvTBhfqvMEbs8IEHRvraxFqK/Q7NPfGKzmj+\nPbd4OT8WkzZIwkt8pBAKgJRihdJeZGv9YEkE8B6Jp0ls9wt+A0j5mfKUphWz\nnnInu9LEy3V91PEUzvNa8LruLqn5KguC5PGIfne+R5H9gq2CaYwGJK26iu/f\ncdYy\r\n=T2DO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvkuuYxXFsJCZcl9zIF7cYl7k8pkokNmtzawwBWMzfDAiEAvGPfblFfhnepsGDTBWxIA3pPQrHakWU+30AlYLOnJOo="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.0_1565661746223_0.7906303474343053"},"_hasShrinkwrap":false},"0.6.1":{"name":"react-use-rest","version":"0.6.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.1","dist":{"shasum":"f92556b77c93b2959add8fd82a74b10bceaeed74","integrity":"sha512-avCSjzOLTgRD9TW+3EZ6VmfEBQ8894OGq5Nrz0zw6zREKaoO5EKMtAEiVoqgixILmnsFoZIzGsZm1KrTBo01ag==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.1.tgz","fileCount":9,"unpackedSize":22094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUiXsCRA9TVsSAnZWagAAcLMP/RlvQihh76mqiDRNcngQ\nY5+BJsJgzbe4M0RCEOoOfkyVzw1jwSFLB1ZzDlrY90/aREJ1lBrzFRHX7FMP\n2B1fexXvV0c+ZfDGpHKDhFb4SF0lkjHMkCT8i5G1JhL1+ppHvwsxX2K4aaMN\nz3nK+oAdfO9uYrLPT6QjLov6wsRFOdN0ptLE8+reSIV7db7IWaObBfqWjfPT\noSwNtZgnVFu1bcw9jxLjqJN2z4JfXUO42waTJ1L4l6wmodMoGo02dyFoe2ZG\n+xnoQBp0xgaYwORpJ+gQSUeat7fBSmxPG137nuGY54o0v4HQ4coO/mUiYUsa\nSmGt7VzbfVYVcz56tbaVIcje77Ly7tBbdGVf6EflBMgkcsGbgSKqoNj4fWbW\n7icKvuX+u+vTnJ08g131tR+wbz2XU5rRP6gBDq96sJAl+c9actVfpR1Lkc5i\nrPOWV6VdBh6mwItRryxCsMPmHm4Qb8615yKhBoWopkmJnIB/6WhRulG/DtIW\nvuB43nyDHd4Ye2RGq9BO7QngA2BmGj/neB5HSQQN/E00t1d86/wnFECIi1Et\ne78IUbVPtYlEb9wPZzsJ4zwWhAOQLryOEkYZjkkG5Don/DL/Ug7sof/1sX0r\nrJ5eGABt0Ww2BWBWyEc04X4RXV6R/2PBm9xYoHAw5OX16h0VfLebw6hXI8WM\nr5H4\r\n=tdZp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDpOJefsrC+HDbUWMjchayz1YLX7hBZ9GvQkeqWnqOVJAiA8MT//zEbWI1CuFMAQuSIev1omjRVdZKQCmLtdBJ6Lhg=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.1_1565664747766_0.3660002722294837"},"_hasShrinkwrap":false},"0.6.2":{"name":"react-use-rest","version":"0.6.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.2","dist":{"shasum":"74924e939cfe7d7032bace13411784bfba442938","integrity":"sha512-wLEzdI/+PtDtAFkYymRudjo7F1afB5UUbdBaUYYZl7gnEP+5afg7tSPtcnZqDDfFFSPH0HNGWZBAFHgwQFKZ6A==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.2.tgz","fileCount":9,"unpackedSize":22022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUib+CRA9TVsSAnZWagAAyzoP+wS/8DY4Qx0Jf5ejstdJ\n1dmKvOpj+satw4SzQMfG4xJHlAr9xL1LM8ZMFZLR8e2S+YN2K4oi9TaP4D8a\ncHzcCUce/jYFXilDgHpQ2YWCbxfTkSiAMUNh8yhIpfvhnMhhPbxxF0CZvF+M\nIfq1H2tTVpj9owjv1tb/VKJZKR8MUTLb2DfZqObDsryVOkK7NkHwqk3Uauab\nzh8+rmhLM1jsaQraIgyaRREr3FAxJpOilNMfBhm+IFwAO7BeI9TV5ybkabWJ\nLuaGhoSyZxUswShIhA/LD7Mq/9LTLPjActkNl3TJSg+Lz3u5LfuZWASDIJV0\nv12tEB9Wzbg1mNiQ85XM+bpOZ0D7Dh7uAaRf3guNRzeB2Ol6kW2zoub0cqWt\n5KU73P177BDFAe09Ybh2zveM8vFCOKGoItI87/qBH78l0KXWs1MmX+DqFJJ1\nN/YgF9kPUldqHWuGI0umcVbOKIelwl1F/BD56rqfTAhs1UCdP2Bqu2LNpYbc\nHaZcVzjlOKvIgNOLsOR2tGnPCLXNd47yLt7me+FoX+2ACkFljt6cjKoviqNI\nEIBSHwEmZAz3/pyoHSRmHX8Ad1fqoEuP/KeoaQIcO62HnaxB0WCc5xGIl895\n1yansGwVjzOOq7v9iCVsFr2CKJexeyRNMZDU/Us03pvXR8o8CCeQUgIZ5jDo\nYDiF\r\n=U/N9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHUYMJpOMtQu3I9jZH6LiLwUH9dhT/qHjDnEkgvN8B2AiAngmyziB7pBbad09tLop+nHz+fm66Fv/xRPKb19pZjrA=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.2_1565665022029_0.2882193482158053"},"_hasShrinkwrap":false},"0.6.3":{"name":"react-use-rest","version":"0.6.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.3","dist":{"shasum":"98fc1311a8b79e15ca42315d336c60b79032c09d","integrity":"sha512-RfMeZv92yU2TKw1rda+vLK7iDCxugVH7YmOy4MdMfUc/94zDDF7W/EHjnvFrlOZK4xV/FWHkyCzjXUBan9DsDQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.3.tgz","fileCount":9,"unpackedSize":22555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUj0oCRA9TVsSAnZWagAAbucP/RjJgKvXLTYNsKy9irLp\n2WzmSVMHM9ohwqXVJn17xCRQ0ltmiUUm0yTzebjmL8LdzMr7GBOjPT49BsRL\n8agkG2SJ2fR/bmN4wWlE/EtYqMmihXonpHL2NPCzKpJ1SiXcGy77F0dhiueX\n+fofNn+PfMyAsGfcnOEqqoAjNFWR42RaU+O9o7U5jeYyikGdFHxmGvqJavRb\ncsCN6OsMQCPhdzaJRKlLdFZ5VN1AJwULi+yxWimfsOWUnwqU7wD5TtcIA09Z\n2ru8LKitGGztFakj0t8LynIY3jw7z+F8kNDtek9zm8cvTJEHQUJkBDuJCsvN\nzDBAVr4ez88NS0nIkSvfPHWxBOYRP85GUHshNyEIz8EQuqQVOeRy4/n7tRl9\nypwy9LLOkSINKOdow6tmjbIJlSI1uNknsnmFywhbjHavFATFzE6vmpTTa5kf\nIb4Jn8xXKDAEsq+EiT1Xmw7fiUHk9jL4IAejaRWYyhMCRYp6v9Mp6tQR3N4r\nY9L7+Lt0h98g0Bpivo9U3jDtHRhppboG0CrDnP/XTG+SuwzRyvYlJRv47fry\nhFRoprQ2FhbLkXSleTuy9g6USN8vrIi0lzI2U3Ro/F6JhNA89DpFFhi1det3\nrsJ1DMjEdliWLyQL8fwAESEPp+FT+3p54isQ+ewzpJlddLdCgeJMV5M/j7GX\nsZrH\r\n=G5nW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICeBUIu5DhEQeV63/vXUGKXsDn7+BrI14bBT6ZbDH8U7AiBYe+NZ6h+Eso3gBbRAQ6WDqeHAzWrI6UX55ec2FiQ7mg=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.3_1565670695777_0.8453427637875939"},"_hasShrinkwrap":false},"0.6.4":{"name":"react-use-rest","version":"0.6.4","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.4","dist":{"shasum":"1518a140f81c0c2ffd5964cd6ebd172d053ae6ef","integrity":"sha512-SQcjsOlZ3byZDSzconSky5tvJLjXHmjA7mM2gsiLhV4/tgJ9aRz5glpyqw1anV7GUfCmEcQr14r91oDtSYzuTg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.4.tgz","fileCount":9,"unpackedSize":24524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUkI1CRA9TVsSAnZWagAAsLwQAIRr7ZGc9Y2iErw2cyx1\ninxyEveHzFF76OqEXYdBaPC8yBEItvynTQ5cVAVXEOSBa+a+D0pFHXlhE7Pa\nVfXQb8znJowpIBhxZ1juZKmoWoQx2BVy0nHQJW+eNgpz1WxoLJYqnycUgb8z\nqb2jUBc+ax3T4ztVaExg9b2IrRIljWcYa8zYsshfoNfKGlKPhiGcWpG5rFvQ\nplPjMmuU1DUwgLXvsom/v/hw0SecGzz7VeFSkFm2IBuDcfpIyh+Mq1sRaKxE\nQgU4eQrBvkY6bSNFuNUg2830gH0dfRcEM26tquZD6kIVOqcVIWxNIGe6Wj9L\nJ81nIgdJVLceXxVLvzl+OH1HGzFGLEIMYLWOF2EDiyskutkXYC2AB+qWUDCx\nOrG182XWFf0gWbbcDx3jSrM2/85zFd5GYexTPLYSoB0TuAJLo5PcRgR3IJSa\npTaXwwSlPFZInqLPaeWv/3uHHwoHckE644ENrNQ1r+1fkZqWMzMD5eGZkj+5\nss25Rq6I69Zn2rtQqZlv1haH8tl1ubsJjGNE9sl4IJlgEW/00wZ/EPmpspcn\nwrwfaF9hWPPzG1hIlBBHFmoU07ASjd+kihTv1JeNJo13KA14MdScxve0B0S9\n3JCmuLEcCsz5BwOkyIoAefZ4aamr0eCRs5QVHW3LzuMphKI3hsR7iAxd2sjB\nZeJm\r\n=3yZP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn+ennioaDfgOqnfpq2fNk5XBmS/AiStCU1HQkg1sIQgIgJWWD4gT4oxVXDuYM4UOZt6+MpVx3VY65rkkfslhJM/c="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.4_1565671986968_0.8282918449880745"},"_hasShrinkwrap":false},"0.6.5":{"name":"react-use-rest","version":"0.6.5","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.5","dist":{"shasum":"13feb233c2a6fe439ed43bd2d5311007f7147861","integrity":"sha512-TOUwwUpbHr4ocVKQ6YdfHQrXJ71eatv1eMmYJgeZ9i+BcTx2M0dcVbiFDB0Om46cfCXjgro+jocmrJYV6F2Wjw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.5.tgz","fileCount":9,"unpackedSize":26322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUkb1CRA9TVsSAnZWagAAwQwP/1EmI6dO+f2Fq5pQqffp\nP3VDLwoCTNhCMk1xIfsNIHMcybq2Bj3N6s+EUG47OCLnkey1ho+4phqpUFly\nJmmIf1K7ICH/ctfaAQOuL99f0/QRDUlTqUBcCXynecHZGJQvUjF2/hw0QWWf\nY8IS+CoZpdpoBNDXDrWC+OQjAduPv+v4KSLyvKhmjakY7Vg44T3IqvQVzslo\nEzTYlyb5JekJh0E5iiBCdyrx/UP/8W5Ho3F2jMjZv5w8GC4mPvTvV0AH/H5+\noVMXZjVNsa+fMY7NygquelsnE8pztHQLX5Et6j0QS/D6kEofjp0k575gfqXD\nDa7xPl1GTqwoS825QVJeSaa927UV/gbKoTaMNR4ZD7WXVGuHqQomuuF4GkHi\nasEdlaVnPZX27BJJg0P3YvJtVt4MdImGC106mlOhFkp6us2naLAEwUkzmB4c\nPbudaGcj1z9rCMRLSp6M9hQaRelNCf/Wrs8IwShz4+iqdh4ObH/p66gLq9cZ\nQzYsBPs2nO1ogtQ8sS/V1k6FfhYtFK6IAnV0MNP/xb8VmcrzpNEcXO7Dsjnp\nWhFqUFQs1RhL5NmcMIV3QKv8x+cjxh2JO4lbM3CJ7Eb4tAyN85AW41jF2Xou\nkJqsD5jRw9/4OiBr1+to4QE36BrrJSaVQq4uj9dmDjQXN6uVixJNMaRzOUb+\nWZ/c\r\n=FC+z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGJHgOf4vGJd+uD6+A0WBRINbgCzvORc9u/DVcQ6N2OrAiEAuUxV8ochBRmumOmqKBqtFKOM3l9nYMgkWEVmweEvO2U="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.5_1565673204854_0.20958446652045737"},"_hasShrinkwrap":false},"0.6.6":{"name":"react-use-rest","version":"0.6.6","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.6","dist":{"shasum":"12a78e01183981f46cf1b09708a9eef765b949d4","integrity":"sha512-rl6IUoS41G/iHJ3lC0Krc7nIF8UCZ03gXgml/Fzaik9hngedihcpcd6vAUu/GmhOhaD2x4kU4+siO7H3bii0ew==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.6.tgz","fileCount":9,"unpackedSize":26667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUktzCRA9TVsSAnZWagAA6nQP/1zv8MGZfuOFaip3dRWi\nr2fIXF8py98hHGbtYAVyKl3KFpuE3+ZLAeH/UqEEAtjcbEuWE86qu0v7lGLP\n2f3/FJHxSf0ppxJXKCuhfvM3jHo7NOL7ZSwhjTHdp/LN2NKweUK8dD9PDUY1\nO3g985pxe5WChim3+AiIQlAJDcpEg7OTCRUs0Jqoo/Kt7h8myQDV1TQYFvc4\n4//yasDb/gXnNuc4sF9o3BU78cmXABB6pdJ2sN/iD0w9bUrjqacffyW+QLJ9\nDUzAWDs2hAhQo9jdvo2lXhjMchtu+k/Z/zcEVykH0rTJSTVr4ipNPzfjs+2s\nHtkXf0GhdsvfuTnN/UqjgZodDh36o+qIsAbVoNJyPa5PrG2X5r/Uapn8RA6v\nIiSLuOQ0dMSdvcRXFQK6ZFSqORJemQHpU5Bjn9mWOdnu5rC1X1yJk0Lp4YDw\nkwjFqr2fJT6sxfiR2G3NXtVfqMlhMZkGlWAOypt0l05Eqv6HuKggbDcNxJhg\nNtIVcfmqgnjzHCWVo6OGKg+U2ixg//BvO4+Vw8ea7wlZ9dlJrDYzQeHT0zT4\n3mH/Eq1/+hX2X6ULxCBglJDvmwDYz/ex54jVFpkgbOUh/ObbkCAnQ667JxjF\nc3rM7QI0CPNyjlgFuW6uAaI4bUUiIV7DIM/n8gc0gygRTOrQAjkTmVvciivL\nHQJF\r\n=rg5R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnbXW4GPhnlBAFFqCUuaDACDJMMXdSYa+e4Ud15kcJAAIgTXfNYwPLgW/jzY4xWhhVmPgTdJ9wI2BFLQ3Hp+cZW2Y="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.6_1565674355375_0.2651232730770967"},"_hasShrinkwrap":false},"0.6.7":{"name":"react-use-rest","version":"0.6.7","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"UNLICENSED","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.0"},"_id":"react-use-rest@0.6.7","dist":{"shasum":"4255eb9b5311d7a13a394f7b732f847acb83bd1a","integrity":"sha512-UAjqNOkpsNCwfbuFeCEmMPcvioBBSlXOu1vAmpV8qgZrloFSEZUQOp2nHzhUQgPIq5KK9MygqRFwNdckothQFw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.7.tgz","fileCount":9,"unpackedSize":26915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUk3mCRA9TVsSAnZWagAAJUIP/1Dt3ORX9lSuPp5C8hB/\nafe9zWQ5gala8buboVX2e9Fnr/eA4V0Igf0tn0lzaC0WL5Hdki7dNmIKoJMS\nRfoiKK41cWrKkjWOgNg2X9VADW/XSWycwEDkjHOxqGnNTXnRooSU3sfvZDeZ\n4klzv2BDrf7fLNGzi4Z3yTBR+WE7czHRNfC2lWwM3o5ZKC4VbZWW3lYhUR2E\nOYRtqJzH4lum4ByEZN09kE5m+Or9wY8YjTqZ2cKZ7EvfCu2oE7SMTBxrx1Br\nEMUtMMMGxCSHLKCPboROD32AfJgUNDuJ1ApY9fHpvF0K9zi/94g2EHYA2PKr\nmp3XM75ELTMTowXIUYzHyKtgRkwhzX5b8MYHKPSjMs0T9EHhYDk8QRnWA55k\ntJd7ynBElRbnnUbzTUzrLUUv053a0/NMkJfZ8wP78rFViOP8V8JPPjUZXCr7\ntEA3Bs5yChxFoP/FDUGIPZ4DWAB4F/BbmGkGneaUtpG3PjvMv7Tu8LBc1WLG\ny+DFj4kgIblgSx12XxfV5MgqqbpF5FebULJ3duvwIWZfG3Iv8kbA0g39UYS8\n6s1S6LMxSsIgzk/5nvsAX21CC6IC1vQXnMpum7v375+sr9YS2KXq4QTMdUVU\nNmWiJt4acvAnWksE4Rf89wL6Ow9nvNABpn8EKJa0/sVhLBlBiN1OCdPanZal\nSE9Z\r\n=qFT6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9KbX2s93ebNqLsfPwjMDQ0yESnECnF3Y+izpFPHa2GAiBsbKPAiVXojzI7kT1iCVP/0kHd6hhIprjE8s+mvf0ekA=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.7_1565674981565_0.49138678403249725"},"_hasShrinkwrap":false},"0.6.8":{"name":"react-use-rest","version":"0.6.8","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"_id":"react-use-rest@0.6.8","dist":{"shasum":"8e17546256a80efa756299b1d41a6428f608788a","integrity":"sha512-MwKQjou4JUSPDGUWSSskEkjeyvsTH5sGmQjtnhOvQYkU9ye7u2dtQUmknq+9XQVvd/1GpK6Bs/hiJaYeoDAkCg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.8.tgz","fileCount":9,"unpackedSize":26990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUk8pCRA9TVsSAnZWagAAxv4P/A///y4ILOZhWhzS9c1m\nLFIM4z+zHqPCRpKFy27yviN/18tOhNJxWaT7O5S6eOz6m1PhbA05MROm+W9L\nukfF99ZmFVEMziRDKrbQHagRQxHJSdQRjPDKcHYUu8x4g0YhCzcWH/sqHy0u\n/9Ys6UvG2zuj4Q41tu4oo1jEHPmC0ex1tx+tgL/P9MVlSWTwV8SznAirG/18\n3qe19M7JLtAjXojAGJ4CKSTAY5PGTQcy9ZFfBqliFSpp1mPpg6GZG5FjwlYD\njJPbBQ2ZjT+1/ChmEx/w84TVBXW77ut35R73VC9mI1V7N5HU4hzz5eX0V3HR\nDzu1ByPD+lIwb1897qY+8GunJuyUr2/SDoS6Um2enOZOIZGAsYIgwjndpSs8\n4II1T52FJIX6hu3b1PEpeRuvJpyC2a0YrZckT6qWfYRqDtsK77NJmIxYmy59\nXCp0FUgZu3jOWNxR7TdUhEeQmnXzPOMaWUIKdy/vcjNfDrz4H1JfpNTIu8cy\nfyIy0OxTSe2rUD5e/Z6yBv2ugoPI5IYffOKujPmx07gDDYd/+vEQWBFkFaAS\nGIiAeXntqlcg1g4dTgPc7R/Bge+oxdMpi0TklMc5uY7qWupnzTwogFWCs2OM\nSJYpaLdT2FA+KI3cJtyc9ndLCum5/vTSGT6XEedgqfVp4nPozhJbTgv+KWLO\n8xop\r\n=EP4c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD19LlsTW9YKouFJKFdc5cExtkw0CxcEB/6vWvwmy0q0QIgOTOmwvnq166UDvacnAW+/t24AaHL20GfWg9ETR4H4GQ="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.8_1565675304606_0.29319479871320286"},"_hasShrinkwrap":false},"0.6.9":{"name":"react-use-rest","version":"0.6.9","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"_id":"react-use-rest@0.6.9","dist":{"shasum":"5e0d308cf89e8704b233204b0c46fbcf1d0b4866","integrity":"sha512-8CJ2ANJ0OW0ATC8ChlKHizK3fJm3iRhb8x9mbQlz3I/QPw8LrPh2+RI8+rzTAPGBJm9G7qCp9rBxCsfNag2Mhw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.9.tgz","fileCount":9,"unpackedSize":27186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUv+6CRA9TVsSAnZWagAAPBoQAIENs22tXDY8ngO8fHZv\niMDGsXGvTyc7Gwb0D6zQET8UIyMmSRgLhLznU+GcZiooilSsA4R4tI9RPz5T\nsrDK4UyTHS4S4LSYYoJHVrMCB7Ir/J3Se8CcKB8VmKUI6ut1Bkiw+BcJWi6n\n7n5P6WTY/u8sb6qDx+UH+iQPcMFBKkCSaIc/p+KYAUcDUhWb0mqHTx7RZA5I\nq4zRqXbRE1CFUsFRD8dS+MArYn9wqZDmEy/ggcJ5wqswSat394T25sPBOZcX\nvTOyvOOtaP5wzHAXpToYrEWHbKJeethA04CD30SC4kBXrRInEojHrkQBrBSr\n+OmEO5SGf0sBEVCoL9psfYbQyGcg7/xX0DmgViDV6kWTUA+Y3VsauB+/gKDq\n9R3Q/Tl4Gpr4ybQUiUrtCH5HVHn5UZ+LAF39siQrMXIdMgbbexnE7kWdmOJ/\n1uHKEpB++RflhEcgIokA7+vNt0MvJBgc1wUX4y2sxpO6EHbitzXcsNoPfaal\n9MDqh4Tx1UvDsbhHKjHGHvM/Ft01DmqziEDj+Te0ltY3hyMuJu2e1b+cxibB\nCXOR2ETnCbL273skrqQhZu8yHU33n5VFATbIVUORKDoB+YHiWiL0n0/wm+JL\ngq3CltoDZ0Ci/CyBf8gxvPyrhAXO04fN27ZntQadCyrrYE2A/DL9Gb7rxFCY\ntpgT\r\n=1AeQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA97XnnU2yVvAD62aCqjwRx2o+F55imMQp56OmiaXMK/AiAQSQ/sApB9bizV6pXESlKd7TXYvy5SUG64Y8D6KxJT+Q=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.9_1565720505674_0.06962287875347273"},"_hasShrinkwrap":false},"0.6.10":{"name":"react-use-rest","version":"0.6.10","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"_id":"react-use-rest@0.6.10","dist":{"shasum":"ee9d8b7539fa9cbd4d65aa87a4277a73706401f9","integrity":"sha512-fqLhpdrE2No4Zla8TyTcSAIGVoTaYgdtrsy46u2AZdDsmCzqEgHoOdG1fOtDFpin+ex5jfh5tnsyZQulIXDpFQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.10.tgz","fileCount":9,"unpackedSize":27311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUwboCRA9TVsSAnZWagAANq8P/2sEomXwLJuNvYGr45Ls\nmKP+qlC9v2pKhSIBRyhzfnzfIUeTwg0+wv+cj3cOT9/dtb5YGyYmyPSfzUpU\nAem8XweC+ymTvd0kt8St/9zB04Q8gWY2oS7gm/0OToVVZtRXL0UAc79Rjgqd\nRJ3UOmkmQE6WYofqC7gh3hsmkNsbj8sCWWZ8f/SnSX/1n+Koai6A1DOqvvc6\nbE639acH4jnT2YvZh9RJihytFaBdc15TCwEj4lg1dkQ4l5hI4fjGcek1E7co\nM5tvzuCedYqjhMXl4tJxfinURO49HvAtN1K19jaXitLGX0Br3jB7PnujOCvo\n02DzVJe8aK1kuFO23arpw32J3qDRQ+THM5b/JgCnJSHffu4Km8Znis8gytqQ\nI5jDE1/pWsn8FHdSlTGGH0o7pCTQKmPg2w4iUIlN/GxsmU7KqPizfEO4ckfZ\nsajgQqlVE3qnUxuRbF3C13ic3DosJgEcFYygxjefnCwPrGne105n4s9TcCMy\nLWyPARhmAkAGijlOi5kcJTDZfHwrjXVAWBpCYvrzCU/TIWz3Se39hSjx5Wki\nY70h718IMSIGu+TQ7SLM/XSFFGmmjXJZbeK9xY8Kaf66hBZLsdiECJLAWf8i\nuTxOrCrgoGShtB7GlK2usGKJWrtpIBSFQyqGcz5C/ZKDoUGfhp5tJCAjsnZi\n4fta\r\n=S+/j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBqUgWYNkyZsH4TMTqkW8JMtzRhp6SD/zaU4/FQJ8Gw/AiBB8i7hQNDiVK2L1/HCEoQuCYHUG1yas1vSlkjcBzjlZg=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.10_1565722343451_0.8293386591405416"},"_hasShrinkwrap":false},"0.6.11":{"name":"react-use-rest","version":"0.6.11","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^1.1.0","jest":"^24.8.0","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"_id":"react-use-rest@0.6.11","dist":{"shasum":"b943e6bf3c0e6fa2e4e8f3fc8ac45253860c94a6","integrity":"sha512-1v5tfqUugICkvBQ8P536nF49lrAaMserJjZK1fGSVV2NGBiOb32rHlzBF5cPzCalo26Ka8fY+LdZi42YNanXkw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.11.tgz","fileCount":9,"unpackedSize":27380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVDGnCRA9TVsSAnZWagAAZAwP/iOczHNx38S19QNvQ8Fo\nLKuLmnr6P6JuQxkfnF4XEzoTUxYh75EwAKqj+cgHXM0GWhDY7l02J7W4FZgl\nhYpmI1Z3duNQ57S0orY1nqX/SAwjf00GDpA+bQzzE/fKBU2UssixZGSloL/w\nHd8Bh3ybkRrRbJU9xEV+DgSj5UvH3DPsoS05XZYq6ESWhyqAR6V7bOhvGVFh\nxhkJqSOhTF0eQdqKiEyTBqYsnBB3gqsmvZ/qNwVGrA9qYt7Pg03rIHrNPxnN\nkEVtIv0qPXTXw/Ei+U+OqqNKEf2mAPWvmyKfk+HuXdPq7+b4LDt3yveEZG7O\nKm3dYAbM8GXVt8OtuC+swKCne78/0vWZjnZOJSh3IdRRjNCXx2X5vLDPy1Q4\nwcg6BH2ElYwXgkgUjqg0g0AiGbzWI68HwyCCmspkqo5LYSkTpzMkJERkbSWA\nXsYt1TwkZja17xoS83him8ggyt3Xc86LGDu/ispQutqIHqfvkVEO9UnCkNyg\npmurutJvp78dcNtn44IzrkObFTS+YoZzrB72zcX0hlRDsgTmcjCPHJhtbikP\nQsiz8glJU46SyFEvCVDIHus9zpyUC+A7Zt3MwywF+/zstRYS+Z+rGi8OlsTg\ntZdmm9+mifeOlPvvtsQJTqlIP5p+VqnXnpRGol6PD18ruyfxg3GaJliCTF1L\nBfWq\r\n=2Tml\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO5frwV9xFET25zmtiAnV7s6kflPHmGjnbyjv3HobwYAIhAIBF7efV6vbxpv6GE3Glr+p7iOyam0MbcwgR8KEuBfXI"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.11_1565798822497_0.9859226763294695"},"_hasShrinkwrap":false},"0.6.11-next.0":{"name":"react-use-rest","version":"0.6.11-next.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\nReact.js data hooks for REST API endpoints\n---\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n```\nyarn add react-use-rest\n```\n\n# What It Does\nReact hooks are awesome, but loading and managing API endpoints can still be a pain.  This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n**(basic usage)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${kittens.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n\n## Example 2\n**(all options/returns exposed)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // can client-side filter results (in case your API doesn't have filters),\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n**(chained hooks, e.g. collection and item details)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [ selectedKitten, setSelectedKitten ] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {\n        kittens.map(kitten =>\n          <button\n            key={kitten.id}\n            onClick={() => setSelectedKitten(kitten.id)}\n            >\n            { kitten.name }\n          </button>\n        )\n      }\n\n      <h1>Payload</h1>\n      {\n        JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n**(generate and load hook dynamically from props)**\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') => createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return (\n    <div>\n      {\n        item\n        ? JSON.stringify(itemDetails, null, 2)\n        : null\n      }\n    </div>\n  )\n}\n```\n\n## Example 5\n**(redirect to login on 401)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: (err) => window.location.href = '/login?returnTo=' + encodeURIComponent(window.location.href),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${data.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@0.6.11-next.0","dist":{"shasum":"9120bd8fc79e8db7b5f68d822e546b9960e1ef1f","integrity":"sha512-GvUa1xGAZ39VyutYApYk4MBc4/2CsumXQr98fz8odyhwm0G7ivtGCu66+xzkfJmliZ11uk+Xz18bvrBzJ20DXw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.11-next.0.tgz","fileCount":9,"unpackedSize":27632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZEAOCRA9TVsSAnZWagAAQ1EQAJqKkBv5uPkdW1StFLz4\nIxt5Cq9gt8zTzW911UWxWy5Crdx+SxQqjwA8WK4AoztbxJ9EuFLkF+UEFjlO\n0tEMgQBTqGAZ/OhCov/RhIpOpnl79JWGNFOJc8tYsWRvMQhIiGMn+dKbDKEx\nTDVCdi55rkL2thXNMhdmeKMgBIBPzoD/jd/Qx8zxtVOdA++m8bPVhyB0Vzy0\nJSlmMb4GR0hjTZOtKSic8RX8QfOyX7vSufnSdMcLGQ4krUQJQHY2xiC8H7zG\nDSeHV/c6HO/njLSpr6p2m/JE/vd5ligGX9+whoo4aPMe+QlOhwM7wJvdxvP7\n/gfx7sQ44Omb8u+rkX5h8DC0Pthw+3OVT9l63OAW1BygI4aN6yREjG0lD5Nl\nOFE1xWnKPAyxOZCOPVcJQ2GBHetVul9NZMybIlXEi/0vbtjHPxUR77XDNkTR\nk3rjAVNIQb8+bwvwPP42aIFi1yx+DhIW8kTJIFXg/bVC4eKfBPwplvLI25oo\nmVYHrISqAHgsLWqkdl5ybbry4/L9riGeT/Esvy+bIZcRqov4SerCp2mbhESB\nfiddKREoIx5COgoE5Dti3gL5tAyRegvvKezMDxPTpak3moyTaD/beKpGyfNX\nVGCR/gBJx/cBfRq1tJhYMYazgjard9m1DEv+4TVeRY5RtPfEmCpXvHf9cSqT\n9w+K\r\n=sG15\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcn+eZxDwl/r9uHK75eShu5JldxnbxR8yKqkkLDnYt1QIhAIyfqMpacfVAHcSwNDaZ/GCnh8LxaiImYVs4yY6mO6DP"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.11-next.0_1566851086343_0.22135378549876994"},"_hasShrinkwrap":false},"0.6.11-next.1":{"name":"react-use-rest","version":"0.6.11-next.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\nReact.js data hooks for REST API endpoints\n---\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n```\nyarn add react-use-rest\n```\n\n# What It Does\nReact hooks are awesome, but loading and managing API endpoints can still be a pain.  This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n**(basic usage)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${kittens.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n\n## Example 2\n**(all options/returns exposed)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // can client-side filter results (in case your API doesn't have filters),\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n**(chained hooks, e.g. collection and item details)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [ selectedKitten, setSelectedKitten ] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {\n        kittens.map(kitten =>\n          <button\n            key={kitten.id}\n            onClick={() => setSelectedKitten(kitten.id)}\n            >\n            { kitten.name }\n          </button>\n        )\n      }\n\n      <h1>Payload</h1>\n      {\n        JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n**(generate and load hook dynamically from props)**\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') => createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return (\n    <div>\n      {\n        item\n        ? JSON.stringify(itemDetails, null, 2)\n        : null\n      }\n    </div>\n  )\n}\n```\n\n## Example 5\n**(redirect to login on 401)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: (err) => window.location.href = '/login?returnTo=' + encodeURIComponent(window.location.href),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${data.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@0.6.11-next.1","dist":{"shasum":"b549aed4caa6b4a001583f4388ef28156cf4272e","integrity":"sha512-uEhO+llj7c+OkG5bscvxs6j+AwwfLUHXaYkWc8MIu6efzWGJGviuQ1M55VEnMM/V9i07SGL/Rg6lOjlbByT2Mw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.11-next.1.tgz","fileCount":9,"unpackedSize":27502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZEQKCRA9TVsSAnZWagAAOzUP/1pVhCTCgh/mkD54kBiy\nZeejPDpPSM/mSabRnbqaOovEniUKolRvICDslZzW1cOHqIEXOjk4GsWDdljS\ndN9BCrylwzOsf0vKzcVrcO9G1onLUd/ovVUXk/d/htEiu7iADF9B1PrOgrbO\n4RSWaQ6ZJwNgpgmop2FmPKEgf85JVVtLMMJRRAGKR+WVTg100hLd570oJC61\ny6ZW1VnqbiyW7DwVFSpjZ28xBRRtdkqRsXIB0x58l8rLQBmmUunl2FeUZHPW\n6EZYDZWc+KRtQ/laE7Bwo0h3cWfGBO4SnL/fvEuKPx5xJDKoomic2RUHcY6I\nfsNgMzMg1yms1HjH8vym56PEb4W7aFU3pcRDp1MMxIE2BV47CfbFDOP1eUvg\nxaUz3dBD5rFNcE5X00OgejvllQzIg14bnVltyJJ4lFfAwi/njvYWLY626Ozg\na0pIIwcpLspEraYnOz6depHmMyRu5s56ULLONTkCidv1a9wz4opyZDAG+XTm\nI32mjMqpk4aZz7ZtWpWXySjOeo6pZl53o3a4ojUc9RIm1zr+yjnpTxLqwKcc\n2cFHfmwKY7Ga3F1ZhPOMay/Xeys6jzPDn8isTglFYa4IfD4ww7d0KZr2BV2U\nu4b2CaDW2i+mYwsMF1ML5+Mm7ZKlFdoG2lW+lAwrb+Zr6UubXwthgTmYqRrH\ngduR\r\n=+bVE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkUZ/eYO8AC4bghUbwvPtDmGnB1UZykCq9jt2kMxZ6KQIge3N6dpUii/NxH0cL8relCjgq1hkD0HdF7pjup6GDrnw="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.11-next.1_1566852106308_0.4817987424468291"},"_hasShrinkwrap":false},"0.6.11-next.2":{"name":"react-use-rest","version":"0.6.11-next.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\nReact.js data hooks for REST API endpoints\n---\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n```\nyarn add react-use-rest\n```\n\n# What It Does\nReact hooks are awesome, but loading and managing API endpoints can still be a pain.  This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n**(basic usage)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${kittens.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n\n## Example 2\n**(all options/returns exposed)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // can client-side filter results (in case your API doesn't have filters),\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n**(chained hooks, e.g. collection and item details)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [ selectedKitten, setSelectedKitten ] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {\n        kittens.map(kitten =>\n          <button\n            key={kitten.id}\n            onClick={() => setSelectedKitten(kitten.id)}\n            >\n            { kitten.name }\n          </button>\n        )\n      }\n\n      <h1>Payload</h1>\n      {\n        JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n**(generate and load hook dynamically from props)**\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') => createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return (\n    <div>\n      {\n        item\n        ? JSON.stringify(itemDetails, null, 2)\n        : null\n      }\n    </div>\n  )\n}\n```\n\n## Example 5\n**(redirect to login on 401)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: (err) => window.location.href = '/login?returnTo=' + encodeURIComponent(window.location.href),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${data.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@0.6.11-next.2","dist":{"shasum":"386af562bcd7a54ae3061d097119e8b82ea1905f","integrity":"sha512-5qgAMjNs8vQhXMWH1US3w5Pl/304gd5jnO3/erW733UJTvXdCUOzbiAL60QbA7vHL43BQjX6Olsu7WQ7cTVRyg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.11-next.2.tgz","fileCount":9,"unpackedSize":27512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZEo9CRA9TVsSAnZWagAAQ+QP/R3eRu68SSbthspV/97F\n7KwQkZnKEM0w755VfeJmMPV3AZr2GwjjPDxssZOE1v/nmorRzxwDj6TEdCda\nE85UZnv2sJRj4ysXLdrwg+rymwpzSK8QKtLexCdnDR3Cm+EUivWffc7ItEUK\nKJ2k7qBNZ1HoOBK0uRDxJrYVYTXqQUUP1nxUpB0ETy+76KECbnyPrWq4VSZh\nOwTd9tiUGlFq2LSJ14sGq9dKZv03CqSJCYFSjXNeToG//tn548vKSD/rNfYD\nwM52dLwK/SpkPeqwprmwcVUqUoU9C/WwExM7lfz9jej/587LI7e+eoVcp2eo\njFzxkmF7zzppes9eEB9dgwgtq4PYMXX+WxMSePFRwEE4gzFRG0ObTD+WT0N/\nxJVEZxeqR9y2Ppv9OPYcVKqytNNeo2NuCMsP+ueDBr9LVLNoBj12JzrYqes1\nBCPnsV/qVrdCokn50FVvIrmDH4EWl4r1OC+vK/MJpQx1nXGZ0e2KK2oZUjJW\nLJ4mt5pgeT/VlHbFleWFMGAFOKRBoMOw/O7UgPQcqf2eGAo1EkrffmLYC/g2\n9QHABaxIrR8J0soD6Rrwx12xiLzn5kZXwXLLQT3aqshE/2UsFn5GXyMjsljb\nUkqlsATNmRGQBwnKInEsNPg5/CUxrb3cIzPHToPzfBjCFpk9SxaJghvhUczJ\nN94r\r\n=jKYz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRgBfgt+9mXtq5FovCANyE+bsTVy5Q2ngpsrwAJhnoBQIgKYGm+pgoKXGJEbA/s86/78yPIiw6iKNPwmi6TC14RA0="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.11-next.2_1566853692689_0.739064486929774"},"_hasShrinkwrap":false},"0.6.11-next.3":{"name":"react-use-rest","version":"0.6.11-next.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\nReact.js data hooks for REST API endpoints\n---\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n```\nyarn add react-use-rest\n```\n\n# What It Does\nReact hooks are awesome, but loading and managing API endpoints can still be a pain.  This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n**(basic usage)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${kittens.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n\n## Example 2\n**(all options/returns exposed)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // can client-side filter results (in case your API doesn't have filters),\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n**(chained hooks, e.g. collection and item details)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [ selectedKitten, setSelectedKitten ] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {\n        kittens.map(kitten =>\n          <button\n            key={kitten.id}\n            onClick={() => setSelectedKitten(kitten.id)}\n            >\n            { kitten.name }\n          </button>\n        )\n      }\n\n      <h1>Payload</h1>\n      {\n        JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n**(generate and load hook dynamically from props)**\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') => createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return (\n    <div>\n      {\n        item\n        ? JSON.stringify(itemDetails, null, 2)\n        : null\n      }\n    </div>\n  )\n}\n```\n\n## Example 5\n**(redirect to login on 401)**\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: (err) => window.location.href = '/login?returnTo=' + encodeURIComponent(window.location.href),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {\n        isLoading\n        ? 'loading kittens...'\n        : `we found ${data.length} kittens!`\n      }\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@0.6.11-next.3","dist":{"shasum":"f1862b2e092209059e8dadccc777755d45c38cdf","integrity":"sha512-Ex6CI0UrAuBWrwByGAnHxBkmbKNGqrTSchjTWQOGSSSBPKc7p61QpRXknERFUBPi1iKN1gj66G034FF9lnnINA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-0.6.11-next.3.tgz","fileCount":9,"unpackedSize":28036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZE4SCRA9TVsSAnZWagAAzrAQAJ9Xs44S8mih5lGDpRDq\nm8oGx0lq2q1vp28EbgPAIjWlkPTm5LGe0dIYUhyJF4+/u5I3P921I2gLtpvW\n1hufFyTYkACrB5dwOCIeQ46eulTdP+QpWpyuX3xlPj4a2CmTlgEyZL+doYlj\nINddeKy7wiX0B9Sp+IPEs4MPUy4iBFjdBlXHEHMYmuA7OIU31ifpvcj6ZkJO\nIbnW2RsIzCYT95YYJArXeCJYCIe7Tng7WkIDpImNeRyMK87MhybTyT5IW64E\nJz6bcfiveT9W6omZ9XAUYg/Xue9MYOW/hUnURK3ov65zBzgjb4qFft6VviKU\nonrXv5GuWlVdyCQulWF3Lb8InTbbuGdJ+MRsge3Fys4J5mimWl404zAGyxTF\npT6J60DDtJbRRJy3r8vgt71i//dUciCyTzAZFi2qjZdNDJUYPmVh7DmmIiUa\nd3QwL0ccVWcLbxaQnrIjItkbQsrW+S091Ml8HTFxmDZqqeXHZgDBvmwelDsm\nJIUR70uXS/i3q4uKpqiwZLlrQnlHHmS9CAOjvMV5Q+oYM2RrOoAQKBsglgz0\nlLbKBd4Q1DyxU2obULc+Kl79gP0DTAyVxYPv94eIQMt9oFGBkEAZXWaYKp7l\nomyKAeHafyYUQjX/ePhQ+KCYFO6aBvlqnw87hyQFWzuh3zGw1aTT0OlpSZ1v\nVxOo\r\n=VdHk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOTgUZB1qTEImIvBlvCOh8ORLjF6SoxDXSdltJkdhCXAiEAqdLaz2w1ea78x0EXmmJSWp4hmnMbsLmQgA12KQ+6YkI="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_0.6.11-next.3_1566854673393_0.5120436958331018"},"_hasShrinkwrap":false},"1.0.0":{"name":"react-use-rest","version":"1.0.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.0.0","dist":{"shasum":"a8efcccbf611701ef5d6c7f2bd60b8dca4a7b6a0","integrity":"sha512-LUwouDz0DcDDT2QB4+LiniXou7sRa5IZz1w9Nz3kV6iH759YXFIoNb9L7ylgKTXe9oecLNIEvjRPngmnerGmGg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.0.0.tgz","fileCount":9,"unpackedSize":27504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZFRiCRA9TVsSAnZWagAAMnsP/13GDRxZZRKzAGsToL0b\nxudcJ23zOQ530AQ+guNwDHNX3+OYCK9FLnorBUWHikqL8iyzFFceSBBzN++M\nssMdN35qNitkzB+qQJyhRfdn0gfQKlhy7VyXhfs/b2isThtaz9AEcJT2tbVE\no7JjgU+8loGhTviCpxEXLMwFDsESen4iHGFpDbQHwT2XbzpJMSwrSBrDNPzm\naY6YaZrmtTS/Mxdfphpb99U0RVOESaTGLJYC9CXrAbxrYOzFybh8kLsj0cbH\nZ+uNuwdutPLrt6i8blkIkr7F8CvTtalGG22sR7lzQcB7I+u7tKmFijpItH0j\nPKUNgtuei3SjuX00V6G4a1o+fY3+4GZrc6OIw2v43rrDpFc+xD9/YFQPS2PH\niqJCyqVNVJJ6iicNhJXZ6h64ZX0VRfnWN5davkyI/I8yAAG7P23J7Zty1PHt\nE2pnSNittGuYrv6CxIgCQ+jr9s6UUtnmpCYY92XflqYHyisDsOv61+bi83Yg\n5eeL8yzLh9k5WShflJVdHQYB+twkWoRY00g2e+M4wg9LWnSLF73BIFGbNQ7s\nPOPkmvVm888+1818qGyqlFbGGgi+ojKl8o05GAUXbhYZCyvzTlB6kbtmoT7l\ndqeGxzoFuIzUHsXUDtc02q7Vx9FqmH9F8rZPq4Y6evUDlMjHyC/XXoUH0VIo\n8X+p\r\n=H4aG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf+rB2UTSYPqrBPpzBfOFbTbP40/ARl1Jysq38yZX0ZAIgEQItpFRIC+9f6tufruho8npZEROniNPFHvMLUQIca2w="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.0.0_1566856289744_0.1975407977764556"},"_hasShrinkwrap":false},"1.0.1":{"name":"react-use-rest","version":"1.0.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.0.1","dist":{"shasum":"5b25ebaef0467e99e67a246069b1d29489846561","integrity":"sha512-vZ+lNqTobZsvNx2CEDvXzBu2eFcSxV+ouELfMbvZvbDf5qzwAcgk233gdAj6OstK8BWBYlHPeSh0FxhJM8Kd1A==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.0.1.tgz","fileCount":9,"unpackedSize":27503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZF4lCRA9TVsSAnZWagAAk88P/j+KYHQi/JhPkxvXIPmR\nWPJiUasinlQbAvo0q9FxzSkqTitoc3gb0C6f1IlzaYlOVuna8nwk9PeTt9MF\nUGO5GYRtgxt6qA0RIM0rBlITOQCKe7G8yhhcc3rG0jajMCZngzMWrE77Rhld\nk+o/IDFdvSOvCRhXdrA42qGnNcSr8I48SQMvUXD6DNN+N3nCMUcmD394rxus\nfPIUHE3LnZCTlLNdn02ai1RCS+VHXEh5nyzwKQQj860NCw68lln4R3cZVWgZ\nayjNs814WzCuvJJEGPstA/GiMkNpoW/fxD8hhxXydVUDuNQKGphVqPoev6Dy\nJ/eBmMQXv3ptDTbxW2o7ExQp4w1TViqISa8oRRCx7nAUiwUvkwJ8ONyrpbzi\nyuiv7kM9HAjjpchMmMQQIShNoC/vLaNRvTEb926suKQVd0rEgxMgTVUQwGK5\nVA4sHs9sZcj7MJKha0RVL5V9ji/vVC6aosPUtrxZttTiSp/F+juDY3Js0j94\nnTT8hNYpu1n7yAv8IjIhdkEf3IkQLLwQ8uGy6j1ZEzdXf99UMq0Tl43WR3T+\n4Zacolltue+ViWJfbBiDuWnGu26aJj/kzGckC79S/ABnxVbvHITXd8YSOSz6\n9MRkrewXYJ902Xr+qzNpV75JZ1mt24ogH1y8cbxCgnkTK4XKWBpQ1CHcceoM\nICbf\r\n=VWKV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFycis8i08jFOnndR/awZRcb4r0U4SgaQLDkIsKF1mytAiAWXfcY4+jmvB8S99z8QQ7f3P/Jrr/F4gHtns0ugjls/A=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.0.1_1566858788819_0.7598322332616665"},"_hasShrinkwrap":false},"1.0.2":{"name":"react-use-rest","version":"1.0.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.0.2","dist":{"shasum":"c9266073340a6a62b05940f8ab1019cb07314ab4","integrity":"sha512-sOYJnmFA5gtRL5WnOaibu1KXZ9C8GUZkFJMHQFsIEQjRdI0necxQU9A7n6WgCYLR/q4pY/53UVtMtXBXlNURnA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.0.2.tgz","fileCount":9,"unpackedSize":27493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZGLpCRA9TVsSAnZWagAAQmMQAJoV0IUH2crw1dlK3n0p\nNa0FJz6wNbvFaVlwfp4cC9admEdhFFxa0wB9lqQcWzbezDqNmqvB/hp0QDrV\nzdAa6d2KGtUL6FSau50OvnJJgoIM0m/FXtJPe7lXvge5SVw0Y/cFuLSMDhKW\nLTJJV+qCF4sua7kGVSXZXMOeo5LlY6YYoXb+SCFLpD/C3p1DsTO5lAwuscpw\nY9xNXwdkV3RWAu4ItNJrF2WXo688shv5l1M2rkmWajnSXZyX3U2ryDiBXNrn\nQXOtTyJReFVcsGxuq1Ff9Zp+Uxd2FfYBRbOQOPrskkercqyI49MqR9hJVxHk\nsB8+eczFg+r0xzxDE6pzzSrFx0/swo1hthsehZ2nSB6RfMF9D5IzlIkzHdtJ\nf37/ssJuNqQBrvTKVHl+Nle2TqfY52Mwkoyr/YyDqm9j8MWf7O+qFAh+55qG\nr+bJYrRYgKxp/231tofaq9WL2h+RNsLVaQV5Y8bb2qX0nt1PuJOBn/XDWwCG\n6rcIneOfR8UPGKsPCg41g28y4uGBe6AfbWMhBx4LD8mxawM9xm3KYTD+bSGY\n2sOTeOX/viSFrYRL8thJYfvY1c7bDkwn0UF6qh8qIFLKyllqhNV0ifwMlQEn\nPEn0P6pgdt/1zJDr5gjIwDZq0gWUz5XFOhSTNB1xZvFxe2gHNp2hDp0YE/yi\nkGHI\r\n=5yJj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZ4tf6I14diIp0qcA5Vo0UGbMHERe3MU7O/KwKW6IU3AiEAgr2mDv0WsOASNe2dXSAepoBQHYgVv5QJO7aOunK8mQk="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.0.2_1566860008088_0.7684627174171783"},"_hasShrinkwrap":false},"1.1.0":{"name":"react-use-rest","version":"1.1.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"yarn test && rm -rf build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.1.0","dist":{"shasum":"f929192535166cfef73cc0339238a06434b221a1","integrity":"sha512-BlXnr9GtBral8nkuA0viqdZ2loC6snE2a3Pn2OOVB90OE6jQh+W/xcEs2BAAitG9A3Vq/ISxqd2EtPjtywTLNQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.1.0.tgz","fileCount":10,"unpackedSize":30137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcembCRA9TVsSAnZWagAAAT4P/0IC49vvJeiiMJLNz0fM\nUYqXnQ2gCHzcTSnrV//HCUWeCR0K3qYzaQI9P2WVzE2PIlp1FSxW4Ot3UY3q\n5qDSXkPR3McA246bXz69wVBvZksQGtNlMtp1K70pO5MpJq/4rkDxP+AZDCOk\nLbpF+AecF+cmAOtAdH0xNwiaHHYBMEpZtOo4BPPooPfw8NBILBjllt19CNit\nDYoUoK8NCRr4zzTs9Lg8zTqHlUZ+jVlXKQ4KnS9jMWtV8RiLlNEsdruQY4+o\ntg+prYlMBhCXyD/KM3/E8/w84mr83zYHfF//pdZ5NBEim20nvvF0yBcKpihw\nhFFqVzv2Q6w4hGeHkI2dFtR4VpkAVcnMRU3A4nUxv8tdOw7j/zLiq5xOFpfd\nctzch0NWtyamFAdIeKcRBM2vBPE15IoLQ10X1NqrZHj8LwEj+6prUsh7YzjR\nID1JaC2Uacmc6s0cGCJ8SvlQQjXdnpJ4CV+bK8K49esWhc4YAZyWx16E+4U4\nnTyA061QJ9VsEJ8csqdhyNtbCvhH022Cmv5yjMnynEIljXwInri8TvRq7ISy\ntfuSe3sqifMccenWrzqUj7pqrPSXIk4IdzLSoS77aQwu4T7/jyyfISG5tIaG\nY1wAnUol5w4Ff8H1S5VeQZn6Xl6IrawqjxcFxRGhMOzM2rKa99PKu+gxsPXV\n56GE\r\n=zKqG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPZ/IVoDzUNtYCpJRC2R8ck6NzoX1tovCUFTflmO3y9gIhAK4PEZuy/CinAql6TlJHE7Bnvilvqis8u6xVwjynHQRW"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.1.0_1567746458678_0.0417270381007675"},"_hasShrinkwrap":false},"1.1.1":{"name":"react-use-rest","version":"1.1.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.3","jest":"^24.8.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","yarn-release":"^1.9.2"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.4.1"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.1.1","dist":{"shasum":"7a5c84d70410cb8c2e2289a6e16cce648cae8ba5","integrity":"sha512-g9/rVU7v/rGqASOcL6Nuccjt9zmb4MfK0HPIKLHpz2z8+JoWFqeqctPfaV+Wni/+8WGX6IkKZOdimXdwYAi6WQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.1.1.tgz","fileCount":10,"unpackedSize":30165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcexlCRA9TVsSAnZWagAAR9kP/22CXAy2+//sT1XiQx2U\nQaH1XXA4+FSdS38iCCX1Ht9yFUgrgbt5uQXEJD7u7kRMBqOQ6vbkKTrL5CJx\nt5tRImiTQei/oUzVuo2drGOHeoz3cpQ+i1F8Zh6ELo+/8RhovB1rhB+LUnMp\nrb5OLPqvLgPm07dsX1AVPLr3ZS8aHki9rBXRI2LS/GAshlzsgvSy+hFxRk2K\nwGJUQSJ+6/is1vmnatij2gP6owP0BWbI6iJPPgzj4cbltx8W8+07ZWGmSHFi\ngLhVyTsI8uIw22r53ZBbJcI3usjHRZNGmfSKsMZm5a5pMwPKLfCjYVk9ayt4\nFXmXJLDspvcWe2DEAEgR+RlPso2ePHdOVvUglqFBNsgtbelYhQLYNlwGiYN7\nJivp/SpOCigagaGv3c0+/0i9ZoPzlJPNcBIaAgBEnOts8DFFLBh67Z4XcGkA\nEfwTu0bVw2L/7tXU+WsoojxJ4pJj9EIYDG0K1fOIZrwVz3AMkTwmwMJz/Lve\njwxWWArzktukBsSeORIH1CeBkPrmpG+YS3wcB/Po66C/hAGTv+TtqV+83vRK\nzv4XaP/cZ+WY4KCL6Ze4kBCG7jkHM4few5HD88RbyCxf1RrJBI2d2AFkLy0N\nqIx/d9OzS7JYRWVu9K87hApWN0+SCpopr7O+KptMgFi+WkNdID/P26FJ5c6T\nBYsz\r\n=WgaL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdQT+tmtjLubue6SCIQmgyCLwpOTy5CO6jAsrY/JWJmgIgeNcVVILEYlr3PSBkhiyg9gjJqRoC2ShVzUuV0+x6DJo="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.1.1_1567747172551_0.8845867844714468"},"_hasShrinkwrap":false},"1.2.0":{"name":"react-use-rest","version":"1.2.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.5","jest":"^24.9.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.2.0","dist":{"shasum":"8c46731b388609eaf59a89e53cbab439fab070fd","integrity":"sha512-dcKkuIPX+psBJA7mgwkmmp440i3lWMIQlWUZgo65ah7pdn6p+rZyb0giuGAltqz/MdP7deOv0xtl9b5W1/5FXw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.2.0.tgz","fileCount":10,"unpackedSize":30166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcfWrCRA9TVsSAnZWagAAF5oP/RO3q4m7H2UB5heru00a\niHSeXuWB2G1Mre6Sk/6nXV87OIpXNXwT+Vvkvz2dPWQEdNC81pOp0mbT+jvd\nZxHVHTv0+ty4PzJrsaTsZripHLU4Sj5Xx4I2VDqIUubqW7xtUf713MxL1yNK\nIlZRhKWg6xptosMD7rCowmmm2PyOXyZNQgD0946XhVnOOUTq7+c8Z4wB3iQN\naFJW3LCfhQBIrot73pMTDcNEg1hHE5b7SKNPIPY/dMmmw1p0cPBGCk0ozuJ8\nKGjhC0IlmeJJoBliPnIO+NlGJuSmZZsITt3v8JsVA93Yp9+W0Brb/5MphTu6\nI6n+4v4jX/Ifv5bHOcDXPNxhNXSq4fxO4YGVOKtT3ZbJIPnDDNfrNC85YZYO\ngzhjJr5nV84l62Tf0jSrLQ2nAY27WA4MDvS06uCWnfP20nGqydH90QxDUsND\nbwfr/7SE3jdDHajjUsWWRIh+rbfRk7SEvqz+zG6gGX/WPch0hRDGXcRAu3wy\nniTzamRi5cJCPoG1b3R0cmRbfIQ9NHff3EYc7NSlDGykcL4Ea0TG0pXjOurt\nXsfL8yY50eWOY/w3KLWOAk0ofNP+MGflRaFtctVgEijtNrcZceVY29YA1L8p\n0AlelYEd91sEfBLg5U2OlqMrt4sKcJP++0raKaFknK+oVjwjPnKrJiz2myeS\nqaBs\r\n=lqcU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWcEOkxY7sGepi2rdZkDuoykN0DFp+k+Zw9sVpzKpHJAiEAx3wwHZAv36K291gk9ziHdySZsXQ/Zr4g2OZ3vx2XlS0="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.2.0_1567749546893_0.991229910842182"},"_hasShrinkwrap":false},"1.3.0":{"name":"react-use-rest","version":"1.3.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.5","jest":"^24.9.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.3.0","dist":{"shasum":"15e05644074da53a5edc0eab7224125812f93999","integrity":"sha512-ABkE8CRssHWePJrl1UHg15yTy0hQBeDlABri8RdM45Os6CvVOO7tXb7gkV4VeAJNOqBlwJCoCvMfiplWKQGGpQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.3.0.tgz","fileCount":10,"unpackedSize":33204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddq0ICRA9TVsSAnZWagAAEZkP/27DEjQfYNRw/mZOgCs8\nrvY53jzeSIFCrXoj6Qs5NA44+rIfNXnXMERfMIchyKbUyQdrimpYYq6IDcRY\nDhhItL4BjTSb4WuoJrgUbAzYT4qLmIpnjDK3FSsEkkZQWXpUWXALxjzX4HeS\nuzgl3J+L3j1TZxiELMx/QZ7ohG5VLzUn9Pa2aTgA0qbGF2I1OZ6LgKY+zh15\nAbuphaukRYBOa7pUxcBNY5p6coujMeVglVR9ipuyVcUpZPX7dJPnngwFbDdf\nUdFSALIfMbS3gIK36LdTxBPxTiB0najVlPNUw+90pY5rFY/9qamyQJ4WXk/V\nxLAdyQqH/HcQlTZoxBdDtbqpuG3DmTLs2IP0GM0JVFocndgW7yfTzw7NTde+\nHwsJuzEoe7EaCsuBDpU22XcxfwhyoQqWslZ09KeWVHavdfg/7XxjafxyjJmU\nF5S4yt87etpAdLhQZuDVDf+F8DBUYRwUAHCYljCFVm4MOXE1IO2rd3y5r85N\nlC90YsAtwnaaM6ljOu+8wHP+k+RIu++THFQVcuYpsGrQ7zNTQmcDqi/nKcGa\n0e1iAnUceI+yt5DLoSsViwYeAJf3bHG8U5KfDRDdolAUqRT7zXYUwVi5M9FI\n7VN2H3dWm0/MRDCA4w5Jvwc14DvumS4I86s6QAI7vMFHshm9AGo3YdE33fGJ\neMYu\r\n=mbaA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7HlwjfNzY45n+TloNQKGowW7FvrlvStBQDxJ2sg7cBgIhAPpk260r0gb63ELDMsHrywGU5TaUxZDsD2DxaOA9Qfuq"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.3.0_1568058632143_0.9033416192302774"},"_hasShrinkwrap":false},"1.4.0":{"name":"react-use-rest","version":"1.4.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.5","jest":"^24.9.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.4.0","dist":{"shasum":"de4f63213d9714c113e2ce5d2f2ec2c77e99130a","integrity":"sha512-acybxttuuu98crwxC0pZEy5OjRBOikhi68eilCALUSv1UyXDO6lMgd8bNmhEnzyCYLurba8MwHAhDCrEHXHOjA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.0.tgz","fileCount":10,"unpackedSize":33441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddw8aCRA9TVsSAnZWagAAjfcP/iaJwo7JOWYs1To+CYFe\n+rPy0Gcy51mXCSaN7zoTVEm3+lAmO7eNmISEkH1GWMkOG3NUonysrlyJ/0yS\nukIyhoRopp2HrVvSiKVhSnD792fX7ilCZ2VLjFZ/JKFd46QYoxCxoXvJeweA\nUrvMr2f6Ui300HFt1Eg1xz8l2GDhsAj3zJ/GK38QHPVog7HluvWmpm0XMszo\nXV8giPZNyQ4pc4Xo5R8ah2QGanqK/FE0o/pNZ3DSKCr2qSyDNh7ND7GG37EP\nxOPhpjTvKnLqEOkL6ZuaPstYK5nJQ5m5cUu+9bhHCH118GIZi73dR4GT9WKf\njjqvqBOrBxSryNDrriGR8wc5LgXjLvNxLG7e1zKuZOjRdMPdK6AyRbB+8rbK\nUf/vHz3fmpLjkcJRcS0cIOrryK/e6T3olmurdrFoqzg58bMupFqWhHmhnyH3\nzQUZrDTGceTYA4F/AL6uPn3oXOC1OwioimakSVbUaL6nncgy/wmBqsLoZ31d\nrtyKk5ziANixxHgFUB/kJNIQtrIJE1XYymMjcaZ3crxdxPV5VGHEYzbNoLkt\nkTjwNeF1nYe0kknib1kI0orCIIX8bPhkgCD15V2tNOViOl8XEmUHAyy4KL8y\n93Ve1YMav9zyS1SKGt+aodTC+WeQbnr/gM8KBQJnqbpy8UWkLFNTEb5v6C95\nDE0u\r\n=eLhz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYjkg99eUEB9Moziaa7Zj75CTU9lmvK2Z8CDvIUyAFMAiEA8D+0b+ti3+J4S+vvqgS6xkzBW8lJNeVngi5rl9vp4wA="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.0_1568083737581_0.438368873586249"},"_hasShrinkwrap":false},"1.4.1":{"name":"react-use-rest","version":"1.4.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.5","jest":"^24.9.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.4.1","dist":{"shasum":"a92be331cc610ad0ce0494881a0cba9091cd28f4","integrity":"sha512-DlhYTas5+RiisEh9koC15C2gN63l4WZvJyZhgL/usrVXpSqxOSCUniUtS+EmyUuAr4S1PyzAPTRVCzj/tmIQ0A==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.1.tgz","fileCount":10,"unpackedSize":35836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddxbWCRA9TVsSAnZWagAAbJMP/jjns6Kr0bzT/lt/VebQ\nbKcxQF3eTHsVnf1xoifKY+ZrS6VSjzsq8y2Ee85Xmc6ekOFmic5MHPuK/K7z\nLS4zUm/HXUA4aSeZRQrDfOqmSIm3GzFzaHiY2UzuMEZPZjlJbG1aOGchp6ih\n7eFHGCfLS/c0GpOUmYZUqnCnUB01jQIMJC7VgQTH3EH6in7TbLIttqNdnJB8\nFbt24LaFM0LMKQxiWDfzV/XFh+M6fRxwdBq2hirOTbZIHCHnOX2+FfrszedS\nEZfmduA5arrkLGyoQcN1g0MFrAUJmcgbW27W/TJBOTQliNzhPlqDP0kSXxvW\n8m8EL3NU+irHyBzaNdFG7jBl9AB52G1aaGSybvAXP5qbneGE6ko0vo1VTVjx\n8q8lClyRrv06LegVJIQAx6V/UNUPbNUS/WTG7NqSEQKSmyxu2Ll6jmfNJtIp\ntESUHVwa/u2zaCitK1maraFaD+vfXYbUT8u2dEKApk0121/Ud+rRt4ibSxbY\nHLFKJru1XSwYN/+Iord9wX7U14uvTS0Vvl6yIz1U9QpVOLQXbPZQhQkAQ7qd\nlXVvt1ZeNv9nuaiRua81iorhB3+Ay5Y7gkHcq+IAqfyriTcF9vAJgTUpVnEM\nmAD0Xzwy7/ohf92INjK5zhlwP9/bG6pRNMcFFcdffZP+OZTeMgUwVc6dH47s\nQYEf\r\n=f3mr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPPPTTPEF04P0xbjSpRlBkR1zvHs5Om+AseDuU56LjkAiAf/b9IfyBEMLbTRpqXsWpfCLgqSoEaYqQ/yB0SRfUI/A=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.1_1568085717937_0.07788283197473"},"_hasShrinkwrap":false},"1.4.2":{"name":"react-use-rest","version":"1.4.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.5","jest":"^24.9.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.4.2","dist":{"shasum":"441bdfef395d2fb7f34c04331dfa2cc0b0acdc8c","integrity":"sha512-K7dEaA6lXqhy4odV4Q1KPUWjEvrfOJx5UOigpuvG/YLpvWG2Tw4chrSWFl3mcRBxHoRsBosU2m9fXgH4WsZO4w==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.2.tgz","fileCount":10,"unpackedSize":35862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddyJUCRA9TVsSAnZWagAAcPIP/2O+PMdwwoM+gGZICVrb\nr6JBtaZBJ2xAGqhXZp+quAgwitUmr15O4iLnyROhu1NCM2ovRJSFTcpxBGx2\nVOp/2TEwqAC8TyzO0j8SVc5jAkgSOOYU2pQscaSXKXsNFqRPsP793iFexJUt\n61qx9tDnQMiTuPaozFgJsqevjLhaaAD88wQr2JAO89XuOtuv/l0nOAsZIe+1\nOLnsHZ6NTIzhq3nm1T8sByUa+8WcQrwIGA1OjYi5F9NPGo2E7Si+dKwoUcen\nfqUL68Ps4p9RnDeJz2IX2csMIuiffRESsUZifjEE6YXg4fdctp6ZYCW/L6//\nKyoUtjE5pSwegQe06HfstXxARQGQ5fg0FgOKZ2wdrESEzaiN/mZhyQSgxDNB\nU5J4a2Tm3WP4FSH1s/fpjUBzEvsgvJa092KAL+ZpzgtQKy/L9dzAkqE8v0p1\nZfohGnXotsosXqcdVhU57u9mJCqwBUeGTu3WNdsU/b7ymVO4Zb9gI3yNE3lI\nlGaQSUag/PFqArc8m84nETm7GZRm3WFbe5o+CkZlYKpi8AhHa9sJfDKU2cp7\nPKxppAwgIbn2W1VUF4mltd56tezUvcp+hV75t/N3JUV9q1Xl+k9src441l3S\n6a1NFlB89cB5DMbMA9D/hAWttCpAmGSz0CYVC03lzrqZUIJ/GSYjk1azBqlQ\nPGSj\r\n=jhNu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIATGXW1423j3rYfsRRXsIJA0mrlHwR2DtcXMJqvy1hfPAiEAzfGGvDECqaaVs4kaMfxUCyc8LrINkLVKVZHPSyyBcbo="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.2_1568088660014_0.4313549416188731"},"_hasShrinkwrap":false},"1.4.3":{"name":"react-use-rest","version":"1.4.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","test:watch":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","husky":"^3.0.5","jest":"^24.9.0","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.4.3","dist":{"shasum":"60ededad5321490e9136c0c98960512de918fc85","integrity":"sha512-7sz/RMeNre5mF3ifAKvkzuYOI6plhhvryyLLgGOqIvq71K/gFx2hQoZBD9zjw6De6z5M+Yw6Ub6qlDP83rE8DQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.3.tgz","fileCount":10,"unpackedSize":35934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeZDyCRA9TVsSAnZWagAA5b4P/A8/pcMnLlI2PncjYKW0\n2JOM91EYdo2mC0JDhFFvXEGIwJSwvTG+hYEU2V3RsUhPGxf7BAH7e6KQ25EE\nUoht70+5hyLOqUfuQkkbjRJHh+7rIuxhRY27BVJKwZbvWxYuphx3FLkI740c\nn3XmJFWacj++s7+JjcrsAy38iKlXROahpptfUAGqQiRzfHkB33IUV18PMpk/\nGSdtpacpy3NdsOWNsoMKKWhWq2YCukeZ0TSkXpShENV4t9RY1sO96lkDPL2G\negkyGMqdouf5ZgO2gEuUPM/Qe32pbHiHV2NR1nGjFerqZ0alQQvJeCWQgE9l\nxgi8DX68v0/WaPPaAx2dUHNoTAwnt863pkSqb/+gOOZupgcw3xkVMkTAi+Pa\nV7RVQDVlht3AzoDaAwi/8m4i93PT/qiW3/FlKI1+RrwaX6oL3bFkvqskJpDF\nc1ZeC/bp5pinrNYSkWIDJSlBBThIe7b0iormIpylUTPg3jStzwqQ/OTgJoAV\nV/+0NytUAM7c+ldabVvewwQFM2qN8ZI3/BDCdXIaY7ycs9NHLAXbUvasqlWd\nbs+PbzffIXmFY0tWML4VVU3bkOzzsRDKOwa+ZvzmI31l52iLm/zEBUV2FxRg\no6/abVwLuzk6fpBgFgEyuN5SP5IEUwqld1HZw1MP31mpIPNU9TwQheMCVzLx\nWX4s\r\n=mVvJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCH28XVJm/hSIWdusE2geu05wtMEYxJCo5r0zCev1LjtACIA4yybtinqBctpycgK+ctgpkWjpnnU7vWBgZd+8ESpJd"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.3_1568248049449_0.3211981028102282"},"_hasShrinkwrap":false},"1.4.3-next.0":{"name":"react-use-rest","version":"1.4.3-next.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n\n```\nyarn add react-use-rest\n```\n\n# What It Does\n\nReact hooks are awesome, but loading and managing API endpoints can still be a pain. This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n\n**(basic usage)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}\n    </div>\n  )\n}\n```\n[continue to other examples...](#example-2)\n\n# API\n### Options\nName | Type | Default | Description\n--- | :---: | :---: | ---\n**axios** | `axios instance` | `axios` | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)\n**autoload** | `boolean` | `true` | data will fire initial GET by default unless set to false\n**filter** | `function` | `undefined` | filters data results into the \"filtered\" collection\n**getId** | `function` | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE\n**initialValue** | `object` or `array` | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint\n**interval** | `number` | `undefined` | refresh collection every 5000ms (5s)\n**isCollection** | `boolean | `false` | set to false to allow direct REST against a specific endpoint\n**log** | `boolean` or `function` | `false` | if passed `true`, uses `console.log` for debug output, otherwise accepts any function\n**mergeOnCreate** | `boolean` | `true` | use response payload for newly created items\n**mergeOnUpdate** | `boolean | `true` | use response payload for newly updated items\n**mock** | `boolean` | `true` | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)\n**onAuthenticationError** | `function` | `undefined` | fired when calls return 401 or 403 (e.g. can redirect, etc)\n**onCreate** | `function` | `undefined` | fired when item is created successfully\n**onError** | `function` | `console.error` | fired on internal error, or response errors\n**onLoad** | `function` | `undefined` | fired when data is loaded successfully\n**onRemove** | `function` | `undefined` | fired when item is deleted successfully\n**onReplace** | `function` | `undefined` | fired when item is replaced successfully\n**onUpdate** | `function` | `undefined` | fired when item is updated successfully\n**persist** | `boolean` | `false` | will persist results to localStorage for fast delivery on page refresh\n**query** | `object` or `function` | `undefined` | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })`\n**transform** | `function` | `undefined` | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') =>\n  createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err =>\n    (window.location.href =\n      '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@1.4.3-next.0","dist":{"shasum":"0f2101ef0541e824a5891bc8e96ad117bfea7d31","integrity":"sha512-ohRNaI5NZ0be3JXry+jo1BtuMkEnPeauKwrCfUKA1uKqXUkR8FB/LnwOiUcZHt1Yt/lxXwxiIH6GLqCUB1n7lA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.3-next.0.tgz","fileCount":8,"unpackedSize":38731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhtAbCRA9TVsSAnZWagAA0PkP/RdkvRsYhatjRQTFyEC/\nBJD9ClyOLHuZ+9DFIM4Ep2rDildggvNl9FRlncWpiGrkG/unEFIpgeZch0hL\nrSR16/wlSsMMMnMgc/1WkHAyXPBDTWQVdo9qCnWuDOJMMAy869Vdxfk6+efz\n5mXkf1USNigMtWBqcJzIYiv5WLr0xM5alMjFMGTpZuT39VTTudmcHcZHpGlq\nFCZYyr2KqL+oBnfrcj3KriQXhVj39wnm6R/hff+b9ZYPOpicdr3SlSOWNr2c\nj3lm0Qd5Sk8SYoMpM0VjQLh4wbyfsz7AhZUIfgvEi7G9u/OFoQoFnYDHgV0s\n0jG0z9I0Eog9qZNhjiFUa+vWPGOapVy5trdnmj4sQp6X7A82tctpNdVnhI6r\nGyShqiLeyk8Jif2EFgYRmfwp5evgXEvkXOBcnT2V1t0Eem9IWOMIiId92Y3J\nPBxB4bbeHy4WgV2ZRy5SCFcNjy7LhShaFQaJWrHNXTQIn5vzIMzcK/QqeN2/\nnTRqQzG1wwFAUfB5nctiErJCmAURLld241S45ej/v39QCgqntyD04J/Mtcyv\n9z5+AohAeYBdqrD8IXlBFyeXJ5dkKxx76VjkSw410c5JSY4Ohzye/zX+lrZs\nvXAfLbW+wJVUTPjZ517B2tndts6wNMdsLEaSje9Aw06VwR8gC/kpRtkC6Ekw\n5Ihb\r\n=3X0E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICYcbmyyJFRVsBkUrlflAHzlcYyXLqxO1HA9mSKLE0WpAiAoawSLVC4GG39FJk1vFPCLjpAe7nlfnV8bEGFuXCHfFA=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.3-next.0_1569116186933_0.48107368746910817"},"_hasShrinkwrap":false},"1.4.3-next.1":{"name":"react-use-rest","version":"1.4.3-next.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","pretest":"yarn build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n\n```\nyarn add react-use-rest\n```\n\n# What It Does\n\nReact hooks are awesome, but loading and managing API endpoints can still be a pain. This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n\n**(basic usage)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}\n    </div>\n  )\n}\n```\n[continue to other examples...](#example-2)\n\n# API\n### Options\nName | Type | Default | Description\n--- | :---: | :---: | ---\n**axios** | `axios instance` | `axios` | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)\n**autoload** | `boolean` | `true` | data will fire initial GET by default unless set to false\n**filter** | `function` | `undefined` | filters data results into the \"filtered\" collection\n**getId** | `function` | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE\n**initialValue** | `object` or `array` | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint\n**interval** | `number` | `undefined` | refresh collection every 5000ms (5s)\n**isCollection** | `boolean | `false` | set to false to allow direct REST against a specific endpoint\n**log** | `boolean` or `function` | `false` | if passed `true`, uses `console.log` for debug output, otherwise accepts any function\n**mergeOnCreate** | `boolean` | `true` | use response payload for newly created items\n**mergeOnUpdate** | `boolean | `true` | use response payload for newly updated items\n**mock** | `boolean` | `true` | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)\n**onAuthenticationError** | `function` | `undefined` | fired when calls return 401 or 403 (e.g. can redirect, etc)\n**onCreate** | `function` | `undefined` | fired when item is created successfully\n**onError** | `function` | `console.error` | fired on internal error, or response errors\n**onLoad** | `function` | `undefined` | fired when data is loaded successfully\n**onRemove** | `function` | `undefined` | fired when item is deleted successfully\n**onReplace** | `function` | `undefined` | fired when item is replaced successfully\n**onUpdate** | `function` | `undefined` | fired when item is updated successfully\n**persist** | `boolean` | `false` | will persist results to localStorage for fast delivery on page refresh\n**query** | `object` or `function` | `undefined` | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })`\n**transform** | `function` | `undefined` | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') =>\n  createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err =>\n    (window.location.href =\n      '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@1.4.3-next.1","dist":{"shasum":"8da0479fd3aee4ef0e301ea4fd928b5928c85917","integrity":"sha512-9xL5C3Xb2pP254pVS+NFNpE71dlemTaJPPCaVI3J+P2Bf/7/26AA292g9gIFjkba23V528d5ABMlDPdktYOH7A==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.3-next.1.tgz","fileCount":8,"unpackedSize":38751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhtQiCRA9TVsSAnZWagAABWAP/0A4rc9b0tR4U+fjq7qe\nSSJnFqyIth7DYsoOU7weD7aXmCtNCHzfRYcPeB/V9zCkKsymd7ZXfLJszLrA\nw7RHMS6+txaTkD8+CNzNTEQM5a19QIaZwQK03KiK21kttRpenqAhGkBUyCGi\nRZ/H/ERZiFX0OuNsHzQZLonNX7mLS2Cto4ibgqDX0RWgQpNPZmg3pBLfVCyk\nxJZT9oyiZGqJkWKrZas1cdgil1pU+fchMX4fyi1rrf8ASSOZ1BHhRiiphEN9\nCjn5Vm9xqa0F8FyB3T8A5v2JAN52cPDtgTYeGBuSkME0tRtLOhfYzFcLAv8E\ndwLnJbBqjkovI0uGXOMXi7uReVn9P7qonEjuvoPIIuaomGBJP1YPg/R4EUkX\nTvhOCp8sQSMHxwaJsrMEU6x+273TUP3fHa/wL+vcqau5HiS2S62QNHHNbegT\nK1Vhd6gxccNvCZcHgGk5JCoiiB1XBhxgC2LFcPTXbONnvzaSm1NgKGBgzChD\nImr0a4JGA5INENNgz6XVcRnvO9BfnvOqMcv5EKq000rLF7vn8JDT7H8VgHVC\nDaVon10tnTFKb7SpQEEV8NxAJXQA+sfCFbS+h2L09OImeboTjx0YlQ/Uj0g/\nMWusT1Kd8FRfWTvu43eiIp/R2LDJ/9Gn82xJ8gIzgyAK6u8xMA7CDoBRDY5C\nC0kq\r\n=+B66\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJyAfyiECwFqTwHuFkWve68zOI9Bg14VqOw4x1MB+mEQIgVarJl39V7V6Y5Dbd/r90w0m9P1hmwTG1/JOSVUFg60s="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.3-next.1_1569117217414_0.16446204796810027"},"_hasShrinkwrap":false},"1.4.3-next.2":{"name":"react-use-rest","version":"1.4.3-next.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n\n```\nyarn add react-use-rest\n```\n\n# What It Does\n\nReact hooks are awesome, but loading and managing API endpoints can still be a pain. This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n\n**(basic usage)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}\n    </div>\n  )\n}\n```\n[continue to other examples...](#example-2)\n\n# API\n### Options\nName | Type | Default | Description\n--- | :---: | :---: | ---\n**axios** | `axios instance` | `axios` | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)\n**autoload** | `boolean` | `true` | data will fire initial GET by default unless set to false\n**filter** | `function` | `undefined` | filters data results into the \"filtered\" collection\n**getId** | `function` | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE\n**initialValue** | `object` or `array` | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint\n**interval** | `number` | `undefined` | refresh collection every 5000ms (5s)\n**isCollection** | `boolean | `false` | set to false to allow direct REST against a specific endpoint\n**log** | `boolean` or `function` | `false` | if passed `true`, uses `console.log` for debug output, otherwise accepts any function\n**mergeOnCreate** | `boolean` | `true` | use response payload for newly created items\n**mergeOnUpdate** | `boolean | `true` | use response payload for newly updated items\n**mock** | `boolean` | `true` | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)\n**onAuthenticationError** | `function` | `undefined` | fired when calls return 401 or 403 (e.g. can redirect, etc)\n**onCreate** | `function` | `undefined` | fired when item is created successfully\n**onError** | `function` | `console.error` | fired on internal error, or response errors\n**onLoad** | `function` | `undefined` | fired when data is loaded successfully\n**onRemove** | `function` | `undefined` | fired when item is deleted successfully\n**onReplace** | `function` | `undefined` | fired when item is replaced successfully\n**onUpdate** | `function` | `undefined` | fired when item is updated successfully\n**persist** | `boolean` | `false` | will persist results to localStorage for fast delivery on page refresh\n**query** | `object` or `function` | `undefined` | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })`\n**transform** | `function` | `undefined` | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') =>\n  createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err =>\n    (window.location.href =\n      '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@1.4.3-next.2","dist":{"shasum":"38f03b91ca94a743560ef25eaddfc9aff286b3ac","integrity":"sha512-k6i/yp0s5uWPq4haNr8Z5Au8ZhYF5nRP0plV+ppm7P18cKAgVe4UKtVaqly99Lzce2bp7iGdZ723e4A3R93oRg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.3-next.2.tgz","fileCount":8,"unpackedSize":38691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhtnxCRA9TVsSAnZWagAA2FcP/3lXTtSh4HxoCM3ixLQh\n7W8zhQlMvsZw7Jgn2HKglxuL9Nm6ZCtHHKHU1o7X8XnxPWhy0TxWN4EmhGsG\nyOXTs+uuaifPzyveo+zhnALFq0MbBEcpBCMDKvz3ly4xN4rFHThM8zy6dG1p\nyr7kfrXwH+JWm7biIIibYW6nZ3BMV3OHuDEueCqJM2i8TOZbGl5PAIZL9X0s\nBeIm98EufGcvSd1m26KFobjbZhpIYw99U1hsLT+oqKPMPAmM2KsMYpH2g/DO\nDY3Zw48SULJtAxhhETcc4NsgjDTk6H0dHelNZiJj9iPokEmx7quUy2EAxeHA\n785hdo7lF7r+NfxpEhvbRS3cKWKjI9L+kNSDcdsX3GEoS6uv/VOc4A2zP0Ci\nm+jeWv2xAXcwd3+PBqIS/kwxd5DZfV0CTnZYvs+MgCX1i1o+uJOoGU4PjOTH\nj/ar3JvILjrHF4ZXGHLNOy/EhiqBOtvVnFvuza1SQq8+NFLqF42lTeVlsAET\ne84V4qayC7SepwWUFTqowoXQRd4dEc5u9ceCyXBC0ptYo7qJVcYhhcMXejBC\nBS4CIIqVwov/f9i+L9zxcUSv15LoNp9kSuSKVHj4uOjj/W9q+LAe1UmXv3cb\nRAMFlZp7Oe/ZsA2vrxOxDITjE+8UHjC9O4NEqd8arRFpu1+iDXK0J/C10Wjx\nRpRT\r\n=aJCD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt95ZL127pu3AOuYEJeSMia+9fluAL2Sn8fB6v5VOmFgIgU0dEKg5s2AyFj4NuqL/7uUJeOCU1kyrPvZwtzToiuRw="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.3-next.2_1569118705078_0.003173363559121345"},"_hasShrinkwrap":false},"1.4.3-next.3":{"name":"react-use-rest","version":"1.4.3-next.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n\n```\nyarn add react-use-rest\n```\n\n# What It Does\n\nReact hooks are awesome, but loading and managing API endpoints can still be a pain. This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n\n**(basic usage)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}\n    </div>\n  )\n}\n```\n[continue to other examples...](#example-2)\n\n# API\n### Options\nName | Type | Default | Description\n--- | :---: | :---: | ---\n**axios** | `axios instance` | `axios` | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)\n**autoload** | `boolean` | `true` | data will fire initial GET by default unless set to false\n**filter** | `function` | `undefined` | filters data results into the \"filtered\" collection\n**getId** | `function` | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE\n**initialValue** | `object` or `array` | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint\n**interval** | `number` | `undefined` | refresh collection every 5000ms (5s)\n**isCollection** | `boolean | `false` | set to false to allow direct REST against a specific endpoint\n**log** | `boolean` or `function` | `false` | if passed `true`, uses `console.log` for debug output, otherwise accepts any function\n**mergeOnCreate** | `boolean` | `true` | use response payload for newly created items\n**mergeOnUpdate** | `boolean | `true` | use response payload for newly updated items\n**mock** | `boolean` | `true` | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)\n**onAuthenticationError** | `function` | `undefined` | fired when calls return 401 or 403 (e.g. can redirect, etc)\n**onCreate** | `function` | `undefined` | fired when item is created successfully\n**onError** | `function` | `console.error` | fired on internal error, or response errors\n**onLoad** | `function` | `undefined` | fired when data is loaded successfully\n**onRemove** | `function` | `undefined` | fired when item is deleted successfully\n**onReplace** | `function` | `undefined` | fired when item is replaced successfully\n**onUpdate** | `function` | `undefined` | fired when item is updated successfully\n**persist** | `boolean` | `false` | will persist results to localStorage for fast delivery on page refresh\n**query** | `object` or `function` | `undefined` | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })`\n**transform** | `function` | `undefined` | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') =>\n  createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err =>\n    (window.location.href =\n      '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@1.4.3-next.3","dist":{"shasum":"9001c22888ccc082f64f1474a97963faae537c97","integrity":"sha512-sRyyT8Sqi3nDUA5JT5b+EJTayYYYeo1PIR/0esMpMmbD93W9NEaGs0BB63L6CYoymYSGCgCcXaaVgItDqs9ppw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.3-next.3.tgz","fileCount":8,"unpackedSize":38704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhuZWCRA9TVsSAnZWagAA/+cP/24uker9zWflSTWpyS2N\nsDPR6gZg3P8FUWFD+vcL2UrJiy1Z0tD1pMZFrZx00UPgnuZFy5JBCVEuPl6T\nE2T8niORQOnaX15XryIB9Owm1NTsWMQBVHhCgE9vtRkZYnLmMjcs2pUmhFq8\nLRQGVfkBQNRe+nC/VZog/L2O4z9zO39/A7rD1gbNlvq3cg3TK7Snu/EG9TL9\n43cQPdbOJ9ap78je9cjWmg2cH1c7HvGRiw3hrEFuGlRhc1Sj+wcha4OD6/rB\niPsKDIf9BmCnidT+bl/OwFN3SQWw8H+zRAJENDXC+ro43rn8iVTHydLtwTWo\n6UIUMwAGN5XsHNos0m5InNB92GM774DxGvIkrRHsIllnrbLh2GW0j2vqHYSi\n9wdYt8/yM63eR4tGeSm6DyRtqHnrlm7LbboZEGB/toe/YMNCKMuieNE/c4ZF\nGwclKUkQbsqnVjPsSZYh8RIxE/qRwrD7pjwrQKhvjgH5s2VcM1n+ziOckXhI\nP3HqaSM43OSoHzRvIBJG9p9tHonPQDWOEYQGyvmBCospBN8R6Dgl/qnWArWC\npcGU7UWMtniFwGb7xI4Fd+cqLpCfYV/4Vr8bg0ZcVEQHMpGUkIVtJ0JSF6aH\nMheKV5buAD/MeCZdAtyLW/UewAgjV8OYlF5q7pZBlC3h9H9CqN285u7ZNLPk\nneNZ\r\n=RbW6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs9sAixSW6LsRv3/evjs5CNPV/Hd+tY258MvAotiO8IAiEAjby8iK2DNk5wBQFxrEk7q4YNEm62mz3C9kGVjp42/LE="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.3-next.3_1569121878095_0.10102567056137124"},"_hasShrinkwrap":false},"1.4.3-next.4":{"name":"react-use-rest","version":"1.4.3-next.4","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n[![gzip size](https://img.badgesize.io/https://unpkg.com/react-use-rest?compression=gzip&style=flat-square)](https://unpkg.com/react-use-rest)\n\n# Installation\n\n```\nyarn add react-use-rest\n```\n\n# What It Does\n\nReact hooks are awesome, but loading and managing API endpoints can still be a pain. This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n\n**(basic usage)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}\n    </div>\n  )\n}\n```\n[continue to other examples...](#example-2)\n\n# API\n### Options\nName | Type | Default | Description\n--- | :---: | :---: | ---\n**axios** | `axios instance` | `axios` | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)\n**autoload** | `boolean` | `true` | data will fire initial GET by default unless set to false\n**filter** | `function` | `undefined` | filters data results into the \"filtered\" collection\n**getId** | `function` | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE\n**initialValue** | `object` or `array` | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint\n**interval** | `number` | `undefined` | refresh collection every 5000ms (5s)\n**isCollection** | `boolean | `false` | set to false to allow direct REST against a specific endpoint\n**log** | `boolean` or `function` | `false` | if passed `true`, uses `console.log` for debug output, otherwise accepts any function\n**mergeOnCreate** | `boolean` | `true` | use response payload for newly created items\n**mergeOnUpdate** | `boolean | `true` | use response payload for newly updated items\n**mock** | `boolean` | `true` | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)\n**onAuthenticationError** | `function` | `undefined` | fired when calls return 401 or 403 (e.g. can redirect, etc)\n**onCreate** | `function` | `undefined` | fired when item is created successfully\n**onError** | `function` | `console.error` | fired on internal error, or response errors\n**onLoad** | `function` | `undefined` | fired when data is loaded successfully\n**onRemove** | `function` | `undefined` | fired when item is deleted successfully\n**onReplace** | `function` | `undefined` | fired when item is replaced successfully\n**onUpdate** | `function` | `undefined` | fired when item is updated successfully\n**persist** | `boolean` | `false` | will persist results to localStorage for fast delivery on page refresh\n**query** | `object` or `function` | `undefined` | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })`\n**transform** | `function` | `undefined` | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') =>\n  createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err =>\n    (window.location.href =\n      '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return (\n    <div>\n      {isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}\n    </div>\n  )\n}\n```\n","_id":"react-use-rest@1.4.3-next.4","dist":{"shasum":"6d174e4b7d18608f2c77d730c4f7c7d217fd30c4","integrity":"sha512-0rTZgmNacYaNJmPyJDZfFwqtgxA0dui2xA8s4ZKWcnP7doHkOcECjmxYD6UJSDcmoZelgq55XVjeS7R8DOcv3w==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.4.3-next.4.tgz","fileCount":8,"unpackedSize":39826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjOAVCRA9TVsSAnZWagAAe50QAJOB06oA6XLpuU+Hwo6z\nBFVBDSOAbhFCT1P9aM/v2YIbPEgkyCB1GWkMJt5DOtZDhwr/3Tgjl20SpM6e\nuYDI1RGh51K5QSULbA0/yjfRuMFXkT+sMDx+1zw5jSD5RwJP3lVSwOUqETaI\nSkQzrILZbVU6WmE0l6tMpLavPeVJIjWPvVWz+ReCO20+iWjmOHEX2JPmYMb0\nOM3lI5XTkfmBJHFpAWS9byRPN/0r7bwWuHyBGl5+MfxOIfOQuOxr2/D7Bio9\nC7sTPEwqyF2Rty3OpoK+QLn8RSiQsSX3T91hBgIZ3sbcXjQ8EOzET75upVtg\nQkpn2Hhv+BPEiF7U2qmIB2j/0YpxDAZp63XF7v7uaNndVTEY50IG/G9aOFT2\nET5D6fidkjjzt8a1fm4ug2LA73pmy6sISy1Jqo8/NNEVu+BN067LdNANj8zU\npSMPfgPxNma5zjAG/0or0tJpZwbRLU7J58q5Lsojw6iMwBPGuJ2+JzAoZfGF\nd9jcVaRe/jzS2P/SJaNWU++DIQZt2pUQ5vggIxk0VD6/0zQ6rmjeQQ0AOrzP\nPA8BHtcgAI2Kzddi26ARZCoO23e/ndLfM4WnyamMj4ypaO7lwwG4eBjRrngE\n9z7oYWf2mnT1jPPrEtHfrMnemFnnqKoMgQjjGhAeopooLxGHReQq4C8DYCoP\nYeSV\r\n=TEH2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA8Y6di7GLXlbmMJgPZR+Ojhga4jbOXw9umEyUWzDbT2AiEA31oLcaa3XHsvV1Kh7yXkpB8V1bxiqtLQMLwMnBedJ1U="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.4.3-next.4_1569513492511_0.8947121642691818"},"_hasShrinkwrap":false},"1.5.0":{"name":"react-use-rest","version":"1.5.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.5.0","dist":{"shasum":"59fb724c037c5c396d1d1e51e28601db789977f6","integrity":"sha512-kobkgbrfqOSt+B6IIqcgMvBsnwLFaw9fKp/CKm/WQ1apb8fREfOxfzDUyyeXfGkT+o/W9Dn4ubYbMSRWPJHotA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.5.0.tgz","fileCount":8,"unpackedSize":39819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjRWXCRA9TVsSAnZWagAAu9EP/04YT9vO7ukZpoHN0ZQx\nq1em2iZPZlyZPc/HK9j3A/UcXcUwxGzcqUN0We7D9UZlaFI+XeS+Ebmryyed\nkNSiHEV0fROkwlRGR0LcWDR3pR5y2K/1XyvbBCASGfIDAOCrwUHloRmNGkjm\n3GBJ3F+3v829725x7xIfTL+bxEQcrIGWpBl3q35a7+TuGlRRJwgdoaNH+wxY\nLQsCmSU+lrAF+yGbAvGCw/WJ9I5xL+GW73h4AOrmwT2fD360PG/h1gOUlT7O\nOtC+vcncXZK/Ro/cyDkUeHp3Ys0tz+Z4HGJuiW2wJ2r/FR0FpXkrzqn++icJ\nvNYd0fP9j8vDNPlNPMA9we5fMuZgApcBO7lGYUlc4c4bWkOv+tcypBz7VnGJ\nfB1sne3Cg/EbHm1D4XqR/Y3GyawW0e2BveZGhLbRylGqIcNIm9COmKRQGfOM\nAfkkOC3KqAYBs39SDKUMYOj5qAeeTB2mow1Naa5/z9j7ko61fLpJo87uELgK\nJ29P/VTwq8wD7G0J8j9Do60g3FpaY3108NZppc9WdBKWKELhykZPnhrwNgiw\n0Jn4CKkyOn59ZMOEoLi24K+wVH9AyFVKPfouh2uKM1l8I61j6c1VP/ibNeP1\nbI6xLQ5OMi7Nl3rzBsZgrDdlajXpaP52h5xxsSA2EjPf6UM6NqEjm8UC1YOt\nTwDf\r\n=mijw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaKf1fD7Z3PbOIyqUXhpMVlWIzKQXMwh3qWh/6jvxRDAiEAzs131eDQuBbYsE0vCSWcEQrMrCuva3q3WkpYAnsfELU="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.5.0_1569527190532_0.4595273801655706"},"_hasShrinkwrap":false},"1.5.1":{"name":"react-use-rest","version":"1.5.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.5.1","dist":{"shasum":"e2b3d7591681fdba78f4f1a8a647f032d0660123","integrity":"sha512-i5GT91SDdsfs4QrerZ+dfmCSrinp6LDtaODV2D5Kxz+cJ3U2qLXIdkiCzpIppRS/dcqgVGbAG3N3BFbYdcuqUA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.5.1.tgz","fileCount":8,"unpackedSize":40353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjlSKCRA9TVsSAnZWagAAcV8P/3WdrTDWATXlMJi3/Yw/\nKFAQZRD6x28pv6tQAcPsDGEF98Hz8fYtvbEoYkV5zf4h2PtWV27gKaqlKXW7\nGydlKh8cUlM03WRI4YGkw/kpIN3olejW9HXOFvu5VbLX6HTlaz1coTNcqgf0\n9m6X57nfXzBNNBGRZ+b1dNq8HYqWWh8X5or3pbbX+eIsTYAlZQvKtbeaujpU\nyVwjDQihVfDn9U7PNpLyJKjNCl0Gwj2Hb5i7ENeGBfaRi44RHHEWOp2cMjEH\n3474JOAgBmGvdnudgRt3ILprJ8/IbIBgsdCjUuVKwrueTvin/sB3tv23Nu1G\nh3TwYli3w1PqMKfet5B1y1DxeiddOYZtN91Ba//qDE6ioH4e7Tsy09zFEhSH\n+i9h9PKXtEviR3L63yFRfiscmZetwixItHKwLl91+EHnX5jyIm8e48O1rjH4\nC59UYZbKs8Ue9mEw1uJ0w5sBZgQpAgDtIYObuwdmFJJRskeuPd9TVWS/B0SS\nn0YalHMbOOFE8j1A2hCxx1z1Mdz9TwZ+drD84mVRhYcqspCswwwpyIkeOSO0\nAR75oO/C6YQmW2oX72wORxPr9K0v5M6Apsi1iDs+iZaDdb+BJ9PEf//oND/W\nTKTft9rb6U+j0Y5rQWT2K89l1Ecctd3Zy302zfD4BnWEVg3QEEGOqdz5ha7s\nVfRA\r\n=xVKX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPIV03j1GUOrfIGQlgkKYN1YOGknkI7ADA9Rtszyve0AiEAsZN4B5UotyXf+nZdD02rvuerIN9zprrayFcMsdA+FQU="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.5.1_1569608842149_0.630868068739866"},"_hasShrinkwrap":false},"1.5.2":{"name":"react-use-rest","version":"1.5.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.5.2","dist":{"shasum":"6f13c13ffe5e746d82cfafb4af3b72b86fa3ead2","integrity":"sha512-T7SrxsVPQ0DddEr4pJsKD4N/TxOYdXPJ+Aj1miJQwz0iE4WzCkvEd/1pmA8GpKoawv86Z/mTMbA4sy4ZxL7ytw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.5.2.tgz","fileCount":8,"unpackedSize":40353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkg9vCRA9TVsSAnZWagAAdf8P/3AWSxxrabp0Khg1XLSK\nDPGYJlbO+VXd4026h8dfQ692H7uWMeGofZGKugvXMlW7nJUi8bAAxLDa0nRF\nLNxznsDfTd52rhX5h5sdA58zrgxGMl4yjN0OCxFYwMz9thPRXp38gmcZasIJ\nJJs7yVPAqJbh69fRlOChqVOfkmYYpcTIHdAjc/mRVJ+wTguSJjfhlDqGhsvW\nvYA0nC4j/R2k1+MgnboD8COS2ZzaRODKhgLgCwY/q75f8aTazTDV00Sezdo4\nZz77esVu6exijZ/21vcUxlrQewnNZHAjLvxNZSbfE2ue2vKTtvx8F/tkmA4s\nzrh3tmZdkNKqeZkXmYhY8XRmLcEPgMvS1qiTTty33MuHDti9m9xhwyXogI5j\nEDnIQz42zqFgqU6lhd+WyauLCDzB5OoJWPpux+BGeCACzj2y2YFq+Wpnmn5J\nEhtBOq5i4KvoxJ9GDpAmeyyT8jVe8mykUpuWWB962nwGu8lfy3iriv/6P4aG\nuDBMecHXxM7Es11GuacXa/C9YMYlP1L7pBA5unih5jxW1v54IR7ifYYUhUAE\nFHLGzqd77a6hvmi4s2nR6Il7Pj0M5hsml5+1vcFj3t/2u4NWKgb0KK3gabeL\nv9fa310c+uJ2fqpXc6qveUuUhEIXlOKqvJptwggvoYjzLn67Icof1OrR1zcy\nUSF2\r\n=eQ1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBozLC3BGjWZ0A2sTAd6shvgOfs3B1RFilwprP0JknEjAiEAvmSPR14CG5qAE1AL1GBBGBNR3pJdf+c1AClcx8yB9xY="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.5.2_1569853294073_0.5877755731201226"},"_hasShrinkwrap":false},"1.5.3":{"name":"react-use-rest","version":"1.5.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.5.3","dist":{"shasum":"464b64efe27d4a4755953d8e94010b94ba7bad6b","integrity":"sha512-7X1u4cewGLyjHZ9qLlxLIisuPp/LpP8vlHEG6Bw8lhf4/jVmacy3GNXdmgQsTsY7bcS6pYE5qTMlPYru8Ix1Fw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.5.3.tgz","fileCount":8,"unpackedSize":40532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkkAzCRA9TVsSAnZWagAAlkUP/j5PQm9d9ALDWPhlkHCv\noo4vQNyWJobqMGI/aoGNdWgfYdjS+kGq1/a6bk9wnRY4tyVEUqukK6BzK3zX\nReV3vDNhihxzinwi4SwLPzsjomQ9YyO+8kkJY4l5WiSMi2MpkUMIDWaSROu1\nIYzcQQ2q9fWPQVXVIMcFdxV3J9kRRagKoafXb/mt3Sb16G2B/zbuySKzG+vl\neRQerh/BarNFISWhKaYJpokC2yAMPjGj7rb2I0+Q/KClj1HZ3kmE+9fv14dy\nfEk7qiiGiFpn0Z4mHEkO0o2BCTCTN/0Bht7mCSg8XhTHRmGFatyDS2iXbyma\nMTV5Pzg8m3djLhEGoS3yXYffL+G4oCUZ7GEuFMXVQKP1uY804jUh7HIbaGbL\nFey82hj9qc92yVJOOiWIe/ZQr1rQqlhI0mOV9V6WEsICx7tN5967Rho94UCG\nR9tsmyaNKtNms3I+y0x3Cm6Wy1qLPcZvcx487cUQNw3EQe2hj6cfQUhebtJN\nIyEphyK/QJIqcwBD9I8YypDUWk852rQJ9qX4LC+OsdCeEJlWt8dixCcVKAOq\noORxcinSopsdHspDkYSW90CqymhKrsMNQPcdbkOYJjmgxGT0CzVG254iDnPk\nzDE6ouEFufgbFcXs8Y8ggbPcPcwZLRfTPASisZkPgEuTMDSMp6lC0z6oXD7S\nXJ93\r\n=NgkV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBVzAIoPBU4PQvUvijWufQjVIgEKEkJ/NwMWDjAYtGQAIhALouxFuiRWFWNyXvNGisNgafdNi4NpIUlUAU6wQbmz+4"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.5.3_1569865778652_0.8636579565219187"},"_hasShrinkwrap":false},"1.5.4":{"name":"react-use-rest","version":"1.5.4","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"axios":"^0.19.0","deepmerge":"^4.0.0","use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.5.4","dist":{"shasum":"5875f464b745c277c5059e40e49c83bb2e119bf4","integrity":"sha512-BlspWqPFLDMqqMKbHmtA0954SNHgJpHabec32Y7ORRWN6sE9UoYSnQ2VuZ6DErJnZA/ioHF02TbAl1YQ27U3Nw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.5.4.tgz","fileCount":8,"unpackedSize":40441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkkYcCRA9TVsSAnZWagAAQOQP/1iCJU2KRocvV/dQ0doy\nmweb6aKZmzrxmZvyioT3fyjFtZcYjd6lOsrFs7ycJAtdr1TCwJi/ModdUC15\nWxWv3NXWIco/2Ro3dbs0MxCxQbvCee73hoNXDUq+OXAhJFRMO2B2NOFo0mB5\nl8bKg01QyIll3eBayUksn4PFXsEVEFI9VWqqP1fYDLh3D4WZLt86yEYKh+Gc\naUsOFgImx+ZRYKKlw9VfHYGOClA9AoZGwdsHnK/UvOspiIu7blEbRSQCxaOP\noWFwibL0WjswQFpNC+95H0phvE3KliGlMCFpDNASqgJDjkRDcXW5bGrGnOui\njAwu+foL1Aw/he8yu4lFkNgsB9NnRn0Hpn6iWQCtxISpX1kSRv9eC2+j3oUR\n8cAGBz/s+fT4JaSFywRJ3ujsx2RmQl07AdtpAU/nKrvl3fh0smuyA2xCPJbH\noWTgFWdLSb567Fugy17NPqWrii7rjmDldJsyIMBeVnDpZ7ZKPti1ts5SUbHA\nkhQdP7cLJFAw2FIrvXWVyNSzo/FFi9wC9Nh/WlpawIE1gj1xhZFTvvCrTUEg\nAaNB8ts1xKK5wmIkUnI1/eAE8rN/vpIOIG6IYPQuPfh59O9IpC5h+I9s18LC\nHYiQIYkpgWH57FT1IhpUqI16H4o/WfaLwWTE5gBID1cmMprUlsnAgMdD8yjE\nIxiN\r\n=kvEw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKqpXPg2vtu4PEjACHahk0mZSHO/RvmvEIF/N0cZ4EEwIhANdsdWugQPV543NfEvK8HqKedmREDav0ajCPg+boLgYF"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.5.4_1569867292111_0.6642114660107303"},"_hasShrinkwrap":false},"1.6.0":{"name":"react-use-rest","version":"1.6.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.6.0","dist":{"shasum":"4fa34c0386e0b29e008da0b001173ce5372cd0df","integrity":"sha512-CBQCejRtWKB4GrV+3FswHo35Mdxa2XKrBeYYhBwByfnALHprmDA3QFFNU86kL8YVG1pWSiCOmMZClpLj2Y89Sw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.6.0.tgz","fileCount":8,"unpackedSize":40475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk3awCRA9TVsSAnZWagAA4XsP/iQkw9we8/Xpe2/XLNV8\nm3kb3alCjlUUO74mDgOp3wGT6t0KMKKnDG/GKpXdClEvulIMNGBG9EOw3Vw6\n6EAifhICUwJtwFpZStFgCBdZ7RcQwB9jBsLmB4uWQYy5w1IbLN4I5BIm6MFT\nYiO2uj723fdOryHbVUbWuVeAyjxQL+zVJ/ByIwW8FxnLgwaAFKTXRE46N9aE\nFUjPPZS1xJ9WjG1qNVep6d3sph20vr4S0jTkoa4vJviTiXFtJR8lco1cp5gw\n/nm5o1jCq9ezi+vSKGsFZbSRsFwy8tPzB+/5nG7riZqKnJ+aCY6GEb3Q8HOJ\nxekkxyVweo6BMOmhkUdqaCvzwkMjz8jp+uP0hHL4j1RhpPfhHbkvGH2XQQ3t\n8bF6r+4NjIKxhvB/EXzFACHibjnk7fDmgFe0ebR/prz+zLsO7XahSOY9tymE\nRcQcJcLEk7tKJOsW2vwcd1AR5sDwlLPXIh4BGO/YEjjpCVTbLQtQz03dYSkF\nEH20doGD0JtBQZbxj+jy6IW6u+b2sXMoi6xt9TItK63ij0gAViDdJdgOLN7Q\nwv6EyNl3ZBX+Pv5J4/ubGd9PzLjmimcDseX4ehEHFU23A5of1WMJnZitUFqc\nZDVJ9n1fZorIEX5AxTL1xBaUuZbd6KCHvY6+f3v7NyRbzbq9dlAbZR4wcaDP\ng9Q4\r\n=nIJS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLsSgMn621Cqw1ZrDKvRdZJc0tsY+lrQx2FInTKeVqTAIgS+f4jeu5q28ENlJUKz+ihnjfL3W82LhC5G0+l6cJ37g="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.6.0_1569945263878_0.9474658343615765"},"_hasShrinkwrap":false},"1.6.1":{"name":"react-use-rest","version":"1.6.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.6.1","dist":{"shasum":"fc4647492810f322e7b2fed91b55806f6111f795","integrity":"sha512-s+RTwKJuthU2a1rzEJuiKD5b/7liH0psl1Xyx4yfTfhPNVftKcspyGJtlUH5kp8YqGOssmUT7CAS4PEVWfRaIA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.6.1.tgz","fileCount":8,"unpackedSize":45383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk3b8CRA9TVsSAnZWagAAe6QQAJ0zBRDo46Zhyn3one8e\nNwWFIs4nrMMXSnUa1rMSPRTUOsLxUsprxF3HXJ87qzqXYByT5gyTsui+8JhC\n79E43xZWX5TkG+NxfC6hhGUOxIAIVuYLdXoeC9K50JH/RNhCmbmG69gyH/eY\nifhGlYaZwUZ2QJb0jdc2rkyhpwsIXGV7Y8n1OflwYhlGQ5l2hTTrsECnm8iI\njZMp5Y+cU8f78TaTLHbuy9TdLzu07Ca35ICGVZuJuCySwvVNZteinlVuAahW\nyg4jHYCImopILRMfxSk73EzFXrvq6CQc7mBGyEJUfu12/Vh2IIgT4Gwj+8CK\npV1oVSnEVQgBOo+DxkD4NDJKPB2qrLWaa3gnDfFNm07z5SFG4yW4lT12Yf8S\n7IW2V/SDsxpxzALcGxgZmxVpYtA3Ayl0bDMUrcEe0h/zgq97fRo9Vkt2qvkR\npXP5sK+vJYRtKiXReHCKDgY6blr5fMk5sWFUd35p86jlWidSza7+9vQyL6dx\ngbTxwYBNOCQseGj3/V6i21UrPzxT6T5E//LlD9zXe7Ds4dSS0zKf7OxvjD9p\nNEZGfgHURju0YpvD1l992msVpFkJorCErbd2XAeRz24dPk0+bIgjrKoqzaml\nApr/MlPqu+22Vo3QDjvBIUQEjEziTVQntlS6ouHtNLQoCS9PcwA+hfpMtRFu\nueLM\r\n=flV5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9Y0X8fDte06JOrAKmLs1peWoENpY6wLzaDHr2HtOlQgIgUoXDhlMB145sEzcTRnpkTFgsJRkKjG3sXcrBySrmMO8="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.6.1_1569945340303_0.7537110670672045"},"_hasShrinkwrap":false},"1.7.0":{"name":"react-use-rest","version":"1.7.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.7.0","dist":{"shasum":"208c2d02b24cac15132440ad0cd0eaf64a737aac","integrity":"sha512-fvY0EiYUgnPfW3s3pexBZpDtuP8XeSfl5GZdck0bUnGDeEyqt0NY9a4T+k3dAQEa9Fglj/SNYOqWuiZeLWP68g==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.7.0.tgz","fileCount":8,"unpackedSize":46518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk5M2CRA9TVsSAnZWagAA39YQAKTqit+BWAVTLsXx3w4A\n9vqTR8AAl1R171x2ptHs8T5EtibDmww70xn/kOr/4q7BaFevp4vrjsQdtfKH\nXwJJ1oa1IGsSQectD1bPeBHmsMUja/xfsmRFQYwsQG4Dq0K/qN1NHxAuZDOC\nTDzrO6vpc+fQuKJxZMnJujuPxpZktZoyQarWtWWyv63O26pZmRmgDWrNc/gL\nfO7qH+M6DvaioPwAz644PXCOtitqZj8UsAEeGCBWsQOeJrsL/MkFGHG83CPl\n67HnHAwKUABSewFITKEP76nkXRA/VkBYHTbOyOgZ5OAHYeu8qHMcU0O/x/oo\nDGFDFgo2+uDBPSxf+0n1C2MOhItKlU9xdk6FAce39FbKeNxyP2Ax+tCyLEJC\nmJr89Dkomsx5WlYLMXEUW/6gBvV2IFh4uw2AVCtHTmPD4JPAkR9iA1WA82eO\nkzNCD8ixCcv3HR6Yi4BVz/zPEb/DhE7ua9NXUq5MqEcQ8AE5LfRhxHR4vm5Q\nSKWzRCseIGjwXj7zqqM7aR7Z8ZkvbUsz/2QZPhbJ52p/P6G3K994+khDhIb1\n9xwLklZDGf1Pjh7zGhBDwnMmn3XY/j7J+uWShhvKGzCKUQzcaootWgTTJggl\n9tVHzJNT9dRg7IgnkWJaV9wh2XOg6npfJoiB7jJmKKKVsPNeCuhNCjYEr6Ym\nRSFg\r\n=282M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/GfXeqpPMlFcfvVMt2SRyuGUDDgGVSDW1w9hgZ2a/5AiEAtdoYpmE+qsYlgPsno6IPg+ln11cmty4+hy5NJs3SxSI="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.7.0_1569952565500_0.7589126086793965"},"_hasShrinkwrap":false},"1.7.1":{"name":"react-use-rest","version":"1.7.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf build","test":"jest --verbose","dev":"yarn test - --watch","build":"babel src --ignore '**/*.spec.js' --out-dir build -d && yarn test","release":"yarn build && release --src=build --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=build --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-transform-modules-commonjs":"^7.5.0","@babel/plugin-transform-runtime":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","supergeneric":"^1.1.0","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.7.1","dist":{"shasum":"25d607b54b6434f9f9da3396831a8d0b3f5eb64b","integrity":"sha512-6jAgSmST46/4AqivtzlL1O3dLU1/cWNNOG8fcYT/ZaU15A+ozyZplrpi8wTP80dQ1PTyukYVWytJzDlXmcX/Lg==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.7.1.tgz","fileCount":8,"unpackedSize":46300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk5RfCRA9TVsSAnZWagAAc8IP/A0XyyfKNwUfkgDt2xuM\nqI4Gp3kdP6IWzMluCKhxiVvlw4GenBGwgoXEuhXmYNyf8G3lPs7NUZXQoJAY\neGGFGy/t3sBxPR7cYkncGoZxRsAOBaDs+E3rc33OdGZ50jpKFc1CcjVTqVSI\n8coQG+PtsVo+3VJHzUUZI3CZSbi+LKltxgl4RtbS3i+ZJU7M4VHwStkGZD1I\nG5S7tEp+2w+Vf5PJ+N3d2wMc3eqxAmzX3UdoF3qvHW6X/k5B8NPRGB4+O3JM\nDc5CMbTlBXsl33nguP9jk2Bs6Zb454XH3TMbDye2V7huKFDHzKIr7BcCYeIu\nTH2lBbNoCBENbFW12ZMqT1iTfK1tcoGvzvrZE06gMFDk3ZzxMQgEhb4uzK8x\ncIYiBrCV/cUBeTmpayWxFCdhHuYlWBSGLZfifbeu2oZvMcFHE5pgzoYaj8NP\nJ2uT10fGLLT2xx8GQ2IH6HAiUIbRLf+KXLZAcAYR65ZApSJfO/brBgrrqMNu\nfEWyv4iZQlUs+tHbvA5GOQFCLZGuN2tMXKFX/OQ1hgAKrDq4twXNwtfWP//z\nFJn8KEu20EaeHsWFtNUFtKSrGpAE6atcHQfn9yl81V+GuWjvuZkvsOZrgvAb\nTNhtjDoSNeJrzo3/iMVFhSRiu7oTG6WAXKFlUDBr4q0VYgiINjxOeGIMxB12\nIiAM\r\n=pTQ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICpmLnyTeIBQLGJJKSg1CuuOBjiwPJm9tu2ADy3VrjAGAiEA/fS9Qp33k1Zr/X5oM/VTHepsdpJh3AC+5gtwXr8cu2k="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.7.1_1569952862978_0.21635613515711105"},"_hasShrinkwrap":false},"1.7.1-next.0":{"name":"react-use-rest","version":"1.7.1-next.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","rollup":"^1.22.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript":"^1.0.1","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"readmeFilename":"README.md","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![minified + gzipped size](https://badgen.net/bundlephobia/minzip/react-use-rest)](https://bundlephobia.com/result?p=react-use-rest)\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n\n# Installation\n\n```\nyarn add react-use-rest\n```\n\n# What It Does\n\nReact hooks are awesome, but loading and managing API endpoints can still be a pain. This library exports a single named\nfunction, `createRestHook(endpoint, options)`, which allows you to create a simple, yet powerful way to communicate with\nyour endpoints, without needing advanced state management like redux/mobx.\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n\n# Examples\n\n- **[basic](#example-1)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n## Example 1\n\n**(basic usage)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it\n\n  return <div>{isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}</div>\n}\n```\n\n[continue to other examples...](#example-2)\n\n# API\n\n### Options\n\n| Name                      |                                       Type                                        |       Default       | Description                                                                                                                                                                                           |\n| ------------------------- | :-------------------------------------------------------------------------------: | :-----------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **axios**                 |                                 `axios instance`                                  |       `axios`       | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)                                                                                                        |\n| **autoload**              |                                     `boolean`                                     |       `true`        | data will fire initial GET by default unless set to false                                                                                                                                             |\n| **fetchOptions**          |                                     `object`                                      |     `undefined`     | Options to be passed into fetch requests if using internal native fetch (e.g. { fetchOptions: { headers: { Authorization: 'foo' } } })                                                                |\n| **filter**                |                                    `function`                                     |     `undefined`     | filters data results into the \"filtered\" collection                                                                                                                                                   |\n| **getId**                 |                                    `function`                                     | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE                                                                                                       |\n| **initialValue**          |                                `object` or `array`                                | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint                                                                                                                            |\n| **interval**              |                                     `number`                                      |     `undefined`     | refresh collection every 5000ms (5s)                                                                                                                                                                  |\n| **isCollection**          | `boolean |`false` | set to false to allow direct REST against a specific endpoint |\n| **log**                   |                              `boolean` or `function`                              |       `false`       | if passed `true`, uses `console.log` for debug output, otherwise accepts any function                                                                                                                 |\n| **mergeOnCreate**         |                                     `boolean`                                     |       `true`        | use response payload for newly created items                                                                                                                                                          |\n| **mergeOnUpdate**         |          `boolean |`true` | use response payload for newly updated items          |\n| **mock**                  |                                     `boolean`                                     |       `true`        | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)                                                                                                                                 |\n| **onAuthenticationError** |                                    `function`                                     |     `undefined`     | fired when calls return 401 or 403 (e.g. can redirect, etc)                                                                                                                                           |\n| **onCreate**              |                                    `function`                                     |     `undefined`     | fired when item is created successfully                                                                                                                                                               |\n| **onError**               |                                    `function`                                     |   `console.error`   | fired on internal error, or response errors                                                                                                                                                           |\n| **onLoad**                |                                    `function`                                     |     `undefined`     | fired when data is loaded successfully                                                                                                                                                                |\n| **onRemove**              |                                    `function`                                     |     `undefined`     | fired when item is deleted successfully                                                                                                                                                               |\n| **onReplace**             |                                    `function`                                     |     `undefined`     | fired when item is replaced successfully                                                                                                                                                              |\n| **onUpdate**              |                                    `function`                                     |     `undefined`     | fired when item is updated successfully                                                                                                                                                               |\n| **persist**               |                                     `boolean`                                     |       `false`       | will persist results to localStorage for fast delivery on page refresh                                                                                                                                |\n| **query**                 |                              `object` or `function`                               |     `undefined`     | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })` |\n| **transform**             |                                    `function`                                     |     `undefined`     | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`                                                                                                                                |\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') => createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err => (window.location.href = '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return <div>{isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}</div>\n}\n```\n\n## Changelog\n\n- **v1.7.0** - added `fetchOptions` option (allows for custom headers to be passed with hook requests)\n- **v1.6.0** - removed `deepmerge` dependency (previously used for options merging)\n","_id":"react-use-rest@1.7.1-next.0","dist":{"shasum":"8532e56df562c142e77ec6aad71bf472f2b7c34f","integrity":"sha512-GZXvDfrwTXsCZjcmZu5Bnmha7acsV3EKs8XoG1QkcOl4qJa1UjAru6t/8q20bDu3TpARm+cegIdztvkiKpzSpw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.7.1-next.0.tgz","fileCount":4,"unpackedSize":49231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk6d9CRA9TVsSAnZWagAA6zgP/1N7eboFGstseTuocoZu\nzrmcCPSmAZ9WWzI8TqkvcDD7lT43iUarSiTVZJB9CdzOIQbtD/Gdy0qFaLCB\n8LSaOmkxmtRkRnHhxRCsjvl4Aradz/J0Ycq2PZEJQiu5m3pqyebvDTh0oYUK\nmEJWgKp+spvxRDjTz6HzoeUnVzqdhKCf9h6mDZ9T+bJQJ9yUKFC9n7gfivPi\nNlhldgL6217W39P/kYP1Ax57B/1yv3tadTG0v+fw/00PUX+fWMDzs6QXTf0C\nCoZCwU7c81HJdgihOPKzeRa9n1wKi/LMoglRRegN1QvRpQXa6DhdLsZplQ+I\nFwCZP7KtZ1OWkrbCQsS25sajFBJX4iMF2RblVwhlTtlga83af6g9FZe/J8jq\nIhbgE9RmS3I0KpOc0NZAUEEpWmM2wxRVpw1Ak6GOrG79Wp2xJYcuSMZeqGGf\nuZ7IOkd2+JKzW1WzSY5yB671pYMEW6o4yT6O9i/rCV89LtlnrAlGkh4Pl6bC\nRzsXJ0JXuOnJgkuIcECN6xm8BezjYxOgk2UiDHgBvigtpCrdtGkwYjsVwI+r\nrC6ga9Ll2g27JbZV2Yoe3SHtqErh+NIqpKRlbLFiMAQ4MnUCRBQOFk79crQx\nFrK8qMzrXzReRtab9++j7YqCSqaTW7nMDkNCeiIz3uLh9Rw/qjL4OiN9OZBA\nTvbc\r\n=W8co\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYrID16iI0w3t4TCoz3OW3a/2246fqNUH9xTsmjF64oAiEAw75VtAK4LsRkuvpsyV2SpRYabjN4Oy0kJiI5B7gl+mg="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.7.1-next.0_1569957756910_0.5639435662075145"},"_hasShrinkwrap":false},"1.7.2":{"name":"react-use-rest","version":"1.7.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","rollup":"^1.22.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript":"^1.0.1","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.7.2","dist":{"shasum":"9fc204399e0322886e911577af5324353a9747af","integrity":"sha512-ng4TpdB0qfJSXfC8XwzB9uEPJ96cJ0BL2AA9xwT9e392wKAbv9MaRStEUzK7578Up057qt6H+B9rUtaVjhUbyA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.7.2.tgz","fileCount":4,"unpackedSize":49307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk6yOCRA9TVsSAnZWagAA51YP/ispsIGhfgcPgrIOL3EI\n0CWTY91TvumATNHc9D55HDU2994INx0UEwulSmzSW2eaNSIr5Fl4eRv9a/43\noB8A12DS1OHrm/lF5zVg9+h0rLMOdLw/pjvgkAZB2x9DnK/ZtUG2nz7wrWAT\n9ELGt1T8MsFQEDsGhmmmeWafg3xv5TbEui2/upgeurqYQzhllNkwgoR45qf1\nLKqoCm3KrCiQrLhOjDoGcPqJ8VBZ4YtAOTSFT1mnyJT45ODwv5LJo9kiDjg/\nuwzoGtWhUmUu/RXmd27JUfoCFH9JfOAAqKOfkUcNGymdL8HuKlYqfhHqPer8\naeolO3SgwdcRm/WjNw/Pg3L6vZEZ9GxCaTljlRGi8mMVG1ZsFOOqtJAipNVP\n8OQ6Y+StACj0xWQkcaP+yHODkfymcTp0uVw0plki5FqJd57Z7xrD5fpj8tKs\n1mF+D33lk7n5EsjOnnzi0FtMAnGEvezu/eMxsZHyzSHj3q6pAd+K11yfN8py\n8Y7R3C3SsXDAg2+dGuvHVIooVtjqmlfGuJcK12TrjRXUv7FnLvMMAUcWfGqD\nno7DUwF9HqKCWDQ+zeVTMttBE8fDDxCO++Bk4XMVRUI6cmXfsJK5Timfml7r\nMHbtxdXQpizVNK7FwRMWV/nnwnpcEZ3NLQJC8g8CuLRbdgoxpBkewKX0QgSh\n5Ogu\r\n=Eqz4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGKjTK927L7rD4ahX2fxjfsnqX5+eunPFGI4buTfDHPaAiAeWNy5+yJzqx0GVPvsGOHK4u67Fdb93SmbZJQvlwJJvA=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.7.2_1569959053300_0.14555256680667217"},"_hasShrinkwrap":false},"1.7.3":{"name":"react-use-rest","version":"1.7.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","rollup":"^1.22.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript":"^1.0.1","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.7.3","dist":{"shasum":"cb87e057ac9b15ef148c7776d46d326c8a22384c","integrity":"sha512-RmnsOcYk48bvlg7tKSHPofMmHgLTilyAdJp35ptglzRcf2vG1yNShWj8WgsHaThdW1+DWolnh5q5SYMQdeVQkQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.7.3.tgz","fileCount":4,"unpackedSize":49434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk7UwCRA9TVsSAnZWagAACOQQAIQJ2L6f4p36oxo928jX\nUcZySqY4ncezJxo0CQXjvDqKXlPemRaYrPcGk/og1JJE6G54TZqCgLgk+06g\noJ0hFWiaNJ3Nwykqa4rKoaymwh858qwS8Z6LqWk4m4Atq7STL7cw2UxeBEPN\noN8ehWMFo19IGk+GXObkikw4z5Ox44XaeugcrwDlFC3hdXVTtJe1LuUyqqAB\n/RgcP4xBg7Cnjcz2riQFQafjcapngiKvUU31h7OIcRVXNqTbnRcr3LCN7X9I\nWpv8IakEdKyggYBC4qR0DNa8+ArxXN/cBM7OCg7DWIT/mxykPowhD2CmfHjs\nB4AxE/cKa7sGz2j+4rNad3xHgxL8M8dln4fjBIJKs2A7O+spuMO15azA+BW0\n4pLM92YwjqKg5qGTjZdA/GsirW4ZsIxNMptI9yPR/egf/xOOpeYPIKlBvXlX\n7DT1YPhDgR+TzzLKc6r9vDigVEMkkGa+Eh7AaK8AhxGwvZB/7fNY/XMaQMgM\nL9SHgj6R+Zj902bTudbjfE1G4/ta5cFyLWlK/7zyMVjeAKIHnZ3lISQhco5c\nxJeksxKCGCBOxtcM7eW4En5j0ejX+xUu9ZaO1BqAlTHq2DEAVa5QyJb4MDEY\nPW3zNFkh3/n8ZVGGt0Lb6Azwoi5BqFTRfbZVyxvn7XXUpAPH91c4dUfHp9uH\n5L6G\r\n=he2B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKFo8VA3OaAXXZe1NfwDr8un2bOXkUs6WmnI94/mXPmwIgJ1DiCi+jqO0vI0Efg1vIFMWPBfE5PPkUT2rYfSlxrwY="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.7.3_1569961263402_0.6342374508235027"},"_hasShrinkwrap":false},"1.7.4":{"name":"react-use-rest","version":"1.7.4","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.3.9","husky":"^3.0.5","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.24.3","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"use-store-hook":"^1.6.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.7.4","dist":{"shasum":"fa42bca83c933adc5c5e4fe63b4ebf728d6b0c3b","integrity":"sha512-YHt+Ol8phesTIKmxTVTDS0d1KhA7IB0m9ZQ5JE0uebUfEBudq68/i6ocxiIuLqtHfy4PszuQOwQNX5XrX0Ws8w==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.7.4.tgz","fileCount":4,"unpackedSize":35501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlPNECRA9TVsSAnZWagAAJKgP/2VgCloHy4p4m22Npc/i\nbbT3InUfcD3noZAMX8o9jJ/14Nc06wvPN99/1CNuPFQ5NifFQkw3NFcFKHR4\nYX/dWKj6d7zVbQRMA6qE8yKTBnbPIgDYX5zccjYubNKBocSND5OhA0C7waoI\nHxhLE1ajSqpF61ieREWFcIp5wtpc+/TLCBrR5wz6xOc34QXbI7FZ9Mz4cBT3\nL/xlseRxNYg6g5GK7HewpQghFn2zTNcRNk2mcCCMeATz6ciZVlSYLNkfSCJ0\nhWpFu7IJJKw9r1mEbvPV9TIWCwA4fMNZDIrwIKgdyJ6XXOFnBO+R2GoDmXrw\nDFV6jtZiWMrO8Y70dtLh3bSpU9XEIgLm7GhcIcainFYqm6L5TGPbf+PskJT0\nwIfRZqsUoEx0M7e/dlrgLSmgP/e/oUHUkxc/bblRoCFzyLfcRfQav+a9blAg\nxctAnQP3AJ3Py28qWgELRZNAsRpOdU6bKXTl1aobffD+aeiUZ8vEQIET/VAN\nC8IWg6mKKAoJ3aX+pu6OgKBduJXXVkFQNJIL8fPrGal5t5slg5gpsSvI0Ati\nhqWWDRwF6T/Wo9All+5YMm9hpukyiKw2HmgjaKwVUxUFRjbrliN3iGQvrd0q\nGmysZI5wpgwkZlhiW4uwc7bzixAisSTc4E9aUEkc7QMLOyZAWWnDU6ZsG2jr\nJuJY\r\n=rTfR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBFZqyeFEIBBv8EL4jX3YtEi1i6LFlpwPtg9mNA6vfXAiBOPS0SA+LfIMERopH+extymAdG2c9j/CL+8WZjfr0CaQ=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.7.4_1570042692070_0.30079512404543585"},"_hasShrinkwrap":false},"1.8.0":{"name":"react-use-rest","version":"1.8.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.4.0","husky":"^3.0.8","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.10.1","react-dom":"^16.10.1","react-test-renderer":"^16.10.1","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.24.3","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.10.1","react-dom":"^16.10.1"},"dependencies":{"use-store-hook":"^1.7.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.8.0","dist":{"shasum":"999bf070dbb71183682edcfeccfa4cfc4dba6ce8","integrity":"sha512-CEOP5wOqK5hpPedHdn0KrWHVwvjmIIWXibHXSSuI8jaK2xhYf24v0rTr3J4NtBVQHk1TlfERM2kxfU0A9WcAfA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.8.0.tgz","fileCount":4,"unpackedSize":35506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlSz1CRA9TVsSAnZWagAADZ8P+wRJBLU6ZDTUFS24cpRB\nxJzVENaQXEWW2MH1CyaMwtj4ehpAwI6wBpr1OrFQ7LnT0xMcnFe7+aAyWYS3\nSHoFrViAKWjBig0WVy+PJlb5z9PxUU5+rkUpI9XEkQZkzHOa4rZ1o0b7OHTF\nZFzYzw6QqN4s00G4HbW7v4yftWjE+BquDaiktdjVBZ+FTJr5bbL2Bj4w6hRN\nhr9JcCl4qn5wxH/GGRGJT20/4LKVlhXxSRpXZ0ong++tSIeLXhpi+r/JNNfU\nQK0I/6NJ6lqn7oPs99GEoA2/dX65kxtrICjis8s7QWE4yN4WJxJ9boR3WAa6\nof8YHC69rI5c9qgLPQJ3V9X+TE3tBfxkUz4x/kJ6PlZ0cUjWomOG2n+cRo08\n44pdpOot35KPRicHxPnwxJmaGFcHB1bYaEPzH4GVKikBjnPSSWuXzuOoisbI\nj095U2DcWkwCINv2ChsiFzB9lAjIJhvpxSkniBl8dVeJCfbRwctTeSYpFMcu\nXfXateApCwDuvaLNthc519vKcfFt++QfIHE4HsIxQ4fGGn1sNANHv9TKIoa8\nHx3Natj9f0pHcxBs4OmLmvpw1m8x9PaYdFpUC6+y8Mz0MwWZrZry4CfQd1lz\nTqMY88XeYLqhANejmYiY7iSAH4TldDOwOH+iRdqGqr4T8q8UbfLKSalR1NK/\nFcQH\r\n=2yi4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCf/cE7A8/qhSmTvFfwbZVyn5twpBFBj3B+2XFP0Q4+PgIhANZNCljXQVhZYDmC0ezuArj0qlii0s2RqJujcZL40tFh"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.8.0_1570057460729_0.21015983836422314"},"_hasShrinkwrap":false},"1.8.1":{"name":"react-use-rest","version":"1.8.1","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.4.0","husky":"^3.0.8","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.10.1","react-dom":"^16.10.1","react-test-renderer":"^16.10.1","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.24.3","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.10.1","react-dom":"^16.10.1"},"dependencies":{"use-store-hook":"^1.7.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.8.1","dist":{"shasum":"5135d2e1ad8c031709b9d42857a8a0535b245e3a","integrity":"sha512-6KKHWFk97DZdEsEUkSHM6d3SQxkIdu5OABS/ei4rZTY1B5s292GYVEC+KKE08KsCWmapKvtKR585GIQUYc+Ihw==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.8.1.tgz","fileCount":4,"unpackedSize":35455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdl22ZCRA9TVsSAnZWagAANEMQAJojnSjMyMBHebx3ALtV\nWFY8q/JR7SFxgZCq4Q1Xakv0xZioXeRHTI7xQNfY/nMNguOOduhdfqKyYpm9\nmHXg7JNR2fK/V8w5LMOtCJZKMBUY1d3S7RsJVz4nKboEVVyDaYejbfrqRfrM\nMoMsUlFrNL/G6Hgz4ch3F5fcOaE02dkqgLBs2BdqWk9xlIy9biPjf9nPE6xP\nljWVfuHI/TJvqHssMr/TuyYixScU9uwqVoBNs03qgAatui8qQFtw11VeKcrh\nanKw1/hd/bh20td4zEPhpIlt0t0zfvWzNIiUtcYhvQi38qZ1B3AiP4WHXKCO\nDnz0pmdKPwtG+BKlfxgftClusoNbU+iBm59tBpItSPB4rP17EdUDQBKPPQ8D\nzVavUZpOczHSldDhM1KHCDEni02UodQ8mQn5TBP9etZ9iP/c21ln5cOU+z/j\nGer5bUMHb66flIzoJzw0ZH5gpF8Jak12616D6bGIx/ZlyKeFx327NC3bJBVZ\nQ3VyNikDScXy19x+f3WoPFN7yDq+PmKy6O5OmNqDj/f1zL3NnSniv+JaTn8R\nAGS3LgTYS8TXJSdQ5urEDksQrT2JC1yH7pfa9SJOC08L4MQhooXLeMIxCf4f\nqoMDgCfmPVRnLsZRHrgH+5/4Ih1u+cwdgm6D2snfH0YxR12R9xG6Ksi/u22f\nkh4Z\r\n=1VMV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICk8EmBefb7nkcK3uf5mlbNS6hmxBKboUH/aiqPG4njvAiB3OQmlj6c1SOXwfic6+PzPgdmjgNOYEV87rivBYUqnCQ=="}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.8.1_1570205080648_0.3355675774642861"},"_hasShrinkwrap":false},"1.8.2":{"name":"react-use-rest","version":"1.8.2","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.4.0","husky":"^3.0.8","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.10.1","react-dom":"^16.10.1","react-test-renderer":"^16.10.1","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.24.3","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.10.1","react-dom":"^16.10.1"},"dependencies":{"use-store-hook":"^1.7.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.8.2","dist":{"shasum":"4b51cc8043046d56d0fffc442ae187d7d2c7ea21","integrity":"sha512-pHt49oLQZ6g2AT8ojxO8FpDeG7Cgbc2sYD5gh0i4b0utD77yCwCW54djrKtVSHsVC/A7uhC9h/bBBU3FVXWw5w==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.8.2.tgz","fileCount":4,"unpackedSize":35667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmRgSCRA9TVsSAnZWagAAPXwP/1Pi8LqsAfRtkk12AJjz\nY63etL+cIPIFQR0V1BJE5pWyysxDzILgFNFp4DQFqWV3u5gp3oKAoDtzHMPX\nHZU5XZg/XoR7DSNKnSy6ZiZ0I+m3Y1/UtXst3RBoZ+DWoQA/8XWsy7c+sATi\nb4HtGmEO1AlptwcPlRzdiuNrwWP0mkD591dOb61fGm/jHi02hvjT/2u+uKZi\nw5yOqOhu1wBmIYDDPbG+RQAx0M9enrK8C0znJUKgy4fWoS/o45HQQv1Q0pP9\naKZ+Br/Xs9j4BMMkhmOjHgujvud4ExTDEfndEmXzwkR9hU3Ltc3UuluoZ9vg\nGjLg95Dw7x1aZUO9rNfXgHwefit7d0/FHjgei6IeuXpEGf3yrEDmU2iNQCTC\npXY70XbU+qZPRRETpFaZxLIXVT4XoSA4wJokPDQPaE7hrQXsRHLXJxesLCW6\nk+jatWGdMBH8obSX7AlR6RA/OhFIfn9M+mtR9x3euLKACoLzlEfVn1dB+mrG\nRV2oUJgQkNrOs1UQlao2FbN9lzRNnZBiHS8JFfTCJ6W4rvhstv7SOgmIqMPQ\nqmf+nMhj0sxCZdVQkW/qV86bnJN0ykEJuqScPArzjk8R+VMFDx3wTgBYX7L2\nlj4U8GWUjefnk/1HOhtO0a3AFCiXHLYvyvg61nypsxL0UeSPSYlQDbLVokQy\ndsDZ\r\n=dey2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD82LUV2mWWbU9TsA/QUQd5J+Z+wJ3MrxEePvOJDFuW2wIhALjbgs+Az6xRo71Ol0wR9oyp2sWYmtwHjzQi1IE7FCaF"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.8.2_1570314257663_0.9379202990012194"},"_hasShrinkwrap":false},"1.8.3":{"name":"react-use-rest","version":"1.8.3","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.4.0","husky":"^3.0.8","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.10.1","react-dom":"^16.10.1","react-test-renderer":"^16.10.1","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.24.3","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.10.1","react-dom":"^16.10.1"},"dependencies":{"use-store-hook":"^1.7.0"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.8.3","dist":{"shasum":"6f2772140b3047c718851ccce6ad56f6e413a33f","integrity":"sha512-6J/pysmudjWjneCEc3IHwPnUa5id/7DlOmlzMaRpFznqhtWlwz2zPDz+P/1/rQXP8C8UrH/GmwAeg12q3S8QDQ==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.8.3.tgz","fileCount":4,"unpackedSize":35805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmRprCRA9TVsSAnZWagAAG2QP/jE3s12WuYdtG8wJs+BC\nUylRKI/JyI7W5Nf+Ef5YsOcQIIM6nzg2jn4Rm5coHHdEyiSRkOXOtc9EtwLi\npHjyUtkPJ1k8U30SZENu/0LHfFMHTbEgWYlvCNAReB90gZHHzpZEnIxD/RaC\nhqSmxyM3fSRu4yTpdfyxk8fHJ2IZfz7qXpc34P3obcV8yV810AY+C2CbEQgO\nd9uv9s91Y9qpOFxKZKhWC6km5FD/yrm142uUDo0jk9v7/7FBZOU7NYt/qppp\nW8jbpNXPDDYGE7DR8+79HFFTg3i/Eu82BBnxe7Yh6B0T7/I/F2FluOaoiUee\nbEPuMdD74v6RMM7+KsGzHAbSoyasv/QKuvgZE5Xp3P605rIQ4ATMtA/8lfFr\nOBBApDBNq0aO8PQcgR5JzQMtxRp4nV2QRtlVkS/KywQOfwQv4Ko2ecoHO6Mu\n6DMK5IAe0mrQ3Rw+v3OR5EzXt3hnoD/ZQrxEuA9HT8X2SzzAWHCJ17z9T5Dp\nMyoMLRbtYIdJN/Ya+Ck/UqsxXrIb/bumKyWsZIEZSurbZjAjChiVxx9uda9v\nyEaFXdUndjzpSM7oYBZ0JLY0EtHMh+J+6GJDmpOA5gTjVkaDtvLgBIhRXHGb\nUHzfZEynjUQ9OHOKbkzz8jgalRkhb/5PJt820KnM7exA8aQNzjggRzblc4Gb\nrrIm\r\n=8TR4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/jKjmojjYvbvF9seAJ8Zv5kec7XNI7N9DMFLSX5Gh7gIhAP3OXR9pyKWBt0zW0xgJQ+9JwCeGg6ji1TAg9SAMmkft"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.8.3_1570314858780_0.043610710162273136"},"_hasShrinkwrap":false},"1.9.0":{"name":"react-use-rest","version":"1.9.0","description":"React.js data hooks for REST endpoints","main":"index.js","target":"esnext","scripts":{"prebuild":"rm -rf dist","test":"jest --verbose","dev":"yarn test - --watch","build":"rollup -c rollup.config.js && yarn test","release":"yarn build && release --src=dist --push --tag","release:major":"yarn release --major","release:minor":"yarn release --minor","release:patch":"yarn release --patch","release:next":"yarn build && release --src=dist --push --type=next"},"keywords":["react","hooks","api","rest","state"],"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"devDependencies":{"@testing-library/react-hooks":"^2.0.1","chalk":"^2.4.2","faker":"^4.1.0","fetch-mock":"^7.4.0","husky":"^3.0.8","jest":"^24.9.0","jest-fetch-mock":"^2.1.2","prettier":"^1.18.2","pretty-quick":"^1.11.1","react":"^16.10.1","react-dom":"^16.10.1","react-test-renderer":"^16.10.1","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.24.3","supergeneric":"^1.1.0","ts-jest":"^24.1.0","typescript":"^3.6.3","whatwg-fetch":"^3.0.0","yarn-release":"^1.10.2"},"peerDependencies":{"react":"^16.10.1","react-dom":"^16.10.1"},"dependencies":{"use-store":"^1.7.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"_id":"react-use-rest@1.9.0","dist":{"shasum":"8d525519ba606e459659e5b85812c54e9d0c3210","integrity":"sha512-oIXL7pQtF1CRSpyl7t8x2XzIS1BaP3cDiDn0Y8ZTS1QhsQT+FQ8rkTEOtFDQGCCQBGpn+DsBp2RO38aAvHzMgA==","tarball":"https://registry.npmjs.org/react-use-rest/-/react-use-rest-1.9.0.tgz","fileCount":4,"unpackedSize":44681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnvE7CRA9TVsSAnZWagAAaNoP/1WvInCJ27kURfZSlJ2K\n3VDTrJShBeZG6GlWyufNGpRZgO0yh2VlyXOmp8lWZ2jrxBc08wirOMtV0+bB\nafTy4UMUEkVtMgLQEqkIS2H6BhPzLf9cbAp34cD5wh25Msp1i2kQvQyyR/4V\n943g/6hCMA2kcrLN4B/wnYJzi3DU5C+gONFArD9EnudlbEOpPSdPRbw9qg4N\nRNnSkaZXDnSkD4jGbQMazkBL5NPLzLfbGzfgdW94zh1o0B+FETH7tRryP7tq\nQ/A9gPJv5yoHD/RMi5oK7oDuedGUaood+5f3TIG/AHIp6IpYS1OUZm5A8szc\n1Opm7Sb/gslw4AJdE6zgtnqY43q/AIH4ht2tNmxtx+9ZzNqm5VVKHbFF3IBl\nqZdeyNb7JuasaLRzGm4P5JuZZPDEZUvIivePKTUMZrs9GhALFsFosqrh8qhT\nw0taJbTPBitF345LSvHPHhAzbwnuD1bqytGoJ3EIl29XhnkAZiGqMZL13QEc\nc8/dFWFIcJazD+jWcgTab6D2sVMOQgaXQYRbVEJHvYIxO4xOoJfhvHbudKdz\nPWrfu60H1wln9xjt/PPp2FZHn9e7j+dq4Hxp41/ycja8s3kuxiG+AdOoHBBF\nCMLSSjZYlUwHVJnb9Bqn1xMf1lDVbSLyamhLlasg4L29tUWJqwQRzLQaODht\nqo+1\r\n=yOnI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDC3Jh4oTMQgcVsEOMHMenHaI6c3RlLz+FVeCHqAdN3lQIhALYIyKYd2HEVzzhO55M/tbi9VqR8rUi1zA8m08WNV/y/"}]},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"_npmUser":{"name":"krwhitley","email":"krwhitley@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-use-rest_1.9.0_1570697530622_0.770028104432789"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-09T17:41:51.086Z","0.1.0":"2019-07-09T17:41:51.328Z","modified":"2022-05-15T07:09:34.289Z","0.1.1":"2019-07-09T18:02:29.761Z","0.2.0":"2019-07-09T19:25:16.204Z","0.2.1":"2019-07-09T19:30:40.433Z","0.2.2":"2019-07-09T19:31:30.610Z","0.2.3":"2019-07-09T19:40:24.839Z","0.3.0":"2019-07-22T15:06:51.210Z","0.4.0":"2019-07-22T15:40:42.585Z","0.4.1":"2019-07-22T16:36:12.336Z","0.4.2":"2019-07-22T20:15:57.185Z","0.4.3":"2019-07-30T15:43:15.256Z","0.5.0":"2019-08-10T20:29:39.656Z","0.5.1":"2019-08-10T22:00:01.059Z","0.5.2":"2019-08-11T03:54:09.495Z","0.5.3":"2019-08-11T04:03:29.760Z","0.5.4":"2019-08-11T04:55:00.143Z","0.5.5":"2019-08-11T05:17:35.631Z","0.6.0":"2019-08-13T02:02:26.387Z","0.6.1":"2019-08-13T02:52:27.920Z","0.6.2":"2019-08-13T02:57:02.157Z","0.6.3":"2019-08-13T04:31:35.920Z","0.6.4":"2019-08-13T04:53:07.098Z","0.6.5":"2019-08-13T05:13:24.985Z","0.6.6":"2019-08-13T05:32:35.500Z","0.6.7":"2019-08-13T05:43:01.745Z","0.6.8":"2019-08-13T05:48:24.707Z","0.6.9":"2019-08-13T18:21:45.860Z","0.6.10":"2019-08-13T18:52:23.607Z","0.6.11":"2019-08-14T16:07:02.666Z","0.6.11-next.0":"2019-08-26T20:24:46.483Z","0.6.11-next.1":"2019-08-26T20:41:46.417Z","0.6.11-next.2":"2019-08-26T21:08:12.874Z","0.6.11-next.3":"2019-08-26T21:24:33.782Z","1.0.0":"2019-08-26T21:51:29.876Z","1.0.1":"2019-08-26T22:33:08.944Z","1.0.2":"2019-08-26T22:53:28.323Z","1.1.0":"2019-09-06T05:07:38.846Z","1.1.1":"2019-09-06T05:19:32.712Z","1.2.0":"2019-09-06T05:59:07.010Z","1.3.0":"2019-09-09T19:50:32.262Z","1.4.0":"2019-09-10T02:48:57.736Z","1.4.1":"2019-09-10T03:21:58.087Z","1.4.2":"2019-09-10T04:11:00.217Z","1.4.3":"2019-09-12T00:27:29.584Z","1.4.3-next.0":"2019-09-22T01:36:27.117Z","1.4.3-next.1":"2019-09-22T01:53:37.599Z","1.4.3-next.2":"2019-09-22T02:18:25.226Z","1.4.3-next.3":"2019-09-22T03:11:18.311Z","1.4.3-next.4":"2019-09-26T15:58:12.627Z","1.5.0":"2019-09-26T19:46:30.659Z","1.5.1":"2019-09-27T18:27:22.323Z","1.5.2":"2019-09-30T14:21:34.550Z","1.5.3":"2019-09-30T17:49:38.878Z","1.5.4":"2019-09-30T18:14:52.253Z","1.6.0":"2019-10-01T15:54:24.054Z","1.6.1":"2019-10-01T15:55:40.433Z","1.7.0":"2019-10-01T17:56:05.624Z","1.7.1":"2019-10-01T18:01:03.146Z","1.7.1-next.0":"2019-10-01T19:22:37.064Z","1.7.2":"2019-10-01T19:44:13.459Z","1.7.3":"2019-10-01T20:21:03.554Z","1.7.4":"2019-10-02T18:58:12.178Z","1.8.0":"2019-10-02T23:04:20.891Z","1.8.1":"2019-10-04T16:04:40.810Z","1.8.2":"2019-10-05T22:24:17.791Z","1.8.3":"2019-10-05T22:34:18.982Z","1.9.0":"2019-10-10T08:52:10.794Z"},"maintainers":[{"name":"krwhitley","email":"krwhitley@gmail.com"}],"description":"React.js data hooks for REST endpoints","repository":{"type":"git","url":"https://github.com/kwhitley/react-use-rest.git"},"author":{"name":"Kevin R. Whitley","email":"krwhitley@gmail.com"},"bugs":{"url":"https://github.com/kwhitley/react-use-rest/issues","email":"krwhitley@gmail.com"},"license":"MIT","readme":"# react-use-rest\n\n## React.js data hooks for REST API endpoints\n\n[![minified + gzipped size](https://badgen.net/bundlephobia/minzip/react-use-rest)](https://bundlephobia.com/result?p=react-use-rest)\n[![npm version](https://badge.fury.io/js/react-use-rest.svg)](https://www.npmjs.com/package/react-use-rest)\n[![Build Status via Travis CI](https://travis-ci.org/kwhitley/react-use-rest.svg?branch=master)](https://travis-ci.org/kwhitley/react-use-rest)\n\n# Purpose\n\nMakes data fetching and CRUD operations against any REST endpoint this easy.\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook... this would likely be done elsewhere and imported here\nconst useKittens = createRestHook('/api/kittens')\n\nexport default function MyApp() {\n  let { data: kittens, isLoading } = useKittens() // use it, and store the results\n\n  return <div>{isLoading ? 'loading kittens...' : `we found ${kittens.length} kittens!`}</div>\n}\n```\n\n[continue to other examples...](#example-2)\n\n### Features\n\n- [x] auto-loading\n- [x] complete REST (GET/POST/PUT/PATCH/DELETE)\n- [x] collections, items in collections, or fixed endpoints\n- [x] polling\n- [x] transforming payloads\n- [x] filtering payload results\n- [x] queries (static via object, or dynamic via function)\n- [x] collections self-maintain after POST/PUT/PATCH/DELETE\n- [x] event handling for errors, after responses, and on authentication failures\n- [x] specify how to derive id from collection items (used to generate endpoints like /api/items/3)\n- [x] persist non-sensitive results to prevent load time waits (while still updating after fetch)\n- [x] data is shared across components without context or prop-drilling, thanks to **[use-store-hook](https://www.npmjs.com/package/use-store-hook)**\n- [x] GET requests shared using internal pooling to cut down on duplicate network requests\n\n# Examples\n\n- **[basic](#purpose)**\n- **[all options/returns (until documentation details all params)](#example-2)**\n- **[chained hooks (loading details dynamically)](#example-3)**\n- **[creating hooks from props (dynamic hook generation)](#example-4)**\n- **[handling 401/Unauthorized](#example-5)**\n\n---\n\n# API\n\n### Options\n\n| Name                      |                                       Type                                        |       Default       | Description                                                                                                                                                                                           |\n| ------------------------- | :-------------------------------------------------------------------------------: | :-----------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **axios**                 |                                 `axios instance`                                  |       `axios`       | You can pass in a custom axios instance to use (for advanced usage with injected headers, etc)                                                                                                        |\n| **autoload**              |                                     `boolean`                                     |       `true`        | data will fire initial GET by default unless set to false                                                                                                                                             |\n| **fetchOptions**          |                                     `object`                                      |     `undefined`     | Options to be passed into fetch requests if using internal native fetch (e.g. { fetchOptions: { headers: { Authorization: 'foo' } } })                                                                |\n| **filter**                |                                    `function`                                     |     `undefined`     | filters data results into the \"filtered\" collection                                                                                                                                                   |\n| **getId**                 |                                    `function`                                     | `(item) => item.id` | how to derive item ID from a collection item (used for endpoint generation for PUT/PATCH/DELETE                                                                                                       |\n| **initialValue**          |                                `object` or `array`                                | `[]` or `undefined` | initial value of \"data\" return, [] if collection, undefined if ID endpoint                                                                                                                            |\n| **interval**              |                                     `number`                                      |     `undefined`     | refresh collection every 5000ms (5s)                                                                                                                                                                  |\n| **isCollection**          | `boolean |`false` | set to false to allow direct REST against a specific endpoint |\n| **log**                   |                              `boolean` or `function`                              |       `false`       | if passed `true`, uses `console.log` for debug output, otherwise accepts any function                                                                                                                 |\n| **mergeOnCreate**         |                                     `boolean`                                     |       `true`        | use response payload for newly created items                                                                                                                                                          |\n| **mergeOnUpdate**         |          `boolean |`true` | use response payload for newly updated items          |\n| **mock**                  |                                     `boolean`                                     |       `true`        | simulate, but do not fire POST/PUT/PATCH/DELETE actions (for testing)                                                                                                                                 |\n| **onAuthenticationError** |                                    `function`                                     |     `undefined`     | fired when calls return 401 or 403 (e.g. can redirect, etc)                                                                                                                                           |\n| **onCreate**              |                                    `function`                                     |     `undefined`     | fired when item is created successfully                                                                                                                                                               |\n| **onError**               |                                    `function`                                     |   `console.error`   | fired on internal error, or response errors                                                                                                                                                           |\n| **onLoad**                |                                    `function`                                     |     `undefined`     | fired when data is loaded successfully                                                                                                                                                                |\n| **onRemove**              |                                    `function`                                     |     `undefined`     | fired when item is deleted successfully                                                                                                                                                               |\n| **onReplace**             |                                    `function`                                     |     `undefined`     | fired when item is replaced successfully                                                                                                                                                              |\n| **onUpdate**              |                                    `function`                                     |     `undefined`     | fired when item is updated successfully                                                                                                                                                               |\n| **persist**               |                                     `boolean`                                     |       `false`       | will persist results to localStorage for fast delivery on page refresh                                                                                                                                |\n| **query**                 |                              `object` or `function`                               |     `undefined`     | can send fixed query params via object such as `{ isLive: true }` or via a dynamically executed query function (executed at time of load/interval), such as `() => ({ isLive: Math.random() > 0.5 })` |\n| **transform**             |                                    `function`                                     |     `undefined`     | use to reshape your API payload (e.g. `(data) => data.data.slice(0,2)`                                                                                                                                |\n\n## Example 2\n\n**(all options/returns exposed)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default function MyApp() {\n  // instantiate data hook with options (all options may also be passed at time of creation [above])\n  let {\n    data = [],                      // data returned from API (defaults to empty array)\n    filtered = [],                  // data, as filtered with filter function (options) responds to changes in filter or data\n    isLoading,                      // isLoading flag (true during pending requests)\n    error,                          // API error (if any) - this is\n    key,                            // random render-busting attr to explode into a component on data changes.  Looks like { key: 123556456421 }\n    update,                         // PATCH fn(item, oldItem) - sends only changes via PATCH (if changed)\n    replace,                        // PUT fn(item, oldItem) - sends full item via PUT (if changed)\n    remove,                         // DELETE fn(item, oldItem) - deleted item\n    create,                         // POST fn(item, oldItem) - creates item\n    load,                           // refresh/load data via GET\n    refresh                         // alias for load()\n  } = useKittens({\n    axios: myAxiosInstance,         // can pass in a custom axios instance to use (for advanced usage)\n    autoload: true,                 // data will fire initial GET by default unless set to false,\n    filter: item => item.age > 5,   // filters data results into the \"filtered\" collection,\n    getId: item => item._id,        // tell the hook how to derive item ID from a collection item\n    initialValue: []                // initial value of \"data\" return (defaults to [] if collection assumed)\n    interval: 5000,                 // refresh collection every 5000ms (5s),\n    isCollection: false             // set to false to allow direct REST against a specific endpoint\n    log: true                       // enable console.log output\n    mergeOnCreate: true             // use response payload for newly created items (default: true)\n    mergeOnUpdate: true             // use response payload for newly updated items (default: true)\n    onAuthenticationError: (err) => {},  // fired when calls return 401 or 403 (can redirect, etc)\n    onCreate: (err) => {},          // fired when item is created successfully\n    onError: (err) => {},           // fired on internal error, or response errors\n    onLoad: (data) => {},           // fired when data is loaded successfully\n    onRemove: (item) => {},         // fired when item is deleted successfully\n    onReplace: (item) => {},        // fired when item is replaced successfully\n    onUpdate: (item) => {},         // fired when item is updated successfully\n    log: true                       // enable console.log output\n    mock: true,                     // only simulate POST/PUT/PATCH/DELETE actions (for testing)\n    onError: console.warn           // do something custom with error events (e.g. toasts, logs, etc)\n    persist: true,                  // will persist results to localStorage for fast delivery on page refresh\n    query: { isCute: true },        // can send fixed query params via object or....\n    query: () => ({ isCute: Math.random() > 0.1 }) // via function executed at time of [every] load\n    transform: data =>\n      data.kittens.slice(0,5),      // in case you need to reshape your API payload\n  })\n\n  return (\n    <ul>\n      {\n        data.map(kitten => (\n          <li key={kitten._id}>\n            { kitten.name } -\n            <button onClick={() => remove(kitten)}>\n              Delete\n            </button>\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n```\n\n## Example 3\n\n**(chained hooks, e.g. collection and item details)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook\nconst useKittens = createRestHook('/api/kittens') // any options may be included here for convenience\n\nexport default MyApp = () => {\n  // quick tip: { persist: true } loads cached content at page load, then fires the GET and updates\n  // as necessary to prevent stale data\n  let { data: kittens } = useKittens({ persist: true })\n  let [selectedKitten, setSelectedKitten] = useState()\n\n  let { data: kittenDetails } = useKittens(selectedKitten)\n\n  if (isLoading && !collections.length) {\n    return <p>Loading...</p>\n  }\n\n  return (\n    <div>\n      {kittens.map(kitten => (\n        <button key={kitten.id} onClick={() => setSelectedKitten(kitten.id)}>\n          {kitten.name}\n        </button>\n      ))}\n\n      <h1>Payload</h1>\n      {JSON.stringify(kittenDetails, 2, null) // will reload whenever selectedKitten changes\n      }\n    </div>\n  )\n}\n```\n\n## Example 4\n\n**(generate and load hook dynamically from props)**\n\n```js\nimport React, { useState, useEffect } from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a curried function to dynamically return a data hook from a collection name\nconst useCollectionItems = (collectionName = '') => createRestHook(`/api/${collectionName}`)\n\nexport const ViewCollectionItem = ({ collectionName, itemId }) => {\n  console.log('viewing collection item', itemId, 'in', collectionName)\n\n  // { collectionName: 'kittens', itemId: 3 } will generate a dynamic hook\n  // with endpoint '/api/kittens', and passing in the itemId, will load the hook as an item\n  // with endpoint '/api/kittens/3'\n\n  let { data: itemDetails } = useCollectionItems(collectionName)(itemId)\n\n  return <div>{item ? JSON.stringify(itemDetails, null, 2) : null}</div>\n}\n```\n\n## Example 5\n\n**(redirect to login on 401)**\n\n```js\nimport React from 'react'\nimport { createRestHook } from 'react-use-rest'\n\n// create a data hook that might see a 401/Unauthorized\nconst useKittens = createRestHook('/api/kittens', {\n  onAuthenticationError: err => (window.location.href = '/login?returnTo=' + encodeURIComponent(window.location.href)),\n})\n\nexport default function MyApp() {\n  let { data } = useKittens()\n\n  // if loading /api/kittens would fire a 401, the app\n  // redirects to /login with enough info to return once logged in\n\n  return <div>{isLoading ? 'loading kittens...' : `we found ${data.length} kittens!`}</div>\n}\n```\n\n## Changelog\n- **v1.9.0** - replaced internal use-store-hook with updated module location use-store to avoid deprecation notices\n- **v1.8.0** - decreased module size to 4.3k gzipped\n- **v1.7.3** - fix: re-embeds default Content-Type: application/json header\n- **v1.7.1** - converted from babel to rollup + typescript to decrease module size\n- **v1.7.0** - added `fetchOptions` option (allows for custom headers to be passed with hook requests)\n- **v1.6.0** - removed `deepmerge` dependency (previously used for options merging)\n","readmeFilename":"README.md","keywords":["react","hooks","api","rest","state"]}