{"_id":"@waypointhomes/redux-thunk-actions","_rev":"119-d345b696c0347478f1171d6296436b89","name":"@waypointhomes/redux-thunk-actions","dist-tags":{"latest":"1.1.6"},"versions":{"1.1.6":{"name":"@waypointhomes/redux-thunk-actions","version":"1.1.6","keywords":["flux","redux","reducers","actions"],"author":{"name":"Gustavo Machado","email":"machadogj@gmail.com"},"license":"MIT","_id":"@waypointhomes/redux-thunk-actions@1.1.6","maintainers":[{"name":"aewing","email":"drew@phenocode.com"},{"name":"eemebarbe","email":"eeme.barbe@gmail.com"},{"name":"fullmetaldeveloper","email":"jevarlo.boykins@colonystarwood.com"},{"name":"garretttaco","email":"garretttacoronte@gmail.com"},{"name":"johnbhartley","email":"johnbhartley@gmail.com"},{"name":"jonstuebe","email":"jstuebe@gmail.com"},{"name":"jsdevel","email":"js.developer.undefined@gmail.com"},{"name":"judebowman","email":"jude@dynamit.com"},{"name":"mavame","email":"mvanmeter1@gmail.com"},{"name":"romanevich","email":"max.romanevich@dynamit.com"},{"name":"rpdobson123","email":"richard.dobson@colonystarwood.com"},{"name":"scko823","email":"scko823@gmail.com"},{"name":"shaneu","email":"Shane.Unger@colonystarwood.com"},{"name":"tooshel","email":"sheldon@tooshel.com"},{"name":"vzhiltsov","email":"lazuk.vz@gmail.com"},{"name":"wcrozier12","email":"wcc8@nau.edu"},{"name":"webmaster-csh","email":"webmaster@waypointhomes.com"},{"name":"wittycoder","email":"witty@wittycoder.com"}],"dist":{"shasum":"533bc18c3eafe6375c2b033084f2c98f6fc66986","tarball":"https://registry.npmjs.org/@waypointhomes/redux-thunk-actions/-/redux-thunk-actions-1.1.6.tgz","fileCount":5,"integrity":"sha512-qEQ7jqy1tScCGgwXgO8xcLAE0dbQ3urSKf65SdOXdzgj+9TQhp9FslG7+6aPcoE0b2aXcjIhZUaKJQWF+mtLaA==","signatures":[{"sig":"MEUCIB0xLQJ8i1S29H+cnVKh4GG5+Ayh9iKABYgV2SQfQyQNAiEAwWo4q1EJpuTU40t/n55yAhKf3SzDPpxGkBE2fg0feko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9546},"main":"lib/index.js","files":["lib","src"],"gitHead":"691525460652b0e6899d7fae3a9852edf16c6ece","scripts":{"test":"mocha --compilers js:babel-register test/*.js --require babel-polyfill","build":"npm run clean && babel src --out-dir lib --ignore *.specs.js","clean":"rimraf lib","prepublish":"npm run test && npm run build"},"_npmUser":{"name":"jonstuebe","email":"jstuebe@gmail.com"},"_npmVersion":"5.6.0","description":"redux-thunk-actions ===================","directories":{},"_nodeVersion":"9.4.0","dependencies":{"redux-actions":"^0.10.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.0.0","mocha":"^3.0.2","redux":"^3.5.2","eslint":"^2.8.0","rimraf":"^2.5.3","babel-cli":"^6.7.7","babel-core":"^6.7.7","redux-thunk":"^2.1.0","babel-eslint":"^6.1.1","eslint-watch":"^2.1.13","babel-polyfill":"^6.13.0","babel-register":"^6.7.2","babel-preset-es2015":"^6.6.0","babel-preset-stage-0":"^6.5.0","eslint-plugin-import":"^1.5.0","flux-standard-action":"^0.6.0","eslint-config-airbnb-base":"^1.0.3"},"_npmOperationalInternal":{"tmp":"tmp/redux-thunk-actions_1.1.6_1521238774464_0.761475840823886","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-03-16T22:19:34.412Z","modified":"2026-09-25T18:15:40.548Z","1.1.6":"2018-03-16T22:19:34.517Z"},"author":{"name":"Gustavo Machado","email":"machadogj@gmail.com"},"license":"MIT","keywords":["flux","redux","reducers","actions"],"description":"redux-thunk-actions ===================","maintainers":[{"email":"chris.romack@invitationhomes.com","name":"romack-ih"},{"email":"andy.asberry@gmail.com","name":"andyasberry"},{"email":"ryanpack78@gmail.com","name":"rpack78"},{"email":"david.ayers+webmaster@invitationhomes.com","name":"webmaster-csh"},{"email":"abhinav.sharma@invitationhomes.com","name":"abhinavsharmacorpit"},{"email":"nikhil.sodemba@invitationhomes.com","name":"nikhil.sodemba"},{"email":"joshua.barton@invitationhomes.com","name":"joshua.barton"},{"email":"adcallaghan159@gmail.com","name":"adcallaghan"},{"email":"alex.telford@invitationhomes.com","name":"alex.telford"},{"email":"ryan.breidenbach@invitationhomes.com","name":"ryan.breidenbach"},{"email":"wasim.arif@invitationhomes.com","name":"wasimarif"},{"email":"arielbarcellos@outlook.com","name":"arielbarcellos"},{"email":"fabricioanciaes@gmail.com","name":"fabricioanciaes"},{"email":"ed@edwagner.org","name":"edwagner"},{"email":"jesse.bailey01@gmail.com","name":"jbailey01"},{"email":"joseph.nastasi@invitationhomes.com","name":"psapocalypse"},{"email":"juan.plasencia@invitationhomes.com","name":"juanplasenciaih"},{"email":"robert.young@invitationhomes.com","name":"robbieyng-ih"},{"email":"luis.lora@invitationhomes.com","name":"invh-luislora"},{"email":"emilio.alvarez@invitationhomes.com","name":"emiliorojasih"},{"email":"svcNpmGithub@invitationhomes.com","name":"svc-npm-github"},{"email":"JChartier001@gmail.com","name":"jenchartier"},{"email":"rmkiriako+invh@gmail.com","name":"rkiriako-invh"},{"email":"mayk.goncalves@invitationhomes.com","name":"maykgoncalvesih"},{"email":"doreen.hakimi@invitationhomes.com","name":"dhakiki-ih"},{"email":"felipe.delima@invitationhomes.com","name":"felipe.delima"},{"email":"scott.popplewell@invitationhomes.com","name":"scottpopplewellih"},{"email":"ronnie.bueso@invitationhomes.com","name":"ronniebueso"},{"email":"svcNpmHeroku@invitationhomes.com","name":"svc-npm-heroku"},{"email":"jamie.mott@invitationhomes.com","name":"jamiemott"},{"email":"praveen.gangasani@invitationhomes.com","name":"praveen-gangasani"},{"email":"ravi.varanasi@invitationhomes.com","name":"ravi116"},{"email":"juan.benini@invitationhomes.com","name":"juan-benini-ih"},{"email":"radwan.alzoubi@invitationhomes.com","name":"radwan_alzoubi"},{"email":"daniel.g.oglesby@gmail.com","name":"danieloglesby"},{"email":"subhash.garhwal@invitationhomes.com","name":"subhashgarhwal"},{"email":"shawn.roller@invitationhomes.com","name":"shawn.roller"},{"email":"john.landes@invitationhomes.com","name":"landesjm"},{"email":"david.ayers@invitationhomes.com","name":"davidaayers-ih"},{"email":"jonathan.kirkman@invitationhomes.com","name":"jonkirkman-ih"},{"email":"gilbert.martinez@invitationhomes.com","name":"gilbertmartinez"},{"email":"thiago.lins@invitationhomes.com","name":"thiagolins-invh"},{"email":"kevin.brewer@invitationhomes.com","name":"kebrewer"}],"readme":"redux-thunk-actions\n===================\n\nEasily create `action creators` for redux with redux-thunk.\n\n## Rationale\n\nWith redux-actions you can do:\n\n```js\nlet increment = createAction('INCREMENT');\nexpect(increment(42)).to.deep.equal({\n  type: 'INCREMENT',\n  payload: 42\n});\n```\n\nWith redux-thunk you can do:\n\n```js\nfunction myFetch() {\n  // instead of an object, you can return a function\n  return (dispatch) => {\n    dispatch({type: 'MY_FETCH_START'});\n    try {\n      //we can do async and then dispatch more stuff\n      await api.fetch();\n    }\n    catch(e) {\n      return dispatch({type: 'MY_FETCH_FAIL', error: e});\n    }\n    dispatch({type: 'MY_FETCH_END'});\n  }\n}\ndispatch(myFetch());\n```\n\nWith redux-thunk-actions, you can do:\n\n```js\nlet myFetch = createActionThunk('MY_FETCH', () => api.fetch());\n```\n\nThis will generate two of three possible actions:\n\n- MY_FETCH_STARTED\n- MY_FETCH_SUCCEEDED\n- MY_FETCH_FAILED\n- MY_FETCH_ENDED\n\nYou can pass both sync and async functions and the actions will be\ndispatched accordingly.\n\n## Installation\n\n```js\nnpm install --save redux-thunk-actions\n```\n\n## Usage\n\n```js\nimport { createActionThunk } from 'redux-thunk-actions';\n```\n\n### non-async\n\nWith non async functions, it will dispatch start/fail/end actions\nanyway.\n\n***reducer.js***\n```js\ncase 'FETCH_SUCCEEDED':\n  return Object.assign({}, state, {\n    data: action.payload\n  });\n```\nYou can dispatch as usual:\n```js\nlet fetch = createActionThunk('FETCH', () => 3);\ndispatch(fetch());\nassert.equal(store.getState().data, 3);\n```\n\n### async\n\n```js\nlet fetch = createActionThunk('FETCH', myAsyncFunc);\n// you can try/catch dispatch.\nlet data = await dispatch(fetch());\n```\nWith promises:\n```js\nlet fetch = createActionThunk('FETCH', myAsyncFunc);\ndispatch(fetch()).then(\n  data => {\n    console.log(data)\n    //state is already updated!\n    assert.equal(store.getState().data, data);\n  },\n  error => console.log(error)\n);\n```\n\n### Errors\n\n**reducer.js**\n\n```js\n//...\n    case 'FETCH_FAILED':\n      return Object.assign({}, state, {\n        started: false,\n        error: action.error\n      });\n```\n\nthen if the action throws it fails:\n\n```js\n    let fetch = createActionThunk('FETCH', () => {\n      throw new Error('boom!');\n    });\n    try {\n      //if action is async, you can use await here!\n      dispatch(fetch());\n    }\n    catch(e) {\n      assert.equal(e.message, 'boom!');\n      assert.equal(getState().error, true);\n    }\n```","readmeFilename":"README.md"}