{"_id":"iguazu","_rev":"29-e28eb950c1547d11cdf69c188b0412c9","name":"iguazu","dist-tags":{"latest":"3.2.0","release-2.x":"2.8.0"},"versions":{"0.0.0":{"name":"iguazu","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"iguazu@0.0.0","_shasum":"241099116df63f4d0231cee0f55d844e072783a3","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"padmaia","email":"maiaiblack@gmail.com"},"dist":{"shasum":"241099116df63f4d0231cee0f55d844e072783a3","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-0.0.0.tgz","integrity":"sha512-rGWtImux/N52gHMqYPNFAunDiDU2YVbkUJdDniiOcj8dkaH6mgOCtaedSZOAoYi1w5nFqMwxoEqtUSTHomheSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu0EaBtntJ/zj4RZ5TpiZtgXhOseG0OBaYyKkbBWBMQQIgEEgHn78mPJF+H/ZJ8LRIkINak6hEsdlfrLkvQpYr9ok="}]},"maintainers":[{"name":"padmaia","email":"maiaiblack@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu-0.0.0.tgz_1499193575800_0.8746111765503883"},"directories":{}},"2.2.0":{"name":"iguazu","version":"2.2.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"license":"Apache-2.0","main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react"},"dependencies":{"hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"amex-jest-preset-react":"^4.0.0-0","babel-cli":"^6.24.1","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.1","babel-preset-react":"^6.24.1","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^3.19.0","eslint-config-amex":"^6.0.0","jest":"^21.2.1","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"18d53c7f98029f257a7cbdbefe1f9769046e732b","_id":"iguazu@2.2.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.4","_npmUser":{"name":"pixnbits","email":"i@pixnbits.org"},"dist":{"integrity":"sha512-S6GKT9BflqO28a6PCvPNBg+NwkPcOXO2AgmWtAMRmCQjW06vPt1K5UnKFcegsUHr51G56MsKX4CZCdTOl25RBw==","shasum":"f62e309d90c29500ec0769249c9097c6a59274ff","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.2.0.tgz","fileCount":25,"unpackedSize":83807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdNSeCRA9TVsSAnZWagAACqMP/3T6TWvhfZCicOP4YlfF\naxGDeJrTdRqT6L0EYRbpN85l9qNFMicoIT/Wui7WnkSUOsC3I4pJx1NCI9Hz\ntf22AYoAeSH5AV92rVd3hMeXfxW7dIXIcpt0YAzuWTJ5hczD8fWrXHNnCdmf\nAIcXGdrMepuZhB1e/oJuVKrlyDHyFb3D6xRRBLSEnGGyJIqo1rYZfg643vO9\niSaFCT3XFT9fQnPtlMRJWShEEloY5RXXjRBfA2ZpDQ9lX5HTOEgZbWbwUcEp\nlTZDXgLgmn9GD74dme37UHeWqpT2D9W/VcEEKBOAo8JtnQs/BmnhCpTlVOz0\nejlPRljRSNjEz4obPulOFMlxvRtJJdqeGAfIbKpUsrFUpHvzYqU9y4IzL5Ha\nEvugUsgrYB3z8zelFpFFSV+L/9HApsQaRDqf0ynJWmOSJGOG0C2frGz5ez/n\nTDXpL+I+teLA+gpIBKpCwhYoV49T7pKmOM5Maj8HGekipEM+G9xyhUViJPvg\nSHfOLeIlhW7UReGkL1spPAcMX/OsqU6ujySq6EXQpTsrGd4yb044AFfbDX6Z\nTCevO+V33LkXjgF7ijEST5TYcaiXt6vVf5idNS3/NgCN8k74RL8C0e8WcqDW\nCRJtdAvyY4KVbD/reg+z9BzrNBmfAsSgjRqAn2cQjJQcvTMWlRKCKXknRR5m\n9K02\r\n=Q5ve\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIzNh+MS9Im+irzUgm0bxHFpnDCqkuml3D5n8Nr27lxAiEA8xR6q8iozn6LGQqlfgd0QKLkOY+8hO6JDBWFeYhgs6M="}]},"maintainers":[{"email":"padmaia@me.com","name":"padmaia"},{"email":"i@pixnbits.org","name":"pixnbits"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.2.0_1534383261608_0.7316773224960753"},"_hasShrinkwrap":false},"2.3.0":{"name":"iguazu","version":"2.3.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react"},"dependencies":{"hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"amex-jest-preset-react":"^4.0.0-0","babel-cli":"^6.24.1","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.1","babel-preset-react":"^6.24.1","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^3.19.0","eslint-config-amex":"^6.0.0","jest":"^21.2.1","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"f5a6dd888796f1d75683b6c754dfdb44d7a793a0","_id":"iguazu@2.3.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"jimmyking","email":"hello@jimmyking.me"},"dist":{"integrity":"sha512-08dpOyACSumwnXoy90AD78xWrg1SHTINS0QH9Wh4QVKhDhJBhTT7KY7yF6fo1Dq0rk0pCmV5H/w1tkSwJ1BlZQ==","shasum":"172e11e00460d7c213695f6fe7f7be6f0911f9ab","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.3.0.tgz","fileCount":28,"unpackedSize":111934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb41/XCRA9TVsSAnZWagAA5yUP/3Wybl5FFxwyjs+gJ47b\nvNiL1PLRFDndpVRrB231UIc7So+dkSdaPErxI9aPNCWlaK+yl0ofVfZS0F8f\nQFB/blRv/HQSGLaeKyAQ+WYiKldwfx9tlru/TnwLljrS/i4DMSdBtafR27jn\n9wQ2WCFTS9tgW8rITY4x+xqymM0KZcaNLmLSURDsO14mcqXY5uONFTC3Z5rv\nuRiYOuIsqLd0DELr/Wf4aRY29+rCTH0wXh8U5KmkNYzHOOKWC3LgFP0txd5h\n6U6RSOcChrFWtStmdws9qILLyy1/SNM4sLPw4YTvSyDiisFU0/XhH/dRjhCL\niWxJmvNBamLoE+1JnHUfNdiM6rc5JVf46519fu9yo9H7wvy4kYDz38kHmCgI\nH/vaXr8oycbI0LxuYMDGLfn10dkECpUR8NGaD8zf2FsiYLcFHx4b2iKFl77N\nG7PkeIuMgXYwPqpcA1UVAL4PbEi1QmaIjRygYPpFmqcXyc5A4gMulfqOQTAD\nNGfS3xKbygs7QDTWxdu/l0xYsSO88G0GkmKX3V8SClkvWk/0kEb0hGTifdiw\n5q9T0qcTA84ahow3fOw1erw547pcWaf/k3dYUJy4NnaL4RFpNokfMUoZKBEw\n1M74NCSLHuZf7VG73qZAL2EOTwmvw0ERaOc1RKSm1ohh+RBRm/goG914TXKS\nlXyJ\r\n=J+sH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHVoa3Lwva99gCBnH6fjg8UCgrERqbVkXeYHZFlHJihAiEApV0u+4h9qXLi6rrlptLvqa50ucbbUudQoBr8JGdEAcI="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.3.0_1541627862765_0.04646800816119545"},"_hasShrinkwrap":false},"2.3.1":{"name":"iguazu","version":"2.3.1","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react"},"dependencies":{"hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"amex-jest-preset-react":"^4.0.0-0","babel-cli":"^6.24.1","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.5.1","babel-preset-react":"^6.24.1","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^3.19.0","eslint-config-amex":"^6.0.0","jest":"^21.2.1","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"80a6e86e3e160ba8ca758940ff1c61e906226b92","_id":"iguazu@2.3.1","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"pixnbits","email":"i@pixnbits.org"},"dist":{"integrity":"sha512-Ni3vrzHbTRTDj5Dj6JydCz73IbNcpL4Is/e+fRqV21FrV1qwwi1VAI6OapbB/IJXCW6kuSHCl8SCzYFCdzpFkw==","shasum":"479059a608920fa0847bcc58d49d53c894856590","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.3.1.tgz","fileCount":28,"unpackedSize":112169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWb4eCRA9TVsSAnZWagAAmwwP/1+SjzdbzyiTivG/UakZ\nK2Wbl3ua9z2RCfoQ0WkKSbw3rAjEzAUv9xOBIewrh2vd0JOQwwK8T+Yj2Glz\n9Mlcc2JdBJNu6i+yX0SpKj+4GwjEPz4AMPZ9mfNw7zDT17bq9jq+jhLl1NOG\nybraT3wR/ryfYL3u372Go7V/m414FCkVabqKIg7Du8Lb26Gu5ZseJzrSt+31\n2YoS9VrKKmkJy3NakUDMPf8qE1AHhdv+amZLOb13Iw/O0u47/R/67n+Vr4cJ\nYRb8Qv5kCEqz9IZppOTZnsSw08Cz4qXKCqNFZzqJEIHAc3qYVcxqpxLOmi/e\nrK9ETSWp5PWZ/DokojacgiJupMUrOkteDheflxhBUr1acfB7IKRUbG23DRlt\nWaIr3vXBXjSqEdVK2drV6eWGF3sOK2N52RUpq0PJqZh7nyvMK0X1XR65I6UG\nyobmwFcclK7g9yaqAhxqk87eTHYnnDIJlZQW5gT4WNKCv33xPCauCJEm1O63\nIbP0/aRxJVEBf5hDjJHERQU1j/7NfXV32RokN7VMuHXvNQuRYvHvD1+10W4M\n1gJGImIKytZONI5A90re1eSoeJFAFor4+VCi38FULy0yp5nmBix0xcuGQfes\nZUlL/NjXGpYqKNX3d4R7C7UL2d90bcl4mTMNyn7RvPFtkEGcqKkivyp2ceGE\n1G60\r\n=qkoG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICY55jNJuA5V8DbCTFhQgyZFm219HA381+/ZzxPM/oPzAiBGRt90Z6R0p9jdZg6mOipkGRWInROodyv4Lf4MWO6gFQ=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.3.1_1549385246148_0.5000482680748566"},"_hasShrinkwrap":false},"2.4.0":{"name":"iguazu","version":"2.4.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^3.19.0","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"9d163c999df85c142aef2dde2bc9b7fd9205b4c7","_id":"iguazu@2.4.0","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-WDJk+14fJYX05aOj/hpUBgisevsKpFxZaQsiwOhnRNUFzCQB5xAHY3CyfjbQCn/iVPSOstlBBjTssE0Yysgnyg==","shasum":"ee48911f8b908c4a31ea893be9f9fbfa47d2c30a","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.4.0.tgz","fileCount":29,"unpackedSize":106551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcr7dMCRA9TVsSAnZWagAAq/MP/0I6pN1hZUXwXKgS5e5Z\nLlLc0QzzthZRWFmccJyHsCsAExFjkLWCoTY27e03twqLh1VpyCZM4ivtPD7e\nagOPjc9E4/TIFVeUfuAMn1NBtEU5KmSBTCacFvs2jgZ6DWhXhSUMXicS26Xu\nqmRnuP5SHkSbWdUMka6KBmZp2APypEMEB6SeRnbXs+6qPdP7NsMxXJYIjjhp\nj/KXQ4u7DjFPPoVsPKt4gMtK6njqEB8KZnPbwXMdhtxmxpGZ1Oe7DwNhom8i\naIfOKeWnXPRqEract5dgzPDzW2Fy5J4lNiBZ+gKqRpM6M6PL+2KdFAycO3jC\nVp2bM7QiBZpSS229t4iMiJbgp3hB5DVRhw6jUSgZsjiD6Amhg5uOj+0fxRoq\nYs9T7XCJHsbL2ye+Uso/DOkvm1wlGPMsp+Z4dsfLRiHuFhOMhUB5WogVN+//\nEvGotKA38K6NukqVVq1qG2ayKrJCe/Y4HQtP3PxP1/h7Fh6PWC7Nc6SwPOGa\nYBs8+pkFyjZr0yvR7sC7/uFQbawaPFxVS7mQGa5TAp05TIzv+hhCbFsZfibr\n3cjAtxOLwckli2VMXwf2D7oPgA0ZIfkbZTL8LpsNUgCo/ovjt0qPnqF5DW1w\nIfMTyAa/4KPSRTC12rxvZ6P6Pcry++s10VxTJu8FdkFMWjhiZAVpJByawTHN\nGCvu\r\n=ebgd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrwfoFm73br5uVwOm4eT11XgTIOny5ZYRFqFfr+TVHcwIgZnmUEeAorkI59RH2hYgCvhkK5UUazvFsdDh2EUNwrTI="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"jimmyking","email":"hello@jimmyking.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.4.0_1555019595055_0.5863577517292067"},"_hasShrinkwrap":false},"2.5.0":{"name":"iguazu","version":"2.5.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^3.19.0","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"87b464b28e2b87dd8984a86b650d54d6ff3cc3af","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.5.0","_nodeVersion":"10.13.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-kB0Wdlyw52ABkpyLyKU2I66d+00jPOPjFE5YE++gwZO5nSu8qLjEq48nymtodFpZJglSksUbnMXs2ekVxRkkYQ==","shasum":"c4e4443570056900b6ce2c614c889c0e91fdc583","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.5.0.tgz","fileCount":61,"unpackedSize":539762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaCO4CRA9TVsSAnZWagAA11EQAJ13Jh2OUg9OCK4C3V5S\nMQysQGJ3MZ2dbzQtCqEpWB0RC+i86lqXdq8O5uWU18ml8XdprPYo0myWGK4V\nYKCiDj+Xam8mxrd+ZmxdiGVhatCvzIjy28Ijfx7rdTna3NWTdwoNj6DEJSm9\nLkoUy1Dj9tZHrrocwFnkH+6F8uicaeVyoJqfLkFyWzOHYEI52AbiEm+IiEIO\nMxe4djEqPgIae2v6jSZO2zKAQT8f6FpP/MPfngiRwyM1Lf67sCT+LNFOBRnM\naoZSAF/PHz33VyMFMu8130a1d2kLkzD0jNhxk2yLp53kizdYBs5KusO0drIz\npxPKjtVbMjuVSPo2eGxmyhprCCETczfaSCPGD/fYt2HBVsi7FCK7fWinzpSi\nN+12msUSE7xakFSsxQBYjA2gkuM0+NpEu/OPhc5ypm6SjQAJbQ3w/OqCKegs\nzDQ2wfmxCOa0+asbQ7kBJxZV1Mxg7BtFs7R/iPSpPs/LcshAjtjY62s1NqUV\nOlped18i2lcmrPvB540+V5PxX4IsBT5gDxXht33ZAmysMvwigNUTeK6Yv/DD\n19HD71alXpQp41O8lJI0PtcKKXfa8GFutL+JEGCSdfHFZpDMmYkKnSCptedv\ndKMN5gZrXtmW2PafLVZZDAFTZmpE9o5cRbHaC8dFmaGaRtc0lFUqs2DMRAnR\nMqo1\r\n=UvjN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDA02U4gbmExtPeXWR5gwHLbSxAFJ0ofABOjThBH8xkgIgV13hnCalsHijAmjylfwrCv6XPZz6BZp/wUM8sORIPF0="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"anescobar1991","email":"anescobar1991@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.5.0_1567105975817_0.3325330903505155"},"_hasShrinkwrap":false},"2.5.1":{"name":"iguazu","version":"2.5.1","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^3.19.0","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"be6ef696b908b1bd4b3e11430e5a9993726db192","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.5.1","_nodeVersion":"10.13.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-puSG6xXvTsMxadPwwofGUTAcCvVlv7SthbbnPBCR+q9PFlX3hVG0+Pk0abLFPcKQXUvMyB8k4e8Ug4XW4LoqsQ==","shasum":"2478e4929326b65f38b7018afdada4a4d69d7a70","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.5.1.tgz","fileCount":31,"unpackedSize":114926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddqagCRA9TVsSAnZWagAAIPoQAKGoy1X+tKFewXBoAAs3\nkAR4O1JD9opC6IXdDI4saljF85F7jYc3FjJb0UxCVKZ7OYb4hnkT0OVhh4tA\nxxqI2faXcCd28rYHqMRV8gQek5fElH3MwyAcjSfR6PmI+rhDg3uvl31SVXX1\n3OV7fcDy2ebiRlEobzDegI1Jhrh/1Q1OcfhxxnEzC5S5qdgsGDQ5H8kN5Hky\nQQbikc55IbHNpwupH67YKBYab0mmBCWdxb7jcfrytc8IdjDVyK9UMvPKySFp\noXxwWueb3z3U66v2ea/+Mjt/wEKVjq4wlDvQYBu43m3h0D6uS/Qy5PR1XMM8\n9L1R8GlqgLO8ks2F+ghdHtQ9YduQHcb4yvQopyYOZ1yhOJfW8nwmENNjgWP2\nF2Bj03BFTRR4neBNwdOMEg3o8k0A0GLq7JOFuSPihasl9zWwSdqz5LSbPOE4\nApXKQJaRKBrH+m58188u5D/6bXaJIRgPbwYA0ys6bnHP6but3FycjhpeHLuG\n0vMm+jzJhfsiIisC0d6cNwkIapiPdsZduf3Jry9431VQugFTn6P63B3WcxOe\nX5qfjJoJIv7A8JtE8ZSe7pch5xSp1LGfMDsLM6Kezk93cx1JA5B/49y1k6A+\ncVxALWd2zocrUlLcQCtwCaPIGWlpucWQb5t154XPDP/kPjsb1KNbewMAbnUB\nLAP4\r\n=1e/Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3nkaDPVn+SuIrmoTDRH/0Vq27Qu5F0wTf6P/YV1EBxAIhAP444bMQAlMcKTuwEvJQ6bXHyCnQpwzg7mJlzel0Phto"}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"jimmyking","email":"hello@jimmyking.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.5.1_1568056991655_0.44278463778487165"},"_hasShrinkwrap":false},"2.5.2":{"name":"iguazu","version":"2.5.2","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"71ef1e13a7ff8a9d3da5f9fa7269ac7fa1ed7fe9","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.5.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Pq5KcqlIdtDx2KZ8NHMe+qE77JF0HHAGRYQ5k3KIZid8TuUVoMw8nHaLxbLV668apQYgC6T9/IRQyrnzGoTi9A==","shasum":"44e546ed6bd26d5aee2c45cbbd54e8af6bf6063f","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.5.2.tgz","fileCount":10,"unpackedSize":52106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdr0vcCRA9TVsSAnZWagAA6cAP/j1eNyhHAc56lhMwLWWc\n+LvkgA5DnGRTl3TpTwqlB5SzLb8wccGcKY1oGdllM/EEJV8SK4vgGqQ484tb\nk4uZfsbjv+FVRIi0qSGsol15qXke5AzZjSW7WsbSQyHQBLKs0JROT7o1w0J0\ns0XSDPYNmD5yIxpgsBBLvWrl7JwohAVxOB+MtaakaKBIrS0SCdKEM6Vsiamb\nxIkujuo224sQx0rF8eVIonTosBAzOeyjfcpDIvrTW+TlrgGwl7fdpCjNTBUF\ntzxi4nChKQdAHa0WSvfPax8okA+4AcFPWcQSjFlcY5OoQyT1JzcfcqlRjAAs\nuoUrmsSgQS4Ria7tsa7jN2wcE4vKcZj+Z8BWhXING9ptDXYrrhIKjZG1fQlP\nGKwfwiNqG9FeCF6wP4LmP+OK0a+Cj8YWjGc9AAI5GPNIoW+n12Waek8Ft1RZ\nyIgUstr6MZuBDHm4CofViKR8Hx9xiHfK6xoiYiKs37I7Fx5QEDt7XZxn8CBh\nKqATpgnWltdQhdnkA09aDr3QswfAL/VbUyPhHNdqwb4oGun1e0rWY1ALYCER\ndvsL0EP/+glTEM3Q2MKAL+aracfquTJg+g1vPxdvmkq1tgkBNV8SurPGOcvh\nC6B0aoceQlfTnMbO8m9jzKdEU8hiK0PkviG7bFkn39CRXy4l94ihfmDXy5LT\nvrUD\r\n=rY1K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWh30WWdH5pqCi8UVj05+TZWD7FYmfyXjNEQfjtD8EswIhAIXZldqJKRIsHd9qedOgGP4vTmzCuchuZWmiTMGZOWwX"}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.5.2_1571769307630_0.3523643673794725"},"_hasShrinkwrap":false},"3.0.0-0":{"name":"iguazu","version":"3.0.0-0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"},{"name":"Michael Tomcal","email":"michael.a.tomcal@aexp.com"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"gitHead":"da6bc8e50a59229d257d659ab3d22cb001e395a6","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@3.0.0-0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-nV3yVr0Pm2yT8+vaDFfkaxNnIs+CIh0lS3bRiIlffSzrgpRp240eyT7X8Eb+ioKWXltN4oyWKGtlr5hm8RlWSg==","shasum":"da7679c056a75034fe0ab09687f5d150f8303634","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.0.0-0.tgz","fileCount":10,"unpackedSize":54153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyaSPCRA9TVsSAnZWagAAckwP/3DwmS3YsBMGs1q+p89d\nO1NHhE97y4kzuwo7z97F94Kha8uZp6jIYq1CutbOU8G9xK4qULuH9kCs5MXH\nfzPMgdOTwDPOWZ0aVWLGDMp4E3H9w67VnniM2wVEix5sdWhi4T4On70dz0I2\n7ldhNl3fto1Jtmo5diQfXxVPUWa9EkwA3BXrU7JDiNRgILvyipZKfNF+KuYb\npRn1RjZNF6uaHXp6ArSxzdTWtKsxmbbwu6C8QrXdZrsnq1KXWYro4JKJm3hh\nasWoETAV9TDxetPGht/RnSITg0M+fE12u6yDiXMmYbVFi0Y2rT3diWvYxjL2\nnOU7qI7wj/GoNiwY7H4RdukPO8b139USVK3jHOwgzPHUBazVLZfT04dq9V4H\nFOZz6CbfcicPJUSP9oeGSKIH/JAvv3YI/v3ETqwWmobrGM8aYKDP03EGwT77\n52z/O+0KblFy0QVDhwEAg4ZBF5miAaUNchEqT2U05TLH20ZapKk7m3XEe2iT\n1l7EGgjQ76JBJ7gE8rY5rt4lmD+60F7Bc7neTHWgCZG7aFwH1tDoRw1YLCQt\nY3y7jOqJzW91DfU23ZJ5Pfik1FEoETviHnEoaXB+TQ2P/hL/faR0K5mJ8+O9\nqfcZn+tdkb55oiICZdoxiv1lB01N19CmZ9D9dpvAf4xDdQCIqvCPWoPx1LOl\ncQY/\r\n=vEFd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFCmjJjWexwtcrT3jrCmQmKtlVJTtdTKKr99xpM2CwqvAiBBwiuNzcnpK4sGuNNnMHICrV3uCpu/D8glTRCVpYfQhw=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.0.0-0_1573495951236_0.6996006123466969"},"_hasShrinkwrap":false},"3.0.0-3":{"name":"iguazu","version":"3.0.0-3","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"},{"name":"Michael Tomcal","email":"michael.a.tomcal@aexp.com"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"gitHead":"6f55f93d97fbc4de172bc2bb7f8d651ef704a0ec","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@3.0.0-3","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-4kHJALem6AjoejiHn+BNlR/QkyzKPoD6oR4DmXyDfwUJNmixDMiHCDjwfLUwWXYK5/sQdxb7c6BOTpm0grOuwg==","shasum":"9bc5fa6c098c44a2f7dcfeaa9f3e4c0b0cefba9d","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.0.0-3.tgz","fileCount":9,"unpackedSize":53261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdztU7CRA9TVsSAnZWagAAgOsQAJpm7FcqLPlVjsNn4XuU\nQFUYPUzsdqufmkfvPVmGtdUHK23u2CcwkjUUXsRer9NeANkSAGJgRBGr3LJU\nXU52qVAcld9712+HZmd3zi7Ee3W697ydWqcxH6K70wRTfhQLBH3PJzJI8/3m\nd9SeH6Xafkwv5hlZWTfEWM4GnVwNLYtP6yYiFS4ma005Yo58le+rj88MEynS\nT97shp6OHZHkE5k0bWB1TEFZQ2bHpA785VY979KjGgq3dSFvud1fgSBAVicN\n86XSN02LEUMPWWofpVBqevTInV9exckMCRo0DkYc+5oyZDyG2tgBkqMvIbmq\nncXQU6jHie6kgrugDiPXr5xTcCWRhz2xafQPtnU4pklJMqia93Scg19idRyb\nyIfI0IJj+Fjw8qUEV5b5R/ZfrbUaQ57+vyparbz4GD1YluG7ZEdsC+8VflMz\n3It6TnXa1xGfTB/5NDQmj0oIsIeqntBJz6wm1Q+q1ET2imsvnv8/fktOUAw8\n2rHpCz6GFJo8nQPYi6+T/OmZR2QekOeE9bdzgSDsmkfAnIoaps1no8fVPkZO\nHMbmKYV+hWVybSJ+11SpECJAi9mJStBxnPItL6hIPXg3/qmyOMdBZzEX8RIm\ngZk5IB4Y+7y7KEZlBsc/uIdzfnnTsGnft34eyryKijSlBK+u+cyoIsTm5XrL\nHGen\r\n=IJQe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnZ7vVde09qdRfAoM3+G2vLt6GAthSPTJ+nuY+tS40PwIhAItvrDE4dwM+ZuMuUOLWgdos7q3ao7AyJeiL53cMLE7i"}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.0.0-3_1573836091202_0.5976570768262477"},"_hasShrinkwrap":false},"2.6.2":{"name":"iguazu","version":"2.6.2","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0"},"peerDependencies":{"react":"^16.0.0"},"gitHead":"4526182faf1d1d255edeba94291112a1a9fe0910","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.6.2","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-Xg9tjvHlxrdZpgm5T7Q5Olp1M8SxF9sYVe1O8x4VhQTCiW/xyzsNSbVAZLA5gS4FDUYdFFAJGAtmAY22h9apqQ==","shasum":"8b158c364d277444fdaa3267ae463893977a0d64","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.6.2.tgz","fileCount":10,"unpackedSize":52783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3Z8ZCRA9TVsSAnZWagAALS4P/3bOrtm3iLTr+s4axstB\nwlZJDTaPZ8oJU+/VQTKkLHahlUTk+Tg6ECDa/88SD1t/FWDfDaGeoi4n5dOo\neSmOveDZRhZJ+JCjyyUiZQNtxufWkA8kCLY1FEw9hCcXgYkLMsgOJuED1SD8\nSBhGS1WiNtw1f6moFG4E+f7+CVatouUjkNatCtftgQL3rGb79FgCVE0vkKDI\nhutY1u72N+1q0KSSq+PFByqs8BoPBe3uV2HJbnn6UaUIo8WI5VH40m76mBZc\nDx+4YapRGjws3hQ3N+2Hm/GBBF9l2GkqVJZMstjnhPjtnINE76gnAc4dWWk1\nDMBloY9nYhEqqo+61FeJC3jEkV6ZnFaXaVO41qWvg2rvRkmoZpOgB66BIQYM\nCxTEPgaPvnXV1fp7z/f4sd4S7iSOwPA4LACnO+6t93kEdvtnmfzhJzOhMqay\nlsH5YzGLUZReGoIcnZV0R/x71oL1WnSrz1QdfjHN1fX/cQhC1ilspb0dPDiT\nQtWCL/CIK/UEc/2Q9aNGMFw0jfLIcXVJPcSXlCr8JshRjjq327o+T/FSHCu8\nHk7AxEwwMXctX4j5j8aMzEGUdS1mJJNWhdQDwfOQYykVy2g63A2LTt2ttOOM\nQ++Z3TA9K9vsnj4QxK8+WeDt1TINSymywJnvDHmXlyJPZg3ExOSVF8+/g2Ms\nhUx7\r\n=Ua5d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBOKk9ZcT2oTTqzH4LBJGTCw218759UbxWoHuQsXnYqFAiBDg8ZOPm1xmQk4Orphr7gRBz6hqNGbwfOOFgitu3BW4A=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.6.2_1574805272861_0.936543054484861"},"_hasShrinkwrap":false},"2.6.0":{"name":"iguazu","version":"2.6.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"keywords":["async","react","redux","react-redux","fetch","data","query","promise"],"homepage":"https://github.com/americanexpress/iguazu","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx,md .","prepublish":"npm run build","test":"jest && commitlint --from origin/master --to HEAD","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.3","@babel/polyfill":"^7.2.5","@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","amex-jest-preset":"^5.0.0","amex-jest-preset-react":"^5.0.1","babel-jest":"^24.1.0","babel-preset-amex":"^3.2.0","core-js-compat":"3.4.5","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^6.5.0","eslint-config-amex":"^11.1.0","husky":"^3.0.9","jest":"^24.1.0","jest-fetch-mock":"^1.2.0","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0","semantic-release":"^15.13.31"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/git","@semantic-release/npm"],"branch":"master"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"aae4562a220b550b8ef3ab27ed6915f7b763296b","_id":"iguazu@2.6.0","_nodeVersion":"10.18.0","_npmVersion":"6.13.2","dist":{"integrity":"sha512-WBZSws25GgWr99UKVxBfLiZKARyNIoW5gmY3eYy0bOBalg+xD7lHPSBegGRnqRVO8cjYgyMN/rwVKUp7NkwqFA==","shasum":"0c0fde80499688b6fb7ece962e2caf129af8a459","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.6.0.tgz","fileCount":12,"unpackedSize":88226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeAMg0CRA9TVsSAnZWagAAnLgQAKT+H6pQxoprzhGjYrkN\n0T+hCLea7QQmqad1gm+ITE9fSB8r3tXR7wZ1Ug43EXK6ExF6x27zFfqc5Ga4\nxV0onxT7ge1IAVkC8biaiq4LRlA8Gj7d7zBemBjVEoQUTM5KbVKRQSClYV9W\n8ZAgi3wFPJFGX//wQQRM9J0DdNBsTxkBIJo1Hq7GDVmMKCyhRWCMeT4v04hR\nkQe1LK3dpvSgybu06J3QSGU05ClgS22x0m8BUbH8kIyGSXr8FhiDlqNjUDtr\nrQjBeUFVUuiTRtZ20N6+5HYLtr4p5JPK8rMqjT9PkxpCNHpD28/YLWTcdjZx\n1dUPpe1/4uKkwBuHFkKc3FCp+BZzX1IIkKjEk0WeS01/wLx79kRd5IJ3hOjb\ngnu5I6wKGuXRqrwLxcJz1uTjfidl4U/BmY8mn6ankzjtrTAjMT2pP05NXtpR\nc6M5aywJ8MEmnJZLCgQykuZ4w7Z0XvvquPm6503Vc53k4tYn0iQUomlZSDhp\nixeIXh7i22kym2bTeI84P8QinmvHpI6TEGmIrUijRP58D6LjBp/EpR+bnE2v\n3JLYmwbc6qw4KJ+g1zQw1BsB6lvef0jb+zZK/914z/Xa9pbLtspMLvDnvuhH\nLoqdWI6cJikVthxVTjIhr8hR2WlibjU2wsFDzCb0c8WHcshXcXeoMIISA7+u\nkJem\r\n=f7D9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBaOP7mdk2RVvEXd907LePJPoreTnj/cgU642K3/jQdAiAJtVsZKDmAjo9DFC618MTscOsvblXQ0SaljsUPpZ4WVw=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.6.0_1577109555661_0.7824981911561497"},"_hasShrinkwrap":false},"3.0.0":{"name":"iguazu","version":"3.0.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"keywords":["async","react","redux","react-redux","fetch","data","query","promise"],"homepage":"https://github.com/americanexpress/iguazu","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx,md .","prepublish":"npm run build","test":"jest && commitlint --from origin/master --to HEAD","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.3","@babel/polyfill":"^7.2.5","@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","amex-jest-preset":"^5.0.0","amex-jest-preset-react":"^5.0.1","babel-jest":"^24.1.0","babel-preset-amex":"^3.2.0","core-js-compat":"3.4.5","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^6.5.0","eslint-config-amex":"^11.1.0","husky":"^3.0.9","jest":"^24.1.0","jest-fetch-mock":"^1.2.0","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0","semantic-release":"^15.13.31"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/git","@semantic-release/npm"],"branch":"master"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"07af2bfc631360365427fa9912efa00f0db5aaf3","_id":"iguazu@3.0.0","_nodeVersion":"10.18.0","_npmVersion":"6.13.2","dist":{"integrity":"sha512-162tq2zp0x8AdBAjLh3fE9/VohXs+kYoHoYuTQpp7zfBojYW2nDeFpE6w5YauY4czIDYtc8ZK6MS/W3BzCKrZw==","shasum":"a0b7cb9ca0a0da6fd38444a1deeb0907d327b222","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.0.0.tgz","fileCount":12,"unpackedSize":88808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFiDsCRA9TVsSAnZWagAAyP4P/jnuaZaEezv3DUCMw45J\nDV1+9kqfie6Zys4aNrqcZKlfj19MxckmnTTBXV6A3qxeWwjQeThUjkoUj7ri\nkI1s27xAIk8C/Eizfp9h/CZPsCVhW3zj7vy9C98Mid/hzXFH1xxk4yuBqL6+\nLqrYSadEM3Pdr1kKWpEcPEOJR4tUYN5oTRoNL6RLpCjjSv+5r3eRp06Xb802\nGvt+09DsHLSiZaLl2AZPCaW5T/IrdgxWfv4M27BStl3n3xvq6AlMuGbCHnqi\ng+NeANoXM84JVw4Ywib6fHWDVx1AbC7b0JgSPueKfNYPgQKuZLRjkSE/idHD\ngp3J5hh7z8PKlC4aaAL+AXF13+npgl3zpmAnn9PtgbauIDD+TtPTrlqesiwr\ndzvFkZA6qlSyIUVp25KQZGfhqHqEaSnde/G2vH6ILmhudmt3asq7OQzpb+C4\nekaHmM9l3Gag/15EiVKJrqI8PvNXRoY60njMl7LW0IujDBrTBJHPMo+f+7/k\nAQM+JWiR7+DyLsbJUTVWvzC9RpEHLB4w9T67b2HMzdGphvmEke3bLeezhLEN\nynUPovjyIZSQ7elrTqqHtANgRxpAYmHwwWXfxSVYvuVbwDyVDTr8cSbI3Jc9\nCb29Vg3/hoKT9Kb4nMknu1jWL0SQhPtwzcDy1LfZXXC7QVi7RaWLPb9Rkxu7\n1Y1p\r\n=Yru1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdl8dAdo3u8YYTIhZRoLAptqJZFhMhnqI4EAxPXmW5PAiB+IxxhGFAlV4yeoCFEpCtrTlbsQ+kCPpj6//c14EPw0g=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.0.0_1578508523853_0.612559586698529"},"_hasShrinkwrap":false},"2.6.3":{"name":"iguazu","version":"2.6.3","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest && commitlint --from origin/2.x --to HEAD","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","semantic-release":"^15.13.31","@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0","husky":"^3.0.9"},"peerDependencies":{"react":"^16.0.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/git","@semantic-release/npm"],"branch":"2.x"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"c4aebf9213bc46baf968ec384b06a2d01fc6f142","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.6.3","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-+j9p53I9hkJpANz4BNDs/ApFaWzYkYAiMNc6aIp+OX9KGLfmgjTZesh5xMDQnJMP7SHQh1tiZB4YZBXO9bKYjA==","shasum":"29eba10a049154709e57f84cf67689c3a22574ef","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.6.3.tgz","fileCount":12,"unpackedSize":55525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWBA8CRA9TVsSAnZWagAA2y0P/A5aM2PsoG9c9W3JJWgQ\noUgETBcTi7kGLcHHj5/COFzrp9t/2zuW9UZrSs2thon0jjGPHIJeO7Ije7K5\nn9vulGh6AX/MJxDzhGma4Zse/x/d9R2dZLAdlC52PQh3aiTIAD5M/FArQteD\nymm/+H9FZtEHjAw41zWfQv1AE14yo+Nxcsfd6Di8smVkw8HhFl2moZcuqSox\nbAlZIxx/Y6GTcskABH/TRKWB9NIySVmgk0N2T79TBF7PQJa9VKsFb8KlYYNr\ndPOlgECrUAbnNhf1lZc96awEm3PUQpbr/jqh2rJvr3vyZO22ghp1brB8FrQ5\nldlHvrXkLJMvgeMMd5iiTIpJv9ac8k8qYcVcPotLE/67LJZ45ifCB4T3TT0E\ntTtjrQ3j2SAoFu5qwE/QhM6N/mEeQONFTQaE7MoTk5jdGafUIyFB06l8ggXp\nf/fmmiXJtk/xXiQtIHKZTb0Zf1kToJMQdEIxIDXT3qFl+YJG5JPVBDYtG1zh\norhhPUWQTGyFM93M/EE6zrtb+sJEhwyiZ5qgllgr5f/gZBt498PKy2QB2Ncz\npGL6ftvDqHU3g7Hl/hY/MyiO6ofFo7aKz08XrnsE13yCQo+K0uBUgxpItDh6\nwZ6XNu6cQxrKbiZ9tPmuF9ZiKr0kKVBTQdukjqAXdFWRRZ0hbd+ahJ+b5gtT\nx0T+\r\n=fQb6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG1cdArChoPHcRoGd7L2Y+qi0gO3gBXwK+prB7WPDbxWAiBwl523y/q3T8FMFKaLUJ8FtauIUCot2W9x8dyM2Ym7Rg=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.6.3_1582829627710_0.7735597214184053"},"_hasShrinkwrap":false},"2.6.4":{"name":"iguazu","version":"2.6.4","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest && commitlint --from origin/2.x --to HEAD","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","semantic-release":"^15.13.31","@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0","husky":"^3.0.9"},"peerDependencies":{"react":"^16.0.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git"],"branch":"2.x"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"c229466ca01a17d8d5dab87a4d62fb7c1d09fcf9","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.6.4","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-vDxY1eVpGkRH4Jgk8BQnODcG1tpAgyTQkPhyPfNoxtC4W8pRtMY2VJV+DdG7s3CD+lXWzGsVmGJoqr770WmeyQ==","shasum":"d4b3b7afa98adf7f115b147e78adbccc3cc067e6","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.6.4.tgz","fileCount":12,"unpackedSize":55789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXXDBCRA9TVsSAnZWagAASGkQAIxxTfdlCs2rh/S7SNOW\npwu/haws5HajM3PbyoH2rZTvnZyJq9sc6WN9XtnGbk0srutL1t2f5QO/31sz\n2L74Vyr2/TrV8YIuoO4OcbHxODaxEP7cb/qLM/jOKSiSdDt13lqs/eod6hO5\n/BKtqZIshYnc8RivcI5K2eZ265Ie7CZcw6UXXiDWjGuCBdV26FA4hKnC8Znw\nc7F7fAPlUPyoyB/ZToYtQ4C908Z6kTJmlLR/d3oTZv4EzFLTMNzGrU4X2lMh\nPW5YoL9RcQ/MdQddlvPC9Cywz8KVVaAYX6mGwcJUVX3K08vInv7xYq1c6eiQ\nOH0t8vhPgngKKr5s7Nh1Yz9YNNFBs2g8A2cJ89JYbI/ZYTuZNQS6DC3oadoI\nAjAMK1gPmaYdo+q9mWSI6Z2lg1jpln4VYdfCNj/NtiHWdSkLlcNLCOEr53A7\nVHVAcySSDrPcAsBdS4ScU71BR5N/UgtJD7lfSF4tqDw7elcV9OdTh6YiDE0/\nOxWH2Q23JNw+LkY6Oar+lwSlJBgblNDTZ1I9BbLf64NfZ/KtbgKyyOu/uQW1\n/ovsoHe5KA0R8KF0QONp5zvEYZ4w8t9OEJX5JqbspAW8SXimNiFhcQDc6L04\npv/gXBQ/mCCef+wwGA5jGZQvjLjhZzc49uYrPQKFiP4hIHf0GGCD9BqkX8AT\nMIOJ\r\n=tVfv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEgzWIACIrKgGOPpSmKcqP+1pDN3KUCr956Cgn6S3kolAiEA1e/zyGBAMdrVCB3cUZz4V94qZQAhXI291OYTrlZCnyU="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.6.4_1583182017213_0.5940845041766629"},"_hasShrinkwrap":false},"3.0.1":{"name":"iguazu","version":"3.0.1","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"keywords":["async","react","redux","react-redux","fetch","data","query","promise"],"homepage":"https://github.com/americanexpress/iguazu","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx,md .","prepublish":"npm run build","test":"jest && commitlint --from origin/master --to HEAD","test:lockfile":"lockfile-lint -p package-lock.json -t npm -a npm -o https: -c -i","posttest":"npm run lint && npm run test:lockfile"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.3","@babel/polyfill":"^7.2.5","@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","amex-jest-preset":"^5.0.0","amex-jest-preset-react":"^5.0.1","babel-jest":"^24.1.0","babel-preset-amex":"^3.2.0","core-js-compat":"3.4.5","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^6.5.0","eslint-config-amex":"^11.1.0","husky":"^3.0.9","jest":"^24.1.0","jest-fetch-mock":"^1.2.0","lockfile-lint":"^3.0.8","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0","semantic-release":"^15.13.31"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git"],"branch":"master"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"58a80634e7047ecadeee1bb114ea5e7404648065","_id":"iguazu@3.0.1","_nodeVersion":"10.19.0","_npmVersion":"6.13.2","dist":{"integrity":"sha512-UIUqIDmVk7PvDs1KvRGOxbRhIe7wwl4wbQ6c2A0ktaOzg/j64TsCiCPcKUKPaXr8KQ/9JvW4L8BZKVE6hrZduA==","shasum":"0fb21372e711016a7d534bbe82e26d403f41f2b0","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.0.1.tgz","fileCount":12,"unpackedSize":88257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXXDmCRA9TVsSAnZWagAA6V4P/RgnmcPwUTTP9VpJIOjl\nvF+TY+lWBaWR/td07v7NVk+mO9sC0dl72W8BQ3IiAASsmZee0AG+Ul8Te+Lb\nYYb+l/Ab82XJAr3L96aJmVvBACHUBN4Iz763d2ieNMYdvv5Fs3l7DqQrtiML\ncaMLqMsRuGQ3BnyXFwlnK/4aqIrpTdbnTLY8FY4PrVT9ku0ool94Qi2I3gE+\n2fSxH4HJ2aR+//Rhj9YGMu3tyeTPrdho/a5uoi77CHzhPOObcHKD58tRSsRw\nWKeK05OrK9EQ1Hd154pDtN6zIco9zRSw3fGzMAq0oKZBgaD1aZmjAcgCfiOZ\nvOjFA2pvZybWNQ6PvkxrY3jm5RP4E0lv0zt7ei+yGAa7twRz8usQEwaDCGzs\n6v1wqfQpxfONhiEe3JS7e739zPvNopM+16Xo9i5qleB5YUTOBvYR1vucDbvC\nEu8Dbh7BJoMqe2zyz1cI/opV61vWzjPna9psyDsIOaZ9nUjgq64W6Jv+qf9s\nX7oFyZxz3vfUVEHY57mBiTlqehHYjGXNsE62TVFxGnUFuB0mClCI/pBcitWo\nb03Co4e5krqlnxITxl+dPvDlyaatxYESHp888K+YSqkEcfvrgMAYETxvXTJD\nP0otW/wOFysTt0/F1pGvcSRPlzye1Y/5ci9A/ipHtexdBtHMkOmmjh8Z6Z/y\noWhU\r\n=psA6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbq9m7+jVWOH5zRBEgfjQcTpUVBDbtacZGZRubqXnbOAiAwLtT4Sylh3nd996PjMaLt4en7g3AJ/nL5vx38vKOr8Q=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.0.1_1583182053952_0.872359490842912"},"_hasShrinkwrap":false},"3.0.2":{"name":"iguazu","version":"3.0.2","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"keywords":["async","react","redux","react-redux","fetch","data","query","promise"],"homepage":"https://github.com/americanexpress/iguazu","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx,md .","prepublish":"npm run build","test":"jest && commitlint --from origin/master --to HEAD","test:lockfile":"lockfile-lint -p package-lock.json -t npm -a npm -o https: -c -i","posttest":"npm run lint && npm run test:lockfile"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.3","@babel/polyfill":"^7.2.5","@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","amex-jest-preset":"^5.0.0","amex-jest-preset-react":"^5.0.1","babel-jest":"^24.1.0","babel-preset-amex":"^3.2.0","core-js-compat":"3.4.5","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^6.5.0","eslint-config-amex":"^11.1.0","husky":"^3.0.9","jest":"^24.1.0","jest-fetch-mock":"^1.2.0","lockfile-lint":"^3.0.8","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0","semantic-release":"^15.13.31"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git"],"branch":"master"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"739bfa92ebecda80a461f6ea470bb04155f73eaf","_id":"iguazu@3.0.2","_nodeVersion":"10.19.0","_npmVersion":"6.13.2","dist":{"integrity":"sha512-XMO75p6TmZm2xbAchNhBhbE168zj2DTI0v9DLKmrxw+joXoHQxtPgzf5TSC/qH/ErEKw2vCgg++Uj9eJmZQ23Q==","shasum":"2d5c37bd6fa72ac1c606a39035e7974b9a52f11b","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.0.2.tgz","fileCount":12,"unpackedSize":88565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXXXLCRA9TVsSAnZWagAAlboP/jKHFfZFkEU/DhJb0/Vl\nuoxxnqjuGLPOE4WO5yF75WIbjI4OTktmxWVlXfarky97FceQjkbni7Dx6Q3L\n6B6r6IBK+qpgPPv95zWiOw6UqkRizSreQLL0aETDY8ue//Q/cIphThVCfIa9\nAYtz9jvPzTSFdMMVVAWkhWezXyK2HWy2aTE6iO526KRGz9J6+i1ZtpmT0OHQ\nSnUM35/cyeuMhs9DGDyiRbHHos9Ccf8edYRi2S/0SqxUgLsVZqgZXzgPamT0\n0x+dtXg+tfjREe+GOpeF1LasSSdTOK29HJUR5Ybyi3zjVwCOOIwGMVZSz6wo\nq2Y4EQQOV1FPleKsspgGdmU16J27gLDWmMXTBAI2C0NN79OAeq+UEla5T1KV\n5M9Z04/HXKWiET5bvSa8T3oFeMrVvltqR8HJYYXdVJoXjg06wJ6NJSsXzUYx\nSPxIm8kRXHRuuGZqR/qpJ/BNo7Gjprki3zuOeE9UHHJr/Q2qw5SWJVDcibde\nryU5Zg0CdWYIuM6Zdtkdb7qlPxf3epG6985zwRw9QGrg/UoV9c58AQoOda8I\niwSeUhL9yd+6XuEHdcOCq7a4K3eyiU0yoIuO+MC72++aUgAzztUC7WVWfOsy\n/JUi7wMfBCeZy17XhnqjWlpGXaEn7aRolm8aq+I6eFrjpp0e5CK9p9uDRiGu\nkRfC\r\n=wXl4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8Jl0fs3QLAFt9hDnjPGZSvQre022ySBJKKI3eFqA1JgIhAOyGxUXbhopSRZzDXBvHB68HpVU5KvtcgRMZhlXZfX5W"}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.0.2_1583183306849_0.028372808598212007"},"_hasShrinkwrap":false},"3.1.0":{"name":"iguazu","version":"3.1.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"keywords":["async","react","redux","react-redux","fetch","data","query","promise"],"homepage":"https://github.com/americanexpress/iguazu","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx,md .","prepublish":"npm run build","test":"jest && npm run test:git-history","test:git-history":"commitlint --from origin/master --to HEAD","test:lockfile":"lockfile-lint -p package-lock.json -t npm -a npm -o https: -c -i","posttest":"npm run lint && npm run test:lockfile"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.3","@babel/polyfill":"^7.2.5","@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","amex-jest-preset-react":"^6.1.0","babel-jest":"^24.1.0","babel-preset-amex":"^3.2.0","core-js-compat":"3.4.5","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^6.5.0","eslint-config-amex":"^11.1.0","husky":"^3.0.9","jest":"^25.1.0","jest-fetch-mock":"^1.2.0","lockfile-lint":"^4.3.6","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0","semantic-release":"^15.13.31"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git"],"branch":"master"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"44571e1c39772577d7b3cb9262a515708c1dbe7f","_id":"iguazu@3.1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.2","dist":{"integrity":"sha512-a+tFmYpOUNry+DyPgDa8HKCpMYV+cZo0OOQj06eSe0n78G4j+M6uuCMm9DEg9z2/3f30xw6VLcCHkzsQlGVBTw==","shasum":"93c8703a41a09d1ff6910a5d01d5f47b2e72c814","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.1.0.tgz","fileCount":16,"unpackedSize":92585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNr34CRA9TVsSAnZWagAAiYUP/jCZN9SnY9kuDKG6IS5g\n546BkI/8Ib5od4NHECQ1NHO6vQ4NVCuJOh8lFBX4dxHAmUtdaByiDSnZC63h\nNg6FXaTk8RyhhThx4xw8cbFZ+BJXvCdlQ16dvSFUdviHKRXWzzdl8Z8jyDyE\nEiQLkU4sHIlBpLWh/F7+Y9sHMdeJtDaaz1ggNq5gM+ZZDVVtNojeF26Gj2Vn\neM968WEovwgdJoJ5Eb98K+2Gph0yaV6/4Ebyjw844UIiBfmoxWaGdkhzTvYv\nEQezyX1OniaJ5k78JvKPZYtHXIzz97qh8EXATzf5+MVguWHoacEUGqBnMBmQ\nvHeEPUDzWIuYv/2tjYmSIS+RwCZap+L+ELjhgbQShteA9747B0ZkZ21DquCR\nCDa1/aoHKaQcMfb/5pv8OlrYA9ODWXAvglo6R7VHzly5nmcQBfRfwb349g4a\nGH/nedy5o77Y8JdCYgLqmgHNF0ymxc0ca1HGqMr2q4v97INoxxm+ARH1iLNK\nCnfo3roGs5/uU84utSJhQ5dsvqnSdEn6/HfIpVOM9BN15xccLO/Yh4GDxV61\nGXhu08E6xkwzaF1jgt9pAhjlJqvVVPybQ7rNaDPLPQhYZwTLWby3OopH0rII\nXL+unQ9ZurTNiAnZrgOLs7/2/Cvqzgsi5evn5g+K3vOk/bySvSYQoxXCjmXT\nRCjz\r\n=Sxbu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvH+zvq1KcKnLMepoZ2/wDLPHKWC38Svwsz9e8IbicbgIhAJItY3xnYnQ34gFSFSVEBYkqzkdvXsmoQJsNb5gby6ed"}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.1.0_1597423095831_0.7009675283407761"},"_hasShrinkwrap":false},"2.7.0":{"name":"iguazu","version":"2.7.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest && commitlint --from origin/2.x --to HEAD","posttest":"npm run lint"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@semantic-release/changelog":"^3.0.5","@semantic-release/commit-analyzer":"^6.3.2","@semantic-release/git":"^7.0.18","@semantic-release/npm":"^5.3.4","@semantic-release/release-notes-generator":"^7.3.2","semantic-release":"^15.13.31","@babel/cli":"^7.2.3","@babel/core":"^7.2.2","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0","husky":"^3.0.9"},"peerDependencies":{"react":"^16.0.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git"],"branch":"2.x"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"8def30e0d5e82fbd42dd8f7eeb9ebfd3a4aff4fb","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.7.0","_nodeVersion":"10.22.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-88w5AUwJpoeOQx6BkuEf9pPuGNecu3VUDCyVlhnEgvRCzro6wBMNUD7Z7EsFERHiaXR2D2BVfoKHS0OxvcK6ww==","shasum":"b9fd5aaeefb7210d8cb3463c1d90c788064293fc","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.7.0.tgz","fileCount":12,"unpackedSize":56139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNuJuCRA9TVsSAnZWagAAjmMP/0PAyTvqPl2ruz3BgG/f\nBhakb/andHfpokMRaIiMmLgLm9hWmBCsggeeGjT3R6Y+4rSPZ+ahZwZsChz3\nCZ1kN6CVNd3NKDsrWbj+qxgvk4Mvl9g1C2/GZeiV+ApPS0o2MuzGXn0K042b\nHTVS34fIcDTdefYtsxibL8Dta5VmLO0sR91mXtY9u//p1bygS+wAPPN0HHdK\nl8HMmOAXCABt4+tkfoZpquMcYKnFbDgs78KiroAmHotaYiZc3sIaDm1nar2S\nkygqHBgaY/5j0vPG7etjR62WPH77m4WJ8JTNfVGZQit7+AVbF6UUU18YSYZ/\nr0i1hhaMPDT4KrcM6LFUWZr2KgMZR1W2R3v7AQW9tRDYQ9/whV/RkrQGKHPB\ny8ju6aFkMS/oe3I+MUyD5K3Q7YqTbpYe5SnxWNVcXONB1D2Lj3tsnbYm0WRv\nbvoTHIMps5Y6Rn7L3mgf/e+ACnaC6Bwr2PBIElS/I/R0tORB9V/oI/Jbo0qL\nPG8+fPKqtXIFXmApQk8GxiItkxMDPNBB5RJ8DwoxWdSqUGc0xXZi0JByC6sb\nhTW8P1A7h9xd1Qie0tl7iy6PXyyiVODiKe0Aqe368DT4Y5DFl43rVpRyrkmz\nmI9q+2gnpBgNFwe9Z/xmW8I5cL88Wb70fIXFH/zDwRT6g9mIP4l8EBxcO2qz\nR9s5\r\n=aDXO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFjDl9eSfVHZkrO/nq1VwHUSpufoasnIy0Z+c+d/DSksAiAxHPgBRdbDAkIa3a+b5AL+EIKRIZo8Ap9llfE/inEpMQ=="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.7.0_1597432430387_0.7920883384536512"},"_hasShrinkwrap":false},"2.8.0":{"name":"iguazu","version":"2.8.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx .","prepublish":"npm run build","test":"jest && npm run test:git-history","test:git-history":"commitlint --from origin/2.x --to HEAD","test:lockfile":"lockfile-lint -p package-lock.json -t npm -a npm -o https: -c -i","posttest":"npm run lint && npm run test:lockfile"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"@babel/polyfill":"^7.2.5","hoist-non-react-statics":"^1.2.0","lodash":"^4.17.4","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","@commitlint/cli":"^9.1.2","@commitlint/config-conventional":"^9.1.2","@semantic-release/changelog":"^5.0.1","@semantic-release/commit-analyzer":"^8.0.1","@semantic-release/git":"^9.0.0","@semantic-release/github":"^7.0.7","@semantic-release/npm":"^7.0.5","@semantic-release/release-notes-generator":"^9.0.1","amex-jest-preset-react":"^5.0.1","babel-preset-amex":"^2.0.0","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^4.18.2","eslint-config-amex":"^6.0.0","husky":"^3.0.9","jest":"^24.1.0","react":"^16.0.0","react-async-bootstrapper":"^1.1.1","react-dom":"^16.0.0","react-redux":"^5.0.5","react-test-renderer":"^16.0.0","redux":"^3.6.0","redux-thunk":"^2.2.0","semantic-release":"^17.1.1","lockfile-lint":"^4.3.6"},"peerDependencies":{"react":"^16.0.0"},"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branch":"2.x"},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# Iguazu\n\nAn asynchronous data flow solution for React/Redux applications.\n\n> Want to get paid for your contributions to `iguazu`?\n> Send your resume to oneamex.careers@aexp.com\n\n## Motivation\n[react-redux](https://github.com/reduxjs/react-redux) works great for when you want to take data that already exists in state and inject it as props into a React component, but it doesn't help you at all with the flow of loading asynchronous data into state. If a react component relies on asynchronous data you typically have to do three things:\n\n1. Define a load action responsible for fetching the asynchronous data, which should be triggered on mount and when the component receives new props that change what data should be loaded\n2. Define a `mapStateToProps` function and use selectors to get the data out of state\n3. Determine whether the state is actually loaded based on the props the selectors return\n\nIguazu seeks to simplify this flow into one step.\n\n## Usage\nIguazu exports a Higher Order Component (HOC) `connectAsync` similar to React Redux's `connect`.  Instead of taking a `mapStateToProps` function, it takes a `loadDataAsProps` function. It should return a map where each key is the name of a prop that will contain some asynchronous data and the value is the load function that will load that data if it is not already loaded.  The load function must synchronously return an object with the keys `data`, `status`, `error`, and `promise`. The key `data` should be the data returned from the asynchronous call. The key `status` should be either `loading` to signal the asynchronous call is in flight or `complete` to signal it has returned. The key `error` should be a truthy value if there was an error while loading. The key `promise` should be the promise of the asynchronous call.\n\nFor each key defined in the `loadDataAsProps` function, the HOC will pass a prop to the wrapped component that contains the data. It will also pass two function props, `isLoading` and `loadedWithErrors`, which will tell you if any of the async props are still loading or loaded with errors respecitively. If you are only interested in a subset of async props, you can pass an array of the props names as the first argument. There will also be a prop named `loadErrors` that maps the load error, if there is one, for each prop. You can use this if you want to more granularly dig into what failed.\n\nExample:\n\n```javascript\n/* MyContainer.jsx */\nimport React from 'react';\nimport { connectAsync } from 'iguazu';\n\nfunction MyContainer({ isLoading, loadedWithErrors, myData, myOtherData }) {\n  if (isLoading()) {\n    return <div>Loading...</div>\n  }\n\n  if (loadedWithErrors()) {\n    return <div>Oh no! Something went wrong</div>\n  }\n\n  return <div>myData = {myData} myOtherData = {myOtherData}</div>\n}\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(queryMyData(ownProps.someParam)),\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam))\n  }\n}\n\nexport default connectAsync({ loadDataAsProps })(MyContainer);\n\n/* actions.js */\nexport function queryMyData(param) {\n  return (dispatch, getState) => {\n    const data = getState().path.to.myData[param];\n    const status = data ? 'complete' : 'loading';\n    const promise = data ? Promise.resolve : dispatch(fetchMyData(param));\n\n    return { data, status, promise };\n  }\n}\n\nexport function queryMyOtherData(param) {/* Essentially the same as queryMyData */};\n```\n\nYou can see that by moving the logic responsible for selecting out the cached data and triggering a fetch if needed into the actions makes the components much simpler.\n\n## Advanced Usage\n### SSR\nThe main benefits of server side rendering are improved perceived speed and SEO. With perceived speed, the general best practice is to get something in front of the user's eyes as fast as possible. Typically that means you shouldn't wait for any data before rendering to string. For SEO, it's more important that you render the full content, and if that content is dynamic, you'll need to wait on some data. Usually not every view is important for SEO, such as logged in views, so the best option is to only preload data you absolutely have to for SEO. For this reason, Iguazu makes SSR data preloading opt in. If you would like a component's data to be loaded prior to rendering on the server, you can add a property named `ssr` with the value of true.\n\n**Note:** Whether or not you are planning on waiting for data to load before doing a server side render, you will need to tell Iguazu it is running on node by calling `enableSSR`. Otherwise it will assume it is running on the client and will execute the load functions in `componentWillMount` during `renderToString` whether you opted in or not. If you're not running `renderToString`, you don't have to worry.\n\nExample:\n\n```javascript\n/* server.js */\nimport { enableSSR } from 'iguazu';\nimport express from 'express';\n\nenableSSR();\n\nconst app = express();\n// Set up express app\n\n/* Component.jsx */\nfunction loadDataAsProps() {...}\nloadDataAsProps.ssr = true;\n```\n\nIguazu supports react-async-bootstrapper so that you are not restricted to using iguazu for ssr data preloading.  See react-async-bootstrapper's documentation for instructions on how to wait on SSR data preloading.\n\n#### Helper methods\nSometimes you might want to enable SSR preloading for a component, but only for some of its data. Iguazu provides some helper methods, `defer` and `noncritical`, to more granularly load data on the server. If you wrap a load function with `defer`, it will not execute the load function at all and will just return a status of `loading`. If you wrap a function with `noncritical`, the load function will execute, but its promise will be caught so that if it rejects it won't cause the Promise.all to reject and return before the other more critical pieces of data have returned.\n\nExample:\n\n```javascript\nimport { defer, noncritical } from 'iguazu';\n\nfunction loadDataAsProps() {\n  return {\n    clientOnlyData: defer(() => dispatch(loadClientData())),\n    tryToLoadOnServerData: noncritical(() => dispatch(loadIffyData()))\n  }\n}\n```\n\nIguazu will also pass a parameter to the load function that tells it whether it is running on the server or not. You might want to use this if you expect data to have a specific shape when it is not loaded, because `defer` will just return data as undefined.\n\nExample:\n\n```javascript\nfunction MyComponent({ someData }) {\n  return <ul>{someData.list.map(item => <li key={item.toString()}>{item}</li>)}</ul>\n}\n\nfunction loadDataAsProps() {\n  return {\n    someData: ({ ssr }) =>\n      (ssr ? { data: { list: [] }, status: 'loading' } : dispatch(loadSomeData()))\n  }\n}\n```\n\n### Synchronization\nLet's say you have a dynamic dashboard of components that are all responsible for loading their own data, but you want to wait until they are all loaded to render them so that you don't see a bunch of spinners or a partially loaded page. Since Iguazu attaches the loadDataAsProps function as a static, parent components can easily wait until their children's data is loaded before rendering them.\n\n```javascript\nimport React from 'react';\nimport { iguazuReduce } from 'iguazu';\nimport ComponentA from './ComponentA';\nimport ComponentB from './ComponentB';\n\nfunction MyComponent({ isLoading }) {\n  if (isLoading()) {\n    return <div>Loading...</div>\n  }\n\n  return (\n    <div>\n      <ComponentA someParam=\"someParam\" />\n      <ComponentB />\n    <div>\n  );\n}\n\nfunction loadDataAsProps({ store, ownProps }) {\n  return {\n    ComponentA: () => iguazuReduce(ComponentA.loadDataAsProps)({\n      store, ownProps: { someParam: 'someParam' }\n    }),\n    ComponentB: () => iguazuReduce(ComponentB.loadDataAsProps)({ store, ownProps: {} })\n  }\n}\n```\n\n### Sequencing\n\nQuite often you need the results of one asynchronous call to get the inputs for another call. One way to do this is by simply using components.\n\nExample:\n\n```javascript\nimport React from 'react';\nimport { connectAsync } from 'iguazu';\n\nfunction Parent({ isLoading, parent }) {\n  if (isLoading()) {\n    return <div>Loading Your Profile...</div>;\n  }\n\n  return (\n    <div>\n      <div>\n        You:\n        <PersonInfo info={parent} />\n      </div>\n      <KidsContainer parentId={parent.id} />\n    </div>\n  );\n}\n\nfunction parentLoadDataAsProps({ store: { dispatch } }) {\n  return {\n    parents: dispatch(loadLoggedInParent()),\n  };\n}\n\nconst ParentContainer = connectAsync({ loadDataAsProps: parentLoadDataAsProps })(Parent)\n\nfunction Kids({ isLoading, kids }) {\n  if (isLoading()) {\n    return <div>Loading Kids...</div>;\n  }\n\n  return (\n    <div>\n      Kids:\n      {kids.map((kid) => (<PersonInfo info={kid} />))}\n    </div>\n  );\n}\n\nfunction kidsLoadDataAsProps({ store: { dispatch }, ownProps: { parentId } }) {\n  return {\n    kids: dispatch(loadKidsByParent(parentId)),\n  };\n}\n\nconst KidsContainer = connectAsync({ loadDataAsProps: kidsLoadDataAsProps })(Kids)\n\nfunction PersonInfo({ info: { name, age } }) {\n  return {\n    <div>\n      <span>name: {name}</span>\n      <span>age: {age}</span>\n    </div>\n  }\n}\n```\n\nSuppose you want to synchronize the parent and kid components so that you show a loading spinner until they are both done loading their data. Or maybe you only have one component that needs some sequenced data and it doesn't make sense to create a new component for each nested piece of data. In these cases you can use the load helper, `sequence`. You can pass it an array of load functions that need to run in order and depend on data returned from previous functions.\n\nExample:\n\n```javascript\nimport React from 'react';\nimport { connectAsync, sequence } from 'iguazu';\n\nfunction Parent({ isLoading, parent, kids }) {\n  if (isLoading()) {\n    return <div>Loading Your Profile...</div>;\n  }\n\n  return (\n    <div>\n      <div>\n        You:\n        <PersonInfo info={parent} />\n      </div>\n      <Kids kids={kids} />\n    </div>\n  );\n}\n\nfunction parentLoadDataAsProps({ store: { dispatch } }) {\n  const sequenceLoadFunctions = sequence([\n    { key: 'parent', handler: () => dispatch(loadLoggedInParent()) },\n    { key: 'kids', handler: ({ parent }) => dispatch(loadKidsByParent(parent.id)) }\n  ]);\n\n  return {\n    ...sequenceLoadFunctions\n  };\n}\n\nconst ParentContainer = connectAsync({ loadDataAsProps: parentLoadDataAsProps })(Parent)\n\nfunction Kids({ kids }) {\n  return (\n    <div>\n      Kids:\n      {kids.map((kid) => (<PersonInfo info={kid} />))}\n    </div>\n  );\n}\n\nfunction PersonInfo({ info: { name, age } }) {\n  return {\n    <div>\n      <span>name: {name}</span>\n      <span>age: {age}</span>\n    </div>\n  }\n}\n\n```\n\nSequenced function handlers are called with the results from all previous functions in case your inputs need to be derived from more than one previous call.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  { key: 'first', handler: () => dispatch(loadFirst()) },\n  { key: 'second', handler: ({ first }) => dispatch(loadSecond(first.someParam)) },\n  { key: 'third', handler: ({ first, second }) => dispatch(loadThird(first.someParam, second.anotherParam)) }\n]);\n```\n\nIf you need to make two calls in parallel before you make a third, you can use a combination of `iguazuReduce` and `sequence` to accomplish your goal.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  {\n    key: 'first',\n    handler: iguazuReduce(() => ({\n      firstA: () => dispatch(loadFirstA()),\n      firstB: () => dispatch(loadFirstB())\n    }))\n  },\n  {\n    key: 'second', handler: ({ first: { firstA, firstB } }) => dispatch(loadSecond(firstA, firstB))\n  }\n]);\n```\n\nFunction handlers require the previous calls to succeed to continue to the next by default. In the\nevent a request returns with an error all remaining calls are flagged with the same error. To bypass\nthis default behavior, you can wrap the function handler in `noncritical` to continue without the\nprevious results.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  { key: 'first', handler: () => dispatch(loadFirst()) },\n  { key: 'second', handler: ({ first }) => dispatch(loadSecond(first.someParam)) },\n  { key: 'unrelated', handler: noncritical(() => dispatch(loadUnrelated())) },\n]);\n````\n\n### Updating\n\nIguazu processes updates on Redux state changes by comparing the previous and next responses from `loadDataAsProps` using\n[shallowequal](https://www.npmjs.com/package/shallowequal) by default. You are able to declare a comparator function when\ncalling `connectAsync` to manage how the previous and next responses from `loadDataAsProps` are compared.\n\n```javascript\nimport { deepEqual } from 'fast-equals';\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(queryToDeeplyNestedData(ownProps.someParam)),\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam))\n  }\n}\n\nexport default connectAsync({\n  loadDataAsProps,\n  stateChangeComparator: deepEqual,\n})(MyContainer);\n```\n\n### Limiting\n\nAs some functions called within `loadDataAsProps` can be expensive when ran on every Redux state change, you are able to declare a limiter function when calling `connectAsync`. Calls to `loadDataAsProps` are not limited by default.\n\n```javascript\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(expensiveQueryToData(ownProps.someParam)),\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam))\n  }\n}\n\nexport default connectAsync({\n  loadDataAsProps,\n  stateChangeLimiter: onStateChange => debounce(onStateChange, 100),\n})(MyContainer);\n```\n\n### Fetching On User Action\n\nIn the case that `loadDataAsProps` needs to be called on a user action, the initial render can be controlled by the result of the expected user input.\n\n```javascript\n/* ComponentA.jsx */\nimport React, { Component, Fragment } from 'react';\nimport ComponentB from './ComponentB';\n\nexport default class ComponentA extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { buttonClicked: false };\n  }\n\n  handleClick = () => this.setState({ buttonClicked: true });\n\n  render() {\n    const { buttonClicked } = this.state;\n    return (\n      <Fragment>\n        <button onClick={this.handleClick}>Click to Load</button>\n        {\n          buttonClicked && <ComponentB />\n        }\n      </Fragment>\n    )\n  }\n};\n\n/* ComponentB.jsx */\nimport React from 'react';\nimport { connectAsync } from 'iguazu';\n\nfunction ComponentB({ isLoading, loadedWithErrors, myData, myOtherData }) {\n  if (isLoading()) {\n    return <div>Loading...</div>\n  }\n\n  if (loadedWithErrors()) {\n    return <div>Oh no! Something went wrong</div>\n  }\n\n  return <div>myData = {myData} myOtherData = {myOtherData}</div>\n};\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => {\n      if (!ownProps.someParam) {\n        return { status: 'complete', promise: Promise.resolve() }; // data & error should be undefined.\n      }\n      return dispatch(queryMyData(ownProps.someParam));\n    },\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam))\n  }\n};\n\nexport default connectAsync({ loadDataAsProps })(ComponentB);\n```\n\n## Global Configuration\n\nIguazu is also capable of consuming global configuration that will be applied to all instances of `connectAsync`. These options will be applied unless otherwise overridden by providing the equivalent setting in the `connectAsync` call.\n\n```javascript\nimport { shallowEqual, deepEqual } from 'fast-equals';\nimport { configureIguazu } from 'iguazu';\n\nconfigureIguazu({\n  stateChangeComparator: shallowEqual, // applied globally.\n  stateChangeLimiter: onStateChange => debounce(onStateChange, 100), // applied globally.\n});\n\n...\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(queryToDeeplyNestedData(ownProps.someParam)),,\n    myOtherData: () => dispatch(expensiveQueryToData(ownProps.someParam))\n  }\n}\n\nexport default connectAsync({\n  loadDataAsProps,\n  stateChangeComparator: deepEqual, // override global setting.\n  stateChangeLimiter: onStateChange => debounce(onStateChange, 500), // override global setting.\n})(MyContainer);\n```\n\n## Known Issues\n\n- Using `iguazuReduce` within a `sequence` returns the response to the next handler as an array if the data is not loaded. Pass in `promiseAsObject` to `iguazuReduce` to resolve until next major version.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  { key: 'first', handler: () => iguazuReduce(ComponentA.loadDataAsProps, { promiseAsObject: true })({\n    store, ownProps: { someParam: 'someParam' }\n  }) },\n  { key: 'second', handler: ({ first }) => dispatch(loadSecond(first.someParam)) },\n]);\n```\n\n## Why is it called Iguazu?\nThis library is all about helping you manage data flow from many different sources. Data flow -> water -> waterfalls -> Iguazu falls - the largest waterfalls system in the world. It could have been named something like react-redux-async, but Iguazu also expects a certain pattern, which means there could potentially be many libraries that follow this pattern that could plug in to Iguazu. A unique name will make them more discoverable. Also it sounds cool.\n\n## Contributing\nWe welcome Your interest in the American Express Open Source Community on Github.\nAny Contributor to any Open Source Project managed by the American Express Open\nSource Community must accept and sign an Agreement indicating agreement to the\nterms below. Except for the rights granted in this Agreement to American Express\nand to recipients of software distributed by American Express, You reserve all\nright, title, and interest, if any, in and to Your Contributions. Please [fill\nout the Agreement](https://cla-assistant.io/americanexpress/iguazu).\n\nPlease feel free to open pull requests and see [CONTRIBUTING.md](./CONTRIBUTING.md) for commit formatting details.\n\n## License\nAny contributions made under this project will be governed by the [Apache License\n2.0](https://github.com/americanexpress/iguazu/blob/master/LICENSE.txt).\n\n## Code of Conduct\nThis project adheres to the [American Express Community Guidelines](./CODE_OF_CONDUCT.md).\nBy participating, you are expected to honor these guidelines.\n","readmeFilename":"README.md","gitHead":"ea12b8a8dd99603ee1ac47cdaae17e9140f0f9ce","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"homepage":"https://github.com/americanexpress/iguazu#readme","_id":"iguazu@2.8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.7","dist":{"integrity":"sha512-OCLJ0cePLehMMMlVY9aGY2ari9ycE44jZmxSfpxnf6wkF09MqJagibfejni60PSYhfDXEgNl0eP9qZ+RSt6pKQ==","shasum":"c5724ea032f4ef39e84092e0cc74dd9a34900f21","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-2.8.0.tgz","fileCount":16,"unpackedSize":61678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOtXfCRA9TVsSAnZWagAAhxUP/3M3HCvbwPy8Y51R0M5v\nzUJCEi0Hzp/tLuPgWA112jnF/md8Lk30mth6+qUG2l8lMXnccOJwuI4/nqCh\nXXsKf8ETGEz+MvWIdmy3l2N/hgkWcEgs3v1Mwm3xaTOUIgQY+3YwyJZdXlkN\nBs57ahQqDYDri5p3a2Tp4KoFPg8m+kWdgFTN+PzUvMtwYwjM5Qfref+ubvAt\nkdM6zmmFLX54iB54MLOb+GvxyTt79i1ewoPVVv5VPwQK/3PhIlBRqSRN/aJz\nbj+K7YwgP2da+XcemNLcVgGnoZTtQzRA90qlO5KZQcAdWTF9VN3bR3AqRCFn\nE/+OJ+BEOcMuLKZqiyIn/I+CaQnvW8XyoJzFfUzLYQzJi2zEGRBhDjvm2a5M\nwlaZAuEZHMdvSUwmPMAAGthxSUnU3DbcDH7CnEgTdF9Cbhc17G1U0zqKYF4G\nxh1x6cF/84Qp5oZh7qIs7BT+6KjUBRlsVAY3OGlO374E8wzaPqm/DUVDQdOs\nGQCG8GdtgR30qce+68pAtoNNEJEJ183EPhkk14MjzZV72SG91Bk2xMuDZ2se\nS9KsyuFH5fb6iKi1J5icw/xfgDudccB11EOIOvsaVZOUpiPKH5iTnftbzn1W\nlW/e22OldWN6oLz7JSBOtGEM/OsBb4ValH/a2EG9Y6ytZWlJ4OcjKkRr58ZC\n5how\r\n=4p7l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVEH/i5Wm16+KQRRwqcQJxSqLRL+74CPMsV3DQ4W9oXQIgVbF5jM2S0o7C9ENM0uxvKKVmx1ZBsyJ8A10H3mX+eYI="}]},"maintainers":[{"email":"open-source-ops@aexp.com","name":"amexopensource"},{"email":"anescobar1991@gmail.com","name":"anescobar1991"},{"email":"hello@jimmyking.me","name":"jimmyking"},{"email":"j_smart_foster@hotmail.com","name":"jsmartfo"},{"email":"michael@twoeyetech.com","name":"mtomcal"},{"email":"i@pixnbits.org","name":"pixnbits"}],"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_2.8.0_1597691359147_0.9045218185222592"},"_hasShrinkwrap":false},"3.2.0":{"name":"iguazu","version":"3.2.0","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"keywords":["async","react","redux","react-redux","fetch","data","query","promise"],"homepage":"https://github.com/americanexpress/iguazu","bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib","lint":"eslint --ignore-path .gitignore --ext js,jsx,md .","prepublish":"npm run build","test":"jest && npm run test:git-history","test:git-history":"commitlint --from origin/main --to HEAD","test:lockfile":"lockfile-lint -p package-lock.json -t npm -a npm -o https: -c -i","posttest":"npm run lint && npm run test:lockfile"},"jest":{"preset":"amex-jest-preset-react","setupFiles":["./test-setup.js"]},"dependencies":{"hoist-non-react-statics":"^3.3.0","prop-types":"^15.5.10","shallowequal":"^1.0.1"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.5","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^5.0.1","@semantic-release/commit-analyzer":"^8.0.1","@semantic-release/git":"^9.0.0","@semantic-release/npm":"^7.0.6","@semantic-release/release-notes-generator":"^9.0.1","amex-jest-preset-react":"^6.1.0","babel-jest":"^27.4.5","babel-preset-amex":"^3.5.1","core-js":"^3.20.0","core-js-compat":"3.4.5","enzyme":"^3.1.1","enzyme-to-json":"^3.2.1","eslint":"^7.32.0","eslint-config-amex":"^15.0.1","eslint-plugin-jest":"^24.7.0","eslint-plugin-jest-dom":"^3.9.2","husky":"^3.0.9","jest":"^27.4.5","jest-fetch-mock":"^1.2.0","lockfile-lint":"^4.3.6","react":"^16.0.0","react-dom":"^16.0.0","react-redux":"^7.1.1","react-test-renderer":"^16.0.0","redux":"^4.0.4","redux-thunk":"^2.3.0","regenerator-runtime":"^0.13.9","semantic-release":"^17.2.1"},"peerDependencies":{"react":">=16.0.0","react-dom":">=16.0.0","react-redux":"^7.1.1","redux":"^4.0.4","redux-thunk":"^2.3.0"},"release":{"branches":["+([0-9])?(.{+([0-9]),x}).x","main","next","next-major",{"name":"beta","prerelease":true},{"name":"alpha","prerelease":true}],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"]},"husky":{"hooks":{"pre-commit":"npm test","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"dc3671ae4c15ee11647a77946c5e87485ed1589a","_id":"iguazu@3.2.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-Uoio5+U9Vr0n33MFTFLw1rPMQZEvRjy95aid6tNTXUwZsyaoOf8Pu6DBsgv2iagp9VeuvG82GUwr/Z2KrNP5ng==","shasum":"395f0ed93a349c53a481f60a87e1c22e999bcb41","tarball":"https://registry.npmjs.org/iguazu/-/iguazu-3.2.0.tgz","fileCount":15,"unpackedSize":92642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvMIJCRA9TVsSAnZWagAAuCUP/RivIt8fRPW6MrNjekC/\ncvj9cgZ8SQjedqfsqPy5LBiXZn8GslzD+ipol3Jeoa80f5Z+VpqteW1VdsRZ\nYuFPQ1u3NgIpHBwfxdato5/Aq2Ol+yXnkJEp9ch75qGND4tq1Fzu6OWg1r5v\n4fdvvSZRnleVp0fzeCiEq8S8NpF3+/JIiYBv1TNRDwjiFWkX7B+8cn53XcLC\nzV9X5yiJEdNjm06DYI7tIO8TfT9iiAkKASmv4Bf6y0p1QpwY6K5k+xLMDx92\nEaDCtmAIpDKvSfv6krNRKpQmOIBWCJdelpx0K92I9hB7pCMEYfjR71I1QdCz\nDaydMfxfjLaIGnqWX5XlXHDAPvMNiCAmaDJ/emBtUSGPqpMryI4tdpkgUNr0\nYTS3gjk3RLEZPDJ1cnA5DcQsQXXV+3vbKkJiV9uXrGmlQqdDXaHve+xOn5w1\neamH0iVUABtSWJ9k0hJQtvJwd7OPbbVMHlIYkIGz72Xoltnp5lFEQfh4R9C7\nAzK3kqpWh+qe5EkqSbG+DyDy49oj91Zis+SaMz/MqBYNbrs/o/GPw4tUuJiS\nSWwlMwka7zj7wuug69zgSc/KuMgg4LzwgC1ZH/cvYz+Fd4M/PZBquoC+SOqp\nG4tiJgsGcON1r185HCCNIy0j+aIok67NGEBwFn1ky25nQzeNSUmaAcDl/Lvj\nR/s6\r\n=lxS/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHmAgR+dudWWcispYzb1nxbRjUfvkYFE6fBrnVRo9OKWAiBa16hQ91j61w5ypoGeNeiNmF/H7lb1lxKbhzuVlO+wEA=="}]},"_npmUser":{"name":"amexopensource","email":"open-source-ops@aexp.com"},"directories":{},"maintainers":[{"name":"pixnbits","email":"i@pixnbits.org"},{"name":"anescobar1991","email":"anescobar1991@gmail.com"},{"name":"jsmartfo","email":"j_smart_foster@hotmail.com"},{"name":"amexopensource","email":"open-source-ops@aexp.com"},{"name":"mtomcal","email":"michael@twoeyetech.com"},{"name":"10xlacroixdrinker","email":"hello@jaimeking.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/iguazu_3.2.0_1639760393832_0.06416745963936821"},"_hasShrinkwrap":false}},"readme":"<h1>\n  <center>\n    <br />\n    <img src=\"./iguazu.png\" alt=\"iguazu - Iguazu\" width=\"50%\" />\n    <br /><br />\n  </center>\n</h1>\n\n[![npm version](https://badge.fury.io/js/iguazu.svg)](https://badge.fury.io/js/iguazu)\n![Main Health Check](https://github.com/americanexpress/iguazu/workflows/Main%20Health%20Check/badge.svg)\n\n> Iguazu is a simple Redux-powered Async Query engine. By using a\n> Higher-Order Component, Iguazu transparently manages dispatching async\n> requests and injecting into React props. Iguazu has an ecosystem of\n> adapters for various querying + caching strategies: [Iguazu RPC](https://github.com/americanexpress/iguazu-rpc), [Iguazu GraphQL](https://github.com/americanexpress/iguazu-graphql) and [Iguazu REST](https://github.com/americanexpress/iguazu-rest).\n\n## 👩‍💻 Hiring 👨‍💻\n\nWant to get paid for your contributions to `iguazu`?\n> Send your resume to oneamex.careers@aexp.com\n\n## 📖 Table of Contents\n\n* [Features](#-features)\n* [Usage](#-usage)\n* [Upgrading](#-upgrading)\n* [Contributing](#-contributing)\n\n## ✨ Features\n\n* Streamlines dispatching, load states, and injecting into React props\n* Parallel and sequential async requests\n* Server-side rendering ready\n\n### Motivation\n\n[react-redux](https://github.com/reduxjs/react-redux) works great for when you want to take data that already exists in state and inject it as props into a React component, but it doesn't help you at all with the flow of loading asynchronous data into state. If a react component relies on asynchronous data you typically have to do three things:\n\n1. Define a load action responsible for fetching the asynchronous data, which should be triggered on mount and when the component receives new props that change what data should be loaded\n2. Define a `mapStateToProps` function and use selectors to get the data out of state\n3. Determine whether the state is actually loaded based on the props the selectors return\n\nIguazu seeks to simplify this flow into one step.\n\n## 🤹‍ Usage\n\n### Installation\n\n```bash\nnpm install --save iguazu\n```\n\n### Base Concepts\n\nIguazu exports a Higher Order Component (HOC) `connectAsync` similar to React Redux's `connect`.  Instead of taking a `mapStateToProps` function, it takes a `loadDataAsProps` function. It should return a map where each key is the name of a prop that will contain some asynchronous data and the value is the load function that will load that data if it is not already loaded.  The load function must synchronously return an object with the keys `data`, `status`, `error`, and `promise`. The key `data` should be the data returned from the asynchronous call. The key `status` should be either `loading` to signal the asynchronous call is in flight or `complete` to signal it has returned. The key `error` should be a truthy value if there was an error while loading. The key `promise` should be the promise of the asynchronous call.\n\nFor each key defined in the `loadDataAsProps` function, the HOC will pass a prop to the wrapped component that contains the data. It will also pass two function props, `isLoading` and `loadedWithErrors`, which will tell you if any of the async props are still loading or loaded with errors respectively. If you are only interested in a subset of async props, you can pass an array of the props names as the first argument. There will also be a prop named `loadErrors` that maps the load error, if there is one, for each prop. You can use this if you want to more granularly dig into what failed.\n\nExample:\n\n```javascript\n/* actions.js */\nimport React from 'react';\nimport { connectAsync } from 'iguazu';\n\nexport function queryMyData(param) {\n  return (dispatch, getState) => {\n    const data = getState().path.to.myData[param];\n    const status = data ? 'complete' : 'loading';\n    const promise = data ? Promise.resolve : dispatch(fetchMyData(param));\n\n    return { data, status, promise };\n  };\n}\n\nexport function queryMyOtherData(param) { /* Essentially the same as queryMyData */ }\n\n/* MyContainer.jsx */\nfunction MyContainer({\n  isLoading,\n  loadedWithErrors,\n  myData,\n  myOtherData,\n}) {\n  if (isLoading()) {\n    return <div>Loading...</div>;\n  }\n\n  if (loadedWithErrors()) {\n    return <div>Oh no! Something went wrong</div>;\n  }\n\n  return (\n    <div>\n      myData =\n      {' '}\n      {myData}\n      myOtherData =\n      {' '}\n      {myOtherData}\n    </div>\n  );\n}\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(queryMyData(ownProps.someParam)),\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam)),\n  };\n}\n\nexport default connectAsync({ loadDataAsProps })(MyContainer);\n```\n\nYou can see that by moving the logic responsible for selecting out the cached data and triggering a fetch if needed into the actions makes the components much simpler.\n\n### Advanced Concepts\n\n#### SSR\nThe main benefits of server side rendering are improved perceived speed and SEO. With perceived speed, the general best practice is to get something in front of the user's eyes as fast as possible. Typically that means you shouldn't wait for any data before rendering to string. For SEO, it's more important that you render the full content, and if that content is dynamic, you'll need to wait on some data. Usually not every view is important for SEO, such as logged in views, so the best option is to only preload data you absolutely have to for SEO. For this reason, Iguazu makes SSR data preloading opt in. If you would like a component's data to be loaded prior to rendering on the server, you can add a property named `ssr` with the value of true.\n\nExample:\n\n```javascript\n/* server.js */\nimport express from 'express';\n\nconst app = express();\n/* Component.jsx */\nfunction loadDataAsProps() { /* ... */ }\nloadDataAsProps.ssr = true;\n```\n\n#### Helper methods\nSometimes you might want to enable SSR preloading for a component, but only for some of its data. Iguazu provides some helper methods, `defer` and `noncritical`, to more granularly load data on the server. If you wrap a load function with `defer`, it will not execute the load function at all and will just return a status of `loading`. If you wrap a function with `noncritical`, the load function will execute, but its promise will be caught so that if it rejects it won't cause the Promise.all to reject and return before the other more critical pieces of data have returned.\n\nExample:\n\n```javascript\nimport { defer, noncritical } from 'iguazu';\n\nfunction loadDataAsProps() {\n  return {\n    clientOnlyData: defer(() => dispatch(loadClientData())),\n    tryToLoadOnServerData: noncritical(() => dispatch(loadIffyData())),\n  };\n}\n```\n\nIguazu will also pass a parameter to the load function that tells it whether it is running on the server or not. You might want to use this if you expect data to have a specific shape when it is not loaded, because `defer` will just return data as undefined.\n\nExample:\n\n```javascript\nfunction MyComponent({ someData }) {\n  return <ul>{someData.list.map((item) => <li key={item.toString()}>{item}</li>)}</ul>;\n}\n\nfunction loadDataAsProps() {\n  return {\n    someData: ({ isServer }) => (isServer ? { data: { list: [] }, status: 'loading' } : dispatch(loadSomeData())),\n  };\n}\n```\n\n#### Synchronization\nLet's say you have a dynamic dashboard of components that are all responsible for loading their own data, but you want to wait until they are all loaded to render them so that you don't see a bunch of spinners or a partially loaded page. Since Iguazu attaches the loadDataAsProps function as a static, parent components can easily wait until their children's data is loaded before rendering them.\n\n```javascript\nimport React from 'react';\nimport { iguazuReduce } from 'iguazu';\nimport ComponentA from './ComponentA';\nimport ComponentB from './ComponentB';\n\nfunction MyComponent({ isLoading }) {\n  if (isLoading()) {\n    return (<div>Loading...</div>);\n  }\n\n  return (\n    <div>\n      <ComponentA someParam=\"someParam\" />\n      <ComponentB />\n    </div>\n  );\n}\n\nfunction loadDataAsProps({ store, ownProps }) {\n  return {\n    ComponentA: () => iguazuReduce(ComponentA.loadDataAsProps)({\n      store, ownProps: { someParam: 'someParam' },\n    }),\n    ComponentB: () => iguazuReduce(ComponentB.loadDataAsProps)({ store, ownProps: {} }),\n  };\n}\n```\n\n#### Sequencing\n\nQuite often you need the results of one asynchronous call to get the inputs for another call. One way to do this is by simply using components.\n\nExample:\n\n```javascript\nimport React from 'react';\nimport { connectAsync } from 'iguazu';\n\nfunction Parent({ isLoading, parent }) {\n  if (isLoading()) {\n    return <div>Loading Your Profile...</div>;\n  }\n\n  return (\n    <div>\n      <div>\n        You:\n        <PersonInfo info={parent} />\n      </div>\n      <KidsContainer parentId={parent.id} />\n    </div>\n  );\n}\n\nfunction parentLoadDataAsProps({ store: { dispatch } }) {\n  return {\n    parents: () => dispatch(loadLoggedInParent()),\n  };\n}\n\nconst ParentContainer = connectAsync({ loadDataAsProps: parentLoadDataAsProps })(Parent);\n\nfunction Kids({ isLoading, kids }) {\n  if (isLoading()) {\n    return <div>Loading Kids...</div>;\n  }\n\n  return (\n    <div>\n      Kids:\n      {kids.map((kid) => (<PersonInfo key={kid.name} info={kid} />))}\n    </div>\n  );\n}\n\nfunction kidsLoadDataAsProps({ store: { dispatch }, ownProps: { parentId } }) {\n  return {\n    kids: () => dispatch(loadKidsByParent(parentId)),\n  };\n}\n\nconst KidsContainer = connectAsync({ loadDataAsProps: kidsLoadDataAsProps })(Kids);\n\nfunction PersonInfo({ info: { name, age } }) {\n  return (\n    <div>\n      <span>\n        name:\n        {' '}\n        {name}\n      </span>\n      <span>\n        age:\n        {' '}\n        {age}\n      </span>\n    </div>\n  );\n}\n```\n\nSuppose you want to synchronize the parent and kid components so that you show a loading spinner until they are both done loading their data. Or maybe you only have one component that needs some sequenced data and it doesn't make sense to create a new component for each nested piece of data. In these cases you can use the load helper, `sequence`. You can pass it an array of load functions that need to run in order and depend on data returned from previous functions.\n\nExample:\n\n```javascript\nimport React from 'react';\nimport { connectAsync, sequence } from 'iguazu';\n\nfunction Parent({ isLoading, parent, kids }) {\n  if (isLoading()) {\n    return <div>Loading Your Profile...</div>;\n  }\n\n  return (\n    <div>\n      <div>\n        You:\n        <PersonInfo info={parent} />\n      </div>\n      <Kids kids={kids} />\n    </div>\n  );\n}\n\nfunction parentLoadDataAsProps({ store: { dispatch } }) {\n  const sequenceLoadFunctions = sequence([\n    { key: 'parent', handler: () => dispatch(loadLoggedInParent()) },\n    { key: 'kids', handler: ({ parent }) => dispatch(loadKidsByParent(parent.id)) },\n  ]);\n\n  return {\n    ...sequenceLoadFunctions,\n  };\n}\n\nconst ParentContainer = connectAsync({ loadDataAsProps: parentLoadDataAsProps })(Parent);\n\nfunction Kids({ kids }) {\n  return (\n    <div>\n      Kids:\n      {kids.map((kid) => (<PersonInfo key={kid.name} info={kid} />))}\n    </div>\n  );\n}\n\nfunction PersonInfo({ info: { name, age } }) {\n  return (\n    <div>\n      <span>\n        name:\n        {name}\n      </span>\n      <span>\n        age:\n        {age}\n      </span>\n    </div>\n  );\n}\n\n```\n\nSequenced function handlers are called with the results from all previous functions in case your inputs need to be derived from more than one previous call.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  { key: 'first', handler: () => dispatch(loadFirst()) },\n  { key: 'second', handler: ({ first }) => dispatch(loadSecond(first.someParam)) },\n  { key: 'third', handler: ({ first, second }) => dispatch(loadThird(first.someParam, second.anotherParam)) },\n]);\n```\n\nIf you need to make two calls in parallel before you make a third, you can use a combination of `iguazuReduce` and `sequence` to accomplish your goal.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  {\n    key: 'first',\n    handler: iguazuReduce(() => ({\n      firstA: () => dispatch(loadFirstA()),\n      firstB: () => dispatch(loadFirstB()),\n    })),\n  },\n  {\n    key: 'second', handler: ({ first: { firstA, firstB } }) => dispatch(loadSecond(firstA, firstB)),\n  },\n]);\n```\n\nFunction handlers require the previous calls to succeed to continue to the next by default. In the\nevent a request returns with an error all remaining calls are flagged with the same error. To bypass\nthis default behavior, you can wrap the function handler in `noncritical` to continue without the\nprevious results.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  { key: 'first', handler: () => dispatch(loadFirst()) },\n  { key: 'second', handler: noncritical(({ first }) => dispatch(loadSecond(first.someParam))) },\n  { key: 'unrelated', handler: () => dispatch(loadUnrelated()) },\n]);\n```\n\n#### Updating\n\nIguazu processes updates on Redux state changes by comparing the previous and next responses from `loadDataAsProps` using\n[shallowequal](https://www.npmjs.com/package/shallowequal) by default. You are able to declare a comparator function when\ncalling `connectAsync` to manage how the previous and next responses from `loadDataAsProps` are compared.\n\n```javascript\nimport { deepEqual } from 'fast-equals';\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(queryToDeeplyNestedData(ownProps.someParam)),\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam)),\n  };\n}\n\nexport default connectAsync({\n  loadDataAsProps,\n  stateChangeComparator: deepEqual,\n})(MyContainer);\n```\n\n#### Limiting\n\nAs some functions called within `loadDataAsProps` can be expensive when ran on every Redux state change, you are able to declare a limiter function when calling `connectAsync`. Calls to `loadDataAsProps` are not limited by default.\n\n```javascript\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(expensiveQueryToData(ownProps.someParam)),\n    myOtherData: () => dispatch(queryMyOtherData(getState().someOtherParam)),\n  };\n}\n\nexport default connectAsync({\n  loadDataAsProps,\n  stateChangeLimiter: (onStateChange) => debounce(onStateChange, 100),\n})(MyContainer);\n```\n\n#### Updating and Refreshing Data\n\nIn the case that we need to update a remote resource and refresh stale data:\n\n```javascript\n/* MyUpdatingComponent.jsx */\nimport React, { Component, Fragment } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { connectAsync } from 'iguazu';\n\nimport { getMyDataAction, updateMyDataAction } from './iguazuActionCreators';\n\nclass MyUpdatingComponent extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { message: '' };\n  }\n\n  handleClick = () => {\n    const { updateMyData, getMyData } = this.props;\n    // Send updateMyData request\n    const { promise: updateMyDataPromise } = updateMyData('someParam');\n    return updateMyDataPromise\n      .then(() => {\n        // Refresh getMyData to get new results\n        const { promise: myDataPromise } = getMyData();\n        return myDataPromise;\n      })\n      .then(() => {\n        this.setState({ message: 'Success!' });\n      });\n  };\n\n  render() {\n    const { isLoading, loadedWithErrors, myData } = this.props;\n    const { message } = this.state;\n\n    if (isLoading()) {\n      return <div>Loading...</div>;\n    }\n\n    if (loadedWithErrors()) {\n      return <div>Oh no! Something went wrong</div>;\n    }\n\n    return (\n      <Fragment>\n        {message}\n        <button type=\"button\" onClick={this.handleClick}>Update</button>\n        <h1>My Data</h1>\n        {myData}\n      </Fragment>\n    );\n  }\n}\n\n// Hook up action creator functions to props to call later\nfunction mapDispatchToProps(dispatch) {\n  return {\n    // Update some remote resource\n    updateMyData: (someParam) => dispatch(updateMyDataAction(someParam)),\n    // Fetch some remote resource\n    getMyData: () => dispatch(getMyDataAction()),\n  };\n}\n\n// Hook up data dispatches on component load\nfunction loadDataAsProps({ store }) {\n  const { dispatch } = store;\n  return {\n    // Fetch some remote resource and inject it into props as myData\n    myData: () => dispatch(getMyDataAction()),\n  };\n}\n\nexport default compose(\n  connect(undefined, mapDispatchToProps),\n  connectAsync({ loadDataAsProps })\n)(MyUpdatingComponent);\n```\n\n#### Global Configuration\n\nIguazu is also capable of consuming global configuration that will be applied to all instances of `connectAsync`. These options will be applied unless otherwise overridden by providing the equivalent setting in the `connectAsync` call.\n\n```javascript\nimport { shallowEqual, deepEqual } from 'fast-equals';\nimport { configureIguazu } from 'iguazu';\n\nconfigureIguazu({\n  stateChangeComparator: shallowEqual, // applied globally.\n  stateChangeLimiter: (onStateChange) => debounce(onStateChange, 100), // applied globally.\n});\n\n/* ... */\n\nfunction loadDataAsProps({ store, ownProps }) {\n  const { dispatch, getState } = store;\n  return {\n    myData: () => dispatch(queryToDeeplyNestedData(ownProps.someParam)),\n    myOtherData: () => dispatch(expensiveQueryToData(ownProps.someParam)),\n  };\n}\n\nexport default connectAsync({\n  loadDataAsProps,\n  stateChangeComparator: deepEqual, // override global setting.\n  stateChangeLimiter: (onStateChange) => debounce(onStateChange, 500), // override global setting.\n})(MyContainer);\n```\n\n#### Known Issues\n\n- Using `iguazuReduce` within a `sequence` returns the response to the next handler as an array if the data is not loaded. Pass in `promiseAsObject` to `iguazuReduce` to resolve until next major version.\n\n```javascript\nconst sequenceLoadFunctions = sequence([\n  {\n    key: 'first',\n    handler: () => iguazuReduce(ComponentA.loadDataAsProps, { promiseAsObject: true })({\n      store, ownProps: { someParam: 'someParam' },\n    }),\n  },\n  { key: 'second', handler: ({ first }) => dispatch(loadSecond(first.someParam)) },\n]);\n```\n\n## 🚀 Upgrading\n\n### v2.x.x to v3.x.x\n\n- Upgraded to React Redux 7.x.x, Redux 4.x.x, and Redux Thunk 2.x.x\n- Using new [React Context](https://reactjs.org/docs/context.html) Consumer for retrieving Redux store.\n- Added a `ReduxConsumer` wrapping component to `connectAsync` which, may break jest snapshots.\n- Removed `enableSSR`, `disableSSR`, and `isSSR` methods in favor of checking for `window` to determine Server versus Client in SSR mode\n- `loadDataAsProps` functions receive `isServer` as an argument rather than `ssr` now.\n- Moved `react`, `react-dom`, `react-redux`, `redux`, and `redux-thunk` to `peerDependencies`\n- Removed `lodash` and decreased gzip bundle size from `~9.6kb` to `~4.5kb` gzipped.\n- Iguazu adapters remain compatible, just upgrade dependency on `iguazu` to `^3.0.0`.\n\n## 🏆 Contributing\n\nWe welcome Your interest in the American Express Open Source Community on Github.\nAny Contributor to any Open Source Project managed by the American Express Open\nSource Community must accept and sign an Agreement indicating agreement to the\nterms below. Except for the rights granted in this Agreement to American Express\nand to recipients of software distributed by American Express, You reserve all\nright, title, and interest, if any, in and to Your Contributions. Please [fill\nout the Agreement](https://cla-assistant.io/americanexpress/iguazu).\n\nPlease feel free to open pull requests and see [CONTRIBUTING.md](./CONTRIBUTING.md) to learn how to get started contributing.\n\n## 🗝️ License\n\nAny contributions made under this project will be governed by the [Apache License\n2.0](./LICENSE.txt).\n\n## 🗣️ Code of Conduct\n\nThis project adheres to the [American Express Community Guidelines](./CODE_OF_CONDUCT.md).\nBy participating, you are expected to honor these guidelines.\n","maintainers":[{"name":"pixnbits","email":"i@pixnbits.org"},{"name":"anescobar1991","email":"anescobar1991@gmail.com"},{"name":"jsmartfo","email":"j_smart_foster@hotmail.com"},{"name":"amexopensource","email":"open-source-ops@aexp.com"},{"name":"mtomcal","email":"michael@twoeyetech.com"},{"name":"10xlacroixdrinker","email":"hello@jaimeking.me"}],"time":{"modified":"2022-06-19T00:23:22.313Z","created":"2017-07-04T18:39:35.882Z","0.0.0":"2017-07-04T18:39:35.882Z","2.2.0":"2018-08-16T01:34:21.709Z","2.3.0":"2018-11-07T21:57:42.932Z","2.3.1":"2019-02-05T16:47:26.292Z","2.4.0":"2019-04-11T21:53:15.206Z","2.5.0":"2019-08-29T19:12:55.989Z","2.5.1":"2019-09-09T19:23:11.790Z","2.5.2":"2019-10-22T18:35:07.778Z","3.0.0-0":"2019-11-11T18:12:31.342Z","3.0.0-3":"2019-11-15T16:41:31.342Z","2.6.2":"2019-11-26T21:54:33.007Z","2.6.0":"2019-12-23T13:59:15.808Z","3.0.0":"2020-01-08T18:35:23.993Z","2.6.3":"2020-02-27T18:53:48.103Z","2.6.4":"2020-03-02T20:46:57.398Z","3.0.1":"2020-03-02T20:47:34.067Z","3.0.2":"2020-03-02T21:08:26.968Z","3.1.0":"2020-08-14T16:38:16.025Z","2.7.0":"2020-08-14T19:13:50.504Z","2.8.0":"2020-08-17T19:09:19.319Z","3.2.0":"2021-12-17T16:59:53.996Z"},"license":"Apache-2.0","readmeFilename":"README.md","description":"An asynchronous data flow solution for React/Redux applications","author":{"name":"Maia Teegarden"},"contributors":[{"name":"Andres Escobar","email":"Andres.Escobar@aexp.com","url":"https://github.com/anescobar1991"},{"name":"James Singleton","email":"James.Singleton1@aexp.com"},{"name":"Jimmy King","email":"Jimmy.King@aexp.com","url":"https://github.com/10xLaCroixDrinker"},{"name":"Jonathan Adshead","email":"Jonathan.Adshead@aexp.com","url":"https://github.com/JAdshead"},{"name":"Michael Tobia","email":"Michael.M.Tobia@aexp.com","url":"https://github.com/Francois-Esquire"},{"name":"Michael Tomcal","email":"Michael.A.Tomcal@aexp.com","url":"https://github.com/mtomcal"},{"name":"Stephanie Coates","email":"Stephanie.Coates1@aexp.com","url":"https://github.com/stephaniecoates"},{"name":"Nelly Kiboi","email":"Nelly.J.Kiboi@aexp.com","url":"https://github.com/nellyk"},{"name":"Nickolas Oliver","email":"nickolas.oliver@aexp.com","url":"https://github.com/PixnBits"},{"name":"Andrew Curtis","email":"andrew.curtis@aexp.com","url":"https://github.com/drewcur"},{"name":"Scott McIntyre","email":"scott.mcintyre@aexp.com","url":"https://github.com/smackfu"}],"homepage":"https://github.com/americanexpress/iguazu","repository":{"type":"git","url":"git+https://github.com/americanexpress/iguazu.git"},"bugs":{"url":"https://github.com/americanexpress/iguazu/issues"},"keywords":["async","react","redux","react-redux","fetch","data","query","promise"]}