{"_id":"@adobe/redux-saga-promise","_rev":"114-fc32b80256407bcc400aef446f33eeca","name":"@adobe/redux-saga-promise","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@adobe/redux-saga-promise","version":"1.0.0","keywords":["redux","saga","action","promise","promises","resolve","reject"],"author":{"name":"Ronen Barzel","email":"ronen@barzel.org"},"license":"Apache-2.0","_id":"@adobe/redux-saga-promise@1.0.0","maintainers":[{"name":"ronen","email":"ronen@barzel.org"},{"name":"fmeschbe","email":"fmeschbe@adobe.com"},{"name":"natebaldwin","email":"natebaldwindesign@gmail.com"},{"name":"msagolj","email":"msagolj@adobe.com"},{"name":"richardhand","email":"pid90611@adobe.com"},{"name":"jckautzmann","email":"jkautzma@adobe.com"},{"name":"andreea_dracea","email":"andreeadracea@yahoo.com"},{"name":"bpauli","email":"mail@bpauli.de"},{"name":"vladbailescu","email":"vlad@bailescu.ro"},{"name":"mfrisbey","email":"mark_f79@hotmail.com"},{"name":"himar","email":"himar@adobe.com"},{"name":"bbythewa","email":"bbythewa@adobe.com"},{"name":"dcpfsdk","email":"dcpfsdk@adobe.com"},{"name":"jianliao79","email":"jian.liao@gmail.com"},{"name":"ibaratz","email":"ibaratz@adobe.com"},{"name":"alexkli","email":"alexander@klimetschek.de"},{"name":"meryllblanchet","email":"meryll@adobeio.com"},{"name":"moritzraho","email":"raho.mr@gmail.com"},{"name":"justinedelson","email":"justin@justinedelson.com"},{"name":"icaraps","email":"icaraps@hotmail.com"},{"name":"ashryan","email":"sayhi@ashryan.io"},{"name":"korra","email":"npmjs.karo@cupdev.net"},{"name":"nporter-adbe","email":"nporter@adobe.com"},{"name":"aaronius","email":"aaron@aaronhardy.com"},{"name":"hirenoble","email":"hirenanandshah@outlook.com"},{"name":"benjamind","email":"ben@delarre.net"},{"name":"yoshikinoko","email":"yoshikinoko@gmail.com"},{"name":"goya","email":"brettrudd@gmail.com"},{"name":"rofe","email":"npm@rofe.com"},{"name":"purplecabbage","email":"purplecabbage@gmail.com"},{"name":"krisnye","email":"krisnye@gmail.com"},{"name":"kerrishotts","email":"kerrishotts@gmail.com"},{"name":"dpfister","email":"dominique.pfister@gmail.com"},{"name":"kptdobe","email":"kptdobe@gmail.com"},{"name":"macdonst","email":"simon.macdonald@gmail.com"},{"name":"shazron","email":"shazron@gmail.com"},{"name":"aemsites","email":"meyer@adobe.com"},{"name":"stefan-guggisberg","email":"sg@adobe.com"},{"name":"jfkhoury","email":"jfkhoury@gmail.com"},{"name":"marbec","email":"mabecker@adobe.com"},{"name":"tripod","email":"tripod@bocanegra.ch"},{"name":"garthdb","email":"garthdb@gmail.com"},{"name":"lazd","email":"lazdnet@gmail.com"},{"name":"adobe-admin","email":"grp-opensourceoffice@adobe.com"},{"name":"target-admin","email":"ciocanu@adobe.com"},{"name":"adobe-behance","email":"sedunn@adobe.com"},{"name":"trieloff","email":"lars@trieloff.net"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"homepage":"https://github.com/adobe/redux-saga-promise#readme","bugs":{"url":"https://github.com/adobe/redux-saga-promise/issues"},"dist":{"shasum":"cb52fc36ec2455b9cd962d4037d6eeea0951c93d","tarball":"https://registry.npmjs.org/@adobe/redux-saga-promise/-/redux-saga-promise-1.0.0.tgz","fileCount":11,"integrity":"sha512-o2lHM0vSlzQlXyu5SzKdu2xw2zj/XTMJf1u7KPQpRIgh6AUE7GLholnPYuVQslkbVVwrbKZbr3nyuhEjh0nkWw==","signatures":[{"sig":"MEYCIQCaf6tuNwT5Ig/T6SkDMy98oAKmI9RLYjP/uKVRQTGKgAIhALRvhPJRPBGCxLv7cK6IagDWE9QHcP710cs4QQHQy1sE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+skCCRA9TVsSAnZWagAAVnQP/RImILTbDfxOHgvrdEPZ\njVDQHSNeslyPOZ6Q+DCR8vNEURslV2DZISBqXcsO1e/Cc46yG/2kAz20VOlv\nArorgpI7R51q83I3j3KTeSmB3bVo4WZxa4K6tOqIP8HmTLxnDK6Rme/76ynS\n6deQPZenDS7ZvT32YggcLufNCkQn2YMLMx8klpzoYqqxp2P2ph6su8iWEfte\nQnan+ZeWQE4fXRbAgO+tJIqMRT7RzuxphrqaF/b5iiIEos67mo3grsnCVEVP\nA11GKekGDoHDabPLK9o9ye0acSYHm1QAc7XP53F3Jg1BrsdGaIzuyCEwkIP0\no2TIc1NlHyPSxSC3VtEPE8gX1WeNWO6rDfzM1EcyXSSgsvRz28Mu72YFNBRT\ntoEpFu4HRglc98OYk6jJCEEkOTrPRp6E2twgLF8E3fRFZlc/7RxzTVC5m2eW\nBg2ITcLnKvmMMnSKrSeNKNtvK+lOFxZkQ3CRKCYGRAjbMaC2X4kg4BoaUbHq\nCVzMIEC7MYeSjRV4LUjclUP2Ms5ZTXkQs2jIXQLZ6z/AyoOGj3C18e8yQI4D\nk4AHCGRiGgY7dhjLTe84r0haa7VMnVjYx1KKjRYmJnUXirjJ0xzSxFDRBRtZ\nuUB6bMpcFniazcNA8GpBmDw0kFVEmTkyPGuZKVvrjCLnIS/5/u8PpoDDn3Wj\neTnT\r\n=4v3F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"db6c25819cd8f9b264f699541816cf53574f887d","scripts":{"test":"npm run build && ava","build":"npx babel src --out-dir dist","start":"npx babel src --watch --out-dir dist"},"_npmUser":{"name":"ronen","email":"ronen@barzel.org"},"repository":{"url":"git+https://github.com/adobe/redux-saga-promise.git","type":"git"},"_npmVersion":"6.13.4","description":"Create actions that return promises, which are resolved/rejected by a redux saga","directories":{"test":"test"},"_nodeVersion":"13.4.0","dependencies":{"lodash":"^4.17.15","redux-saga":"^1.1.3","redux-actions":"^2.6.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^2.4.0","eslint":"^6.6.0","@babel/cli":"^7.7.0","@babel/core":"^7.7.2","babel-eslint":"^10.0.3","@babel/preset-env":"^7.7.1","eslint-plugin-ava":"^9.0.0","eslint-plugin-node":"^10.0.0","eslint-plugin-babel":"^5.3.0","regenerator-runtime":"^0.13.3","eslint-plugin-import":"^2.18.2","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.0","eslint-plugin-standard":"^4.0.1","eslint-plugin-redux-saga":"^1.1.1","@babel/plugin-proposal-optional-chaining":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/redux-saga-promise_1.0.0_1576716545833_0.46538934623258466","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@adobe/redux-saga-promise","version":"1.1.0","keywords":["redux","saga","action","promise","promises","resolve","reject"],"author":{"name":"Ronen Barzel","email":"ronen@barzel.org"},"license":"Apache-2.0","_id":"@adobe/redux-saga-promise@1.1.0","maintainers":[{"name":"aaronius","email":"aaron@aaronhardy.com"},{"name":"adobe-admin","email":"grp-opensourceoffice@adobe.com"},{"name":"adobe-behance","email":"sedunn@adobe.com"},{"name":"aemsites","email":"meyer@adobe.com"},{"name":"alexkli","email":"alexander@klimetschek.de"},{"name":"andreea_dracea","email":"andreeadracea@yahoo.com"},{"name":"ashryan","email":"sayhi@ashryan.io"},{"name":"aspro83","email":"danniintheus@gmail.com"},{"name":"bbythewa","email":"bbythewa@adobe.com"},{"name":"benjamind","email":"ben@delarre.net"},{"name":"bgaurav","email":"FINDGAURAV@GMAIL.COM"},{"name":"bglowacki","email":"bartosz.glow@gmail.com"},{"name":"bpauli","email":"mail@bpauli.de"},{"name":"czerneck","email":"czerneck@adobe.com"},{"name":"dcpfsdk","email":"dcpfsdk@adobe.com"},{"name":"devongovett","email":"devongovett@gmail.com"},{"name":"dompuiu","email":"dompuiu@gmail.com"},{"name":"dpfister","email":"dominique.pfister@gmail.com"},{"name":"filmaj","email":"maj.fil@gmail.com"},{"name":"fmeschbe","email":"fmeschbe@adobe.com"},{"name":"garthdb","email":"garthdb@gmail.com"},{"name":"goya","email":"brettrudd@gmail.com"},{"name":"himar","email":"himar@adobe.com"},{"name":"hirenoble","email":"hirenanandshah@outlook.com"},{"name":"ibaratz","email":"ibaratz@adobe.com"},{"name":"icaraps","email":"icaraps@hotmail.com"},{"name":"jckautzmann","email":"jkautzma@adobe.com"},{"name":"jfkhoury","email":"jfkhoury@gmail.com"},{"name":"jianliao79","email":"jian.liao@gmail.com"},{"name":"justinedelson","email":"justin@justinedelson.com"},{"name":"kerrishotts","email":"kerrishotts@gmail.com"},{"name":"korra","email":"npmjs.karo@cupdev.net"},{"name":"kptdobe","email":"kptdobe@gmail.com"},{"name":"krisnye","email":"krisnye@gmail.com"},{"name":"lazd","email":"lazdnet@gmail.com"},{"name":"macdonst","email":"simon.macdonald@gmail.com"},{"name":"marbec","email":"mabecker@adobe.com"},{"name":"meryllblanchet","email":"meryll@adobeio.com"},{"name":"mfrisbey","email":"mark_f79@hotmail.com"},{"name":"moritzraho","email":"raho.mr@gmail.com"},{"name":"msagolj","email":"msagolj@adobe.com"},{"name":"natebaldwin","email":"natebaldwindesign@gmail.com"},{"name":"nporter-adbe","email":"nporter@adobe.com"},{"name":"purplecabbage","email":"purplecabbage@gmail.com"},{"name":"richardhand","email":"pid90611@adobe.com"},{"name":"rofe","email":"npm@rofe.com"},{"name":"ronen","email":"ronen@barzel.org"},{"name":"sangeetha.krishnan","email":"sangeetha5491@gmail.com"},{"name":"shazron","email":"shazron@gmail.com"},{"name":"sirugh","email":"stephenrugh@gmail.com"},{"name":"stefan-guggisberg","email":"sg@adobe.com"},{"name":"target-admin","email":"ciocanu@adobe.com"},{"name":"trieloff","email":"lars@trieloff.net"},{"name":"tripod","email":"tripod@bocanegra.ch"},{"name":"vladbailescu","email":"vlad@bailescu.ro"},{"name":"yoshikinoko","email":"yoshikinoko@gmail.com"}],"homepage":"https://github.com/adobe/redux-saga-promise#readme","bugs":{"url":"https://github.com/adobe/redux-saga-promise/issues"},"dist":{"shasum":"b98fbfc59b9fde934309df13211b79531541bff6","tarball":"https://registry.npmjs.org/@adobe/redux-saga-promise/-/redux-saga-promise-1.1.0.tgz","fileCount":11,"integrity":"sha512-6zxwLi/s+6o3DYvkxjHWTnsfCXQj0NXb3GsfnoRenay4wYRaM8SRvQtdQY0EcShwOE0mpxWHn2KV2Fli+BGVgA==","signatures":[{"sig":"MEQCIE0xUxK2zlV1LJ+yjxuFf5XCH/u7GrIa6TYKWIvwmmaJAiB2Ip7K4lVFWvtqEsQ6i0vQUe+4EX9zIok9SdTlHRf+eQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaOkHCRA9TVsSAnZWagAACB8QAIGgG94pcbKJrp6t/9Ww\nxFUWEPjm5ES7GOqOnsWJJV0tZzp6g2diV2MExC8C1TUja9bsefOAS+gwIhja\nYp3OC9tInJOPd8iyXHdTuZpCZVkCHL1dNbt4muLOsTJ1buKqwotJUR6GDRZI\nAJ00Dt7UJmPfrQ9k/FGeLl9AJ5WPAR6di9jDlWn0N0jtKzw9RA4Q51Hn2jc2\n5FmO1OSBSwjuU1Uk39LHZgJKqwaWGn+eAF0UBa4g9WTPUufqugOxeeyQQUXH\ns3Gs2ZTV/1ygpymj3EMrQ1KRaFuUrHCM0vBHBKURIjn4IkBiVgrWKV79kRls\nFjQzEs1apxQf69vdzzWwCMnt8PjOu9fZWX3kIHwGU/V1PfvUrqIlG86Wng/C\nOLj8+KdfxHbTw2ytPTyCnFKK2Zjt72BHEIoy5pAF++9R9e0nV2a38V9LQ1Th\n3L8W8vMYZg5AAuPXGXpFBdMCaMZ4+Mi/a5mj6NjFeyC/SeWdPpfdwvdkP8/r\n3rRJ6gamb+J9gNqv7INHtuZb6B9qtTXFkBeOUFnsBTq0pt3LTG78ERANPRy2\n41d+NOt5hEwOnA0VSord/lJw0Wl9hDNWnbSG22rkpn5AmV4mFV65tXYIQ4rN\niJ/yndbzqDK3wfJ6G6vFCD6AgTrEDiKw2ueqX7nfxFbbbJ0gbO2iDxxuuLAX\n29BH\r\n=JyEG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"8e9a7096874431d40082181f63815a98acac11bd","scripts":{"test":"npm run build && ava","build":"npx babel src --out-dir dist","start":"npx babel src --watch --out-dir dist"},"_npmUser":{"name":"ronen","email":"ronen@barzel.org"},"repository":{"url":"git+https://github.com/adobe/redux-saga-promise.git","type":"git"},"_npmVersion":"6.14.1","description":"Create actions that return promises, which are resolved/rejected by a redux saga","directories":{"test":"test"},"_nodeVersion":"13.6.0","dependencies":{"lodash":"^4.17.15","redux-saga":"^1.1.3","redux-actions":"^2.6.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^2.4.0","eslint":"^6.6.0","@babel/cli":"^7.7.0","@babel/core":"^7.7.2","babel-eslint":"^10.0.3","@babel/preset-env":"^7.7.1","eslint-plugin-ava":"^9.0.0","eslint-plugin-node":"^10.0.0","eslint-plugin-babel":"^5.3.0","regenerator-runtime":"^0.13.3","eslint-plugin-import":"^2.18.2","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.0","eslint-plugin-standard":"^4.0.1","eslint-plugin-redux-saga":"^1.1.1","@babel/plugin-proposal-optional-chaining":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/redux-saga-promise_1.1.0_1583933702364_0.5937193612873484","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@adobe/redux-saga-promise","version":"1.1.1","keywords":["redux","saga","action","promise","promises","resolve","reject"],"author":{"name":"Ronen Barzel","email":"ronen@barzel.org"},"license":"Apache-2.0","_id":"@adobe/redux-saga-promise@1.1.1","maintainers":[{"name":"aaronius","email":"aaron@aaronhardy.com"},{"name":"addb","email":"arjun.d.bhadra@gmail.com"},{"name":"adobe-admin","email":"grp-opensourceoffice@adobe.com"},{"name":"adobe-behance","email":"sedunn@adobe.com"},{"name":"aemsites","email":"meyer@adobe.com"},{"name":"alexkli","email":"alexander@klimetschek.de"},{"name":"alvarorahul","email":"alvarorahul@gmail.com"},{"name":"andreea_dracea","email":"andreeadracea@yahoo.com"},{"name":"ashryan","email":"sayhi@ashryan.io"},{"name":"aspro83","email":"danniintheus@gmail.com"},{"name":"bbythewa","email":"bbythewa@adobe.com"},{"name":"benjamind","email":"ben@delarre.net"},{"name":"bgaurav","email":"FINDGAURAV@GMAIL.COM"},{"name":"bglowacki","email":"bartosz.glow@gmail.com"},{"name":"bpauli","email":"mail@bpauli.de"},{"name":"choffmann-adobe","email":"choffman@adobe.com"},{"name":"cjchapman","email":"cchapman@adobe.com"},{"name":"czerneck","email":"czerneck@adobe.com"},{"name":"dcpfsdk","email":"dcpfsdk@adobe.com"},{"name":"devongovett","email":"devongovett@gmail.com"},{"name":"dgrossen","email":"dangrossen@gmail.com"},{"name":"dompuiu","email":"dompuiu@gmail.com"},{"name":"dpfister","email":"dominique.pfister@gmail.com"},{"name":"dstrangio","email":"deirdra.strangio@gmail.com"},{"name":"fmeschbe","email":"fmeschbe@adobe.com"},{"name":"garthdb","email":"garthdb@gmail.com"},{"name":"goya","email":"brettrudd@gmail.com"},{"name":"himar","email":"himar@adobe.com"},{"name":"hirenoble","email":"hirenanandshah@outlook.com"},{"name":"ibaratz","email":"ibaratz@adobe.com"},{"name":"icaraps","email":"icaraps@hotmail.com"},{"name":"jasonwaters","email":"watersj@gmail.com"},{"name":"jckautzmann","email":"jkautzma@adobe.com"},{"name":"jdelbick","email":"jamie.delbick@gmail.com"},{"name":"jfkhoury","email":"jfkhoury@gmail.com"},{"name":"jianliao79","email":"jian.liao@gmail.com"},{"name":"justinedelson","email":"justin@justinedelson.com"},{"name":"kerrishotts","email":"kerrishotts@gmail.com"},{"name":"korra","email":"npmjs.karo@cupdev.net"},{"name":"kptdobe","email":"kptdobe@gmail.com"},{"name":"krisnye","email":"krisnye@gmail.com"},{"name":"lazd","email":"lazdnet@gmail.com"},{"name":"macdonst","email":"simon.macdonald@gmail.com"},{"name":"marbec","email":"mabecker@adobe.com"},{"name":"meryllblanchet","email":"meryll@adobeio.com"},{"name":"mfrisbey","email":"mark_f79@hotmail.com"},{"name":"mirea","email":"mirea@adobe.com"},{"name":"moritzraho","email":"raho.mr@gmail.com"},{"name":"msagolj","email":"msagolj@adobe.com"},{"name":"natebaldwin","email":"natebaldwindesign@gmail.com"},{"name":"nporter-adbe","email":"nporter@adobe.com"},{"name":"purplecabbage","email":"purplecabbage@gmail.com"},{"name":"richardhand","email":"pid90611@adobe.com"},{"name":"rofe","email":"npm@rofe.com"},{"name":"ronen","email":"ronen@barzel.org"},{"name":"sangeetha.krishnan","email":"sangeetha5491@gmail.com"},{"name":"sbenedicadb","email":"sbenedic@adobe.com"},{"name":"shazron","email":"shazron@gmail.com"},{"name":"sirugh","email":"stephenrugh@gmail.com"},{"name":"stefan-guggisberg","email":"sg@adobe.com"},{"name":"surajpindoria","email":"pindoria.suraj@gmail.com"},{"name":"target-admin","email":"ciocanu@adobe.com"},{"name":"tmathern","email":"mathern@adobe.com"},{"name":"trieloff","email":"lars@trieloff.net"},{"name":"tripod","email":"tripod@bocanegra.ch"},{"name":"vladbailescu","email":"vlad@bailescu.ro"},{"name":"yoshikinoko","email":"yoshikinoko@gmail.com"}],"homepage":"https://github.com/adobe/redux-saga-promise#readme","bugs":{"url":"https://github.com/adobe/redux-saga-promise/issues"},"ava":{"require":["esm"]},"dist":{"shasum":"4ddc2ac26ded3bc8c360a874a2c40c09ca22c30e","tarball":"https://registry.npmjs.org/@adobe/redux-saga-promise/-/redux-saga-promise-1.1.1.tgz","fileCount":11,"integrity":"sha512-VqroiXE3kKenYupwgtS+PaBL5WzIe/Lbvl4XOmcB4Y/De+GAAxspD8V9XpN8DTt2dAOug38N/679iR8h45HwpQ==","signatures":[{"sig":"MEUCIC36bUDkkLMjd+M/Ny32Sn7rcX6R6Laa0pNo4ai30CzbAiEAyVQIXaPjbW1dtTpNqacHGmy6yQ7AKlEHzGHH2ZjX4+A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1v/FCRA9TVsSAnZWagAAJlcP/3ylFi7JZqpPYmL1mATc\nhdgWOe9S+7pBmYNjNwaIKz0IyV0tyzVeez606r8AVXqdCXAmEyRT8uf9mYgm\n7j62c8Ab7DVqS1LlA8DlejxKqKCtuokXjdxOoIJLIOXRTu0smF/mmW8GPXuH\nAbvD6wz5xzha42sjZNrN8o1bhK/q6raxZseROZUfefbuW8cNwSUiB9paz8gy\nLWdk05p+ec8shvGAhc1P492u0htggBWe7HZSEZwrXwPKsVjVrRWXEQ54ut93\nzZxB+ljNhTnxmGReAHfJNUBZOOIqQnyg3W/KdN7lHHdkZMuQxM7yTDodpxS7\noQVnIioovI6tmn7XY2z07P6QMjQnJGORuZOBB8uz6QqfL6oIUPF+TxnAgKdn\nFrmc38E42shcweDd2o1b8AbtTy6sT7gnnEbRqisP4p7KyCmuKHmCDdg1sgnC\nteDCHwmuGOKIGGAFqneGC4Bj+naDB/qZXdBpeLhDSRzAWQXrJaWiJJtZXPNi\n37NSQ7DASGOoFuicbgtZ7IWQjUt4O76c732ZuAMlTd1vmLPsy2BY0+4v6klG\nPYc5n0fKV1AUJIaOgIYiOPGNvBXZ3dDdFGSuqZUS4Efy2e/mZacemjO5B29Q\n9+GjAqFIcLsWPA5ym6woNogFo+0X1xBbaMBf1qri7I9LWr5XLoOKLjRQt3gU\nEqB+\r\n=/a2T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"369d2f04438f3fb85dbc881426ea736353836675","scripts":{"lint":"npx eslint src test","test":"npm run build && ava","build":"npx babel src --out-dir dist","start":"npx babel src --watch --out-dir dist"},"_npmUser":{"name":"ronen","email":"ronen@barzel.org"},"repository":{"url":"git+https://github.com/adobe/redux-saga-promise.git","type":"git"},"_npmVersion":"6.14.4","description":"Create actions that return promises, which are resolved/rejected by a redux saga","directories":{"test":"test"},"_nodeVersion":"13.6.0","dependencies":{"lodash":"^4.17.15","redux-saga":"^1.1.3","redux-actions":"^2.6.5","@babel/runtime":"^7.9.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.8.2","esm":"^3.2.25","eslint":"^7.0.0","@babel/cli":"^7.8.4","@babel/core":"^7.9.6","babel-eslint":"^10.1.0","@babel/preset-env":"^7.9.6","eslint-plugin-ava":"^10.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-import":"^2.20.2","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-plugin-redux-saga":"^1.1.3","@babel/plugin-transform-runtime":"^7.9.6","@babel/plugin-proposal-optional-chaining":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/redux-saga-promise_1.1.1_1589033251127_0.5847966777634739","host":"s3://npm-registry-packages"}}},"time":{"created":"2019-12-19T00:49:05.580Z","modified":"2026-10-01T01:34:21.164Z","1.0.0":"2019-12-19T00:49:05.990Z","1.1.0":"2020-03-11T13:35:02.630Z","1.1.1":"2020-05-09T14:07:31.295Z"},"bugs":{"url":"https://github.com/adobe/redux-saga-promise/issues"},"author":{"name":"Ronen Barzel","email":"ronen@barzel.org"},"license":"Apache-2.0","homepage":"https://github.com/adobe/redux-saga-promise#readme","keywords":["redux","saga","action","promise","promises","resolve","reject"],"repository":{"url":"git+https://github.com/adobe/redux-saga-promise.git","type":"git"},"description":"Create actions that return promises, which are resolved/rejected by a redux saga","maintainers":[{"email":"mabecker@adobe.com","name":"marbec"},{"email":"tripod@bocanegra.ch","name":"tripod"},{"email":"garthdb@gmail.com","name":"garthdb"},{"email":"lazdnet@gmail.com","name":"lazd"},{"email":"grp-opensourceoffice@adobe.com","name":"adobe-admin"},{"email":"patrickfulton@gmail.com","name":"patrickfulton"},{"email":"lars@trieloff.net","name":"trieloff"},{"email":"krisnye@gmail.com","name":"krisnye"},{"email":"dcpfsdk@adobe.com","name":"dcpfsdk"},{"email":"natebaldwindesign@gmail.com","name":"natebaldwin"},{"email":"devongovett@gmail.com","name":"devongovett"},{"email":"danniintheus@gmail.com","name":"aspro83"},{"email":"symanovi@adobe.com","name":"symanovi"},{"email":"dominique.pfister@gmail.com","name":"dpfister"},{"email":"sg@adobe.com","name":"stefan-guggisberg"},{"email":"npm@rofe.com","name":"rofe"},{"email":"kptdobe@gmail.com","name":"kptdobe"},{"email":"halls@adobe.com","name":"adobehalls"},{"email":"bradjohn@adobe.com","name":"fullcolorcoder"},{"email":"djaeggi@adobe.com","name":"djaeggi"},{"email":"dylandepass@gmail.com","name":"dylandepass"},{"email":"mhaack@adobe.com","name":"mhaack"},{"email":"amol@adobe.com","name":"amol-anand"},{"email":"stopp@adobe.com","name":"stopp-adobe"},{"email":"namarora@adobe.com","name":"namarora"},{"email":"doten@adobe.com","name":"doten"},{"email":"schmidt@adobe.com","name":"duh_schmidt"},{"email":"astha.bhargava23@gmail.com","name":"asthabh23"},{"email":"aljoseph@adobe.com","name":"aljoseph"},{"email":"zouhir.dahbi@outlook.com","name":"zdahbi"},{"email":"tuicu@adobe.com","name":"tuicu"},{"email":"fmeschbe@adobe.com","name":"fmeschbe"}],"readme":"# @adobe/redux-saga-promise\n\nSimple clean utility to define actions that return promises, for use with [redux-saga](https://redux-saga.js.org)\n\n# Overview\n\nThe library provides:\n\n* An action creator, `createPromiseAction()` that you can use to define actions which return promises.  We call an action that returns a promise a *promise action*.\n \n* Saga helpers `implementPromiseAction()`, `resolvePromiseAction()`, and`rejectPromiseAction()` that you use to resolve or reject a promise action's promise.\n\n* Lifecyle actions `promise.trigger`, `promise.resolved`, and `promise.rejected` that you can use in reducers (or wherever)\n\n* Middleware that makes it work.\n\n* For convenience, an optional saga \"effect creator\" `dispatch()` to simplify dispatching promise actions and ordinary actions from within sagas.\n\nThese are described in detail below.\n\n# Installation\n\nAs usual, install via:\n\n```\nnpm install @adobe/redux-saga-promise\n```\n\n# Usage\n\n## Including the middleware:\n\nYou must include include `promiseMiddleware` in the middleware chain, and it must come *before* `sagaMiddleware`:\n\n```js\nimport { applyMiddleware, createStore } from 'redux'\nimport { promiseMiddleware }            from '@adobe/redux-saga-promise'\nimport createSagaMiddleware             from 'redux-saga'\n\n// ...assuming rootReducer and rootSaga are defined\nconst sagaMiddleware = createSagaMiddleware()\nconst store          = createStore(rootReducer, {}, applyMiddleware(promiseMiddleware, sagaMiddleware))\nsagaMiddleware.run(rootSaga)\n```\n\n## Creating a promise action:\n\nCreate a promise action using `createPromiseAction`, analogous to  [`createAction`](https://redux-actions.js.org/api/createaction#createaction) of [redux-actions](https://redux-actions.js.org):\n\n```js\nimport { createPromiseAction } from '@adobe/redux-saga-promise'\n\nexport const myAction = createPromiseAction('MY_ACTION')\n```\n\nBehind the scenes, `createPromiseAction` uses `createAction` to define\n[FSA](https://github.com/acdlite/flux-standard-action)-compliant actions.\nIt also accepts `payload` and `meta` as optional second and third\narguments, same as `createAction`.  (And, like `createAction`, technically\n`createPromiseAction` returns an action *creator* rather than an action.)\n\n## Dispatching a promise action:\n\nDispatch a promise action normally, and `dispatch()` will return a promise:\n\n```js\nimport myAction from './myAction'\n\n// In an ordinary function...\nfunction () {\n  ...\n  dispatch(myAction(payload)).then(value => ...).catch(error => ...)\n  ...\n}\n\n// In an async function....\nasync function () {\n  try {\n    const value = await dispatch(myAction(payload))\n    ...\n  } catch (error) {\n    ...\n  }\n}\n```\n\n## Resolving/rejecting the action in a saga:\n\nIt is up to you as the implementer to resolve or reject the promise's action\nin a saga.  There are three helpers you can use as needed:\n\n### `implementPromiseAction(action, saga)`\n\nThe most convenient way!  You give this helper a saga function which it\nwill execute.  If the saga function succesfully returns a value, the promise will\nresolve with that value.   If the saga function throws an error, the promise\nwill be rejected with that error.  For example:\n\n```js\nimport { call, takeEvery }        from 'redux-saga/effects'\nimport { promises as fsPromises } from 'fs'\nimport { implementPromiseAction } from '@adobe/redux-saga-promise'\n\nimport myAction from './myAction'\n\n//\n// Asynchronously read a file, resolving the promise with the file's\n// contents, or rejecting the promise if the file can't be read.\n//\nfunction * handleMyAction (action) {\n  yield call(implementPromiseAction, action, function * () {\n    // \n    // Implemented as a simple wrapper around fsPromises.readFile.\n    // Rejection happens implicilty if fsPromises.readFile fails.\n    //\n    const { path } = action.payload\n    return yield call(fsPromises.readFile, path, { encoding: 'utf8' })\n  })\n}\n\nexport function * rootSaga () {\n  yield takeEvery(myAction, handleMyAction)\n})\n```\n\nIf you call `implementPromiseAction()` with a first argument that is not a\npromise action, it will throw an error (see [Argument Validation](#argument-validation) below).\n\n### `resolvePromiseAction(action, value)`\n\nSometimes you may want finer control, or want to be more explicit when you know an\noperation won't fail.  This helper causes the promise to resolve with the\npassed value.  For example:\n\n```js\nimport { call, delay, takeEvery } from 'redux-saga/effects'\nimport { resolvePromiseAction }   from '@adobe/redux-saga-promise'\n\nimport myAction from './myAction'\n\n//\n// Delay a given number of seconds then resolve with the given value.\n//\nfunction * handleMyAction (action) {\n  const { seconds, value } = action.payload\n  yield delay(seconds*1000)\n  yield call(resolvePromiseAction, action, value)\n}\n\nfunction * rootSaga () {\n  yield takeEvery(myAction, handleMyAction)\n})\n```\n\nIf you call `resolvePromiseAction()` with a first argument that is not a\npromise action, it will throw an error (see [Argument Validation](#argument-validation) below).\n\n### `rejectPromiseAction(action, value)`\n\nSometimes you may want finer control, or want to explicitly fail without needing to `throw`. This helper causes the promise to reject with the\npassed value, which typically should be an `Error`.  For example:\n\n```js\nimport { call, takeEvery }     from 'redux-saga/effects'\nimport { rejectPromiseAction } from '@adobe/redux-saga-promise'\n\nimport myAction from './myAction'\n\n//\n// TODO: Implement this!   Failing for now\n//\nfunction * handleMyAction (action) {\n  yield call(rejectPromiseAction, action, new Error(\"Sorry, myAction is not implemented yet\")\n}\n\nfunction * rootSaga () {\n  yield takeEvery(myAction, handleMyAction)\n})\n```\n\nIf you call `rejectPromiseAction()` with a first argument that is not a\npromise action, it will throw an error (see [Argument Validation](#ArgumentValidation) below).\n\n\n## Action lifecycle -- reducing the promise action:\n\nCommonly you want the redux store to reflect the status of a promise action:\nwhether it's pending, what the resolved value is, or what the rejected error\nis.\n\nBehind the scenes, `myAction = createPromiseAction('MY_ACTION')` actually\ncreates a suite of three actions:\n\n* `myAction.trigger`: An alias for `myAction`, which is what you dispatch that then creates the promise.\n\n* `myAction.resolved`: Dispatched automatically by `promiseMiddleware` when the promise is resolved; its payload is the resolved value of the promise\n\n* `myAction.rejected`: Dispatched automatically by `promiseMiddleware` when the promise is rejected; its payload is the rejection error of the promise\n\nYou can easily use them in `handleActions` of [redux-actions](https://redux-actions.js.org):\n\n```js\nimport { handleActions } from 'redux-actions'\n\nimport myAction from './myAction'\n\n//\n// For the readFile wrapper described above, we can keep track of the file in the store\n//\nexport const reducer = handleActions({\n    [myAction.trigger]:  (state, { payload: { path } }) => ({ ...state, file: { path, status: 'reading'} }),\n    [myAction.resolved]: (state, { payload: contents }) => ({ ...state, file: { path: state.file.path, status: 'read', contents } }),\n    [myAction.rejected]: (state, { payload: error })    => ({ ...state, file: { path: state.file.path, status: 'failed', error } }),\n  }, {})\n```\n\n## Dispatching a promise action in a saga\n\nIn the sagas that perform your business logic, you may at times want to dispatch a promise action and wait for it to resolve.  You can do that using redux-saga's [`putResolve`](http://redux-saga.js.org/docs/api/#putresolveaction) Effect:\n\n```const result = yield putResolve(myPromiseAction)```\n\nThis dispatches the action and waits for the promise to resolve, returning the resolved  value.  Or if the promise rejects it will bubble up an error.\n\n*Caution!* If you use [`put()`](http://redux-saga.js.org/docs/api/#putaction`) instead of `putResolve()`, the saga will continue execution immediately without waiting for the promise to resolve.\n\n### Helper for dispatching actions in sagas\n\n*TL;dr:  The `dispatch()` helper is entirely optional.  You can ignore this section.  But for sagas that dispatch promise actions,\nyou can use it if you think it will make your code cleaner or more robust.*\n\nIn sagas that perform your business logic if you dispatch a mix of ordinary actions and promise actions, you must remember use `put()` vs `putResolve()` appropriately.  E.g., you might have:\n\n\n```js\nimport { call, put, putResolve } from 'redux-saga/effects'\n\nfunction * myBusinessLogic () {\n  yield putResolve(myPromiseAction({ c:3, d: 4 })) // Wait for promise to resolve\n  yield put(someOrdinaryAction({ a: 1, b: 2}))     // Don't wait\n  yield call(someAsyncFunction, { e: 5 })          // Waits for promise to resolve\n  yield call(someOrdinaryFunction, { f: 6 })       // Doesn't wait\n}\n```\n\nUnfortunately it's easy to accidentally use `put()` instead of `putResolve()` which means the saga will immediately continue without waiting for your promise to resolve -- in many\ncases causing subtle errors.  (Voice of experience here!)\n\nTo avoid that error, and for consistency, `redux-saga-promise` provides an \"effect creator\" named `dispatch`.  Use it via:\n\n* `yield dispatch(action)`, passing an action\n* `yield dispatch(actionCreator, ...args)`, passing an actionCreator and optional args, which `dispatch()` will to produce an action.\n\nThe behavior mimics that of [`call()`](https://redux-saga.js.org/docs/api/#callfn-args) -- \nif the action is a promise action, `yield dispatch()` will dispatch it and block until the\npromise resolves then return the resolved value (or will bubble up an error if\nthe promise rejects).  For any other action, `yield dispatch()` will simply\ndispatch it normally and return whatever `store.dispatch` returns.\n\nThis lets you use `yield dispatch(action, ...args)` everywhere to dispatch\nactions, like you can use `yield call(function, ...args)` to call functions. You then doesn't need to worry about which actions are promise actions and which aren't.  I.e. the above saga then becomes:\n\n```js\nimport { call }     from 'redux-saga/effects'\nimport { dispatch } from '@adobe/redux-saga-promise'\n\nfunction * myBusinessLogic () {\n  yield dispatch(myPromiseAction, { c:3, d: 4 })    // Waits for promise to resolve\n  yield dispatch(someOrdinaryAction, { a: 1, b: 2}) // Doesn't wait\n  yield call(someAsyncFunction, { e: 5 })           // Waits for promise to resolve\n  yield call(someOrdinaryFunction, { f: 6 })        // Doesn't wait\n}\n```\n\nBehind the scenes, `dispatch()` simply returns `put(action)` or\n`putResolve(action)` based on whether the action was created by\n`createPromiseAction`.\n\nIf you call `dispatch()` with a first argument that is `null`, or the first argument is not a function but you provide extra `...args` anyway, it will throw\nan error (see [Argument Validation](#argument-validation) below)\n\n## <a name='argument-validation'></a> Argument Validation\n\nTo avoid accidental confusion, all the helper functions validate their\narguments and will throw a custom `Error` subclass `ArgumentError` in case\nof error.  This error will be bubbled up by redux-saga as usual, and as usual you can catch it in a saga otherwise it will will bubble up to the [`onError`](https://redux-saga.js.org/docs/api/#createsagamiddlewareoptions) hook.  If you want to, you can test the error type, e.g.:\n\n```js\nimport { applyMiddleware, compose, createStore } from 'redux'\nimport { ArgumentError, promiseMiddleware }      from '@adobe/redux-saga-promise'\nimport createSagaMiddleware                      from 'redux-saga'\n\n// ...assuming rootReducer and rootSaga are defined\nconst sagaMiddleware = createSagaMiddleware({ onError: (error) => {\n  if (error instanceof ArgumentError) {\n    console.log('Oops, programmer error! I called redux-saga-promise incorrectly:', error)\n  } else {\n    // ...\n  }\n})\nconst store = createStore(rootReducer, {}, compose(applyMiddleware(promiseMiddleware, sagaMiddleware)))\nsagaMiddleware.run(rootSaga)\n```\n\nAdditionally, all the helper functions will throw a custom `Error` subclass `ConfigurationError` if `promiseMiddleware` was not properly included in the store.\n\n# Contributing\n\nContributions are welcomed! Read the [Contributing Guide](./CONTRIBUTING.md) for more information.\n\n### Building & Testing\n\n`package.json` defines the usual scripts:\n\n* `npm build`: transpiles the source, placing the result in `dist/index.js`\n* `npm test`: builds, and then runs the test suite.\n\nThe tests are written using the [AVA](https://github.com/avajs/ava) test runner.\n\n\n# Licensing\n\nThis project is licensed under the Apache V2 License. See [LICENSE](./LICENSE) for more information.\n","readmeFilename":"README.md"}