{"maintainers":[{"name":"aikoven","email":"dan.lytkin@gmail.com"},{"name":"gaearon","email":"dan.abramov@gmail.com"},{"name":"timdorr","email":"timdorr@timdorr.com"}],"keywords":["redux","thunk","middleware","redux-middleware","flux"],"dist-tags":{"latest":"2.2.0"},"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"description":"Thunk middleware for Redux.","readme":"Redux Thunk\n=============\n\nThunk [middleware](http://redux.js.org/docs/advanced/Middleware.html) for Redux.\n\n[![build status](https://img.shields.io/travis/gaearon/redux-thunk/master.svg?style=flat-square)](https://travis-ci.org/gaearon/redux-thunk) \n[![npm version](https://img.shields.io/npm/v/redux-thunk.svg?style=flat-square)](https://www.npmjs.com/package/redux-thunk)\n[![npm downloads](https://img.shields.io/npm/dm/redux-thunk.svg?style=flat-square)](https://www.npmjs.com/package/redux-thunk)\n\n```js\nnpm install --save redux-thunk\n```\n\n## Note on 2.x Update\n\nMost tutorials today assume Redux Thunk 1.x so you might run into an issue when running their code with 2.x.  \n**If you use Redux Thunk 2.x in CommonJS environment, [don’t forget to add `.default` to your import](https://github.com/gaearon/redux-thunk/releases/tag/v2.0.0):**\n\n```diff\n- var ReduxThunk = require('redux-thunk')\n+ var ReduxThunk = require('redux-thunk').default\n```\n\nIf you used ES modules, you’re already all good:\n\n```js\nimport ReduxThunk from 'redux-thunk' // no changes here 😀\n```\n\nAdditionally, since 2.x, we also support a [UMD build](https://npmcdn.com/redux-thunk@2.0.1/dist/redux-thunk.min.js):\n\n```js\nvar ReduxThunk = window.ReduxThunk.default\n```\n\nAs you can see, it also requires `.default` at the end.\n\n## Why Do I Need This?\n\nIf you’re not sure whether you need it, you probably don’t.\n\n**[Read this for an in-depth introduction to thunks in Redux.](http://stackoverflow.com/questions/35411423/how-to-dispatch-a-redux-action-with-a-timeout/35415559#35415559)**\n\n## Motivation\n\nRedux Thunk [middleware](https://github.com/reactjs/redux/blob/master/docs/advanced/Middleware.md) allows you to write action creators that return a function instead of an action. The thunk can be used to delay the dispatch of an action, or to dispatch only if a certain condition is met. The inner function receives the store methods `dispatch` and `getState` as parameters.\n\nAn action creator that returns a function to perform asynchronous dispatch:\n\n```js\nconst INCREMENT_COUNTER = 'INCREMENT_COUNTER';\n\nfunction increment() {\n  return {\n    type: INCREMENT_COUNTER\n  };\n}\n\nfunction incrementAsync() {\n  return dispatch => {\n    setTimeout(() => {\n      // Yay! Can invoke sync or async actions with `dispatch`\n      dispatch(increment());\n    }, 1000);\n  };\n}\n```\n\nAn action creator that returns a function to perform conditional dispatch:\n\n```js\nfunction incrementIfOdd() {\n  return (dispatch, getState) => {\n    const { counter } = getState();\n\n    if (counter % 2 === 0) {\n      return;\n    }\n\n    dispatch(increment());\n  };\n}\n```\n\n## What’s a thunk?!\n\nA [thunk](https://en.wikipedia.org/wiki/Thunk) is a function that wraps an expression to delay its evaluation.\n\n```js\n// calculation of 1 + 2 is immediate\n// x === 3\nlet x = 1 + 2;\n\n// calculation of 1 + 2 is delayed\n// foo can be called later to perform the calculation\n// foo is a thunk!\nlet foo = () => 1 + 2;\n```\n\n\n## Installation\n\n```\nnpm install --save redux-thunk\n```\n\nThen, to enable Redux Thunk, use [`applyMiddleware()`](http://redux.js.org/docs/api/applyMiddleware.html):\n\n```js\nimport { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from './reducers/index';\n\n// Note: this API requires redux@>=3.1.0\nconst store = createStore(\n  rootReducer,\n  applyMiddleware(thunk)\n);\n```\n\n## Composition\n\nAny return value from the inner function will be available as the return value of `dispatch` itself. This is convenient for orchestrating an asynchronous control flow with thunk action creators dispatching each other and returning Promises to wait for each other’s completion:\n\n```js\nimport { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from './reducers';\n\n// Note: this API requires redux@>=3.1.0\nconst store = createStore(\n  rootReducer,\n  applyMiddleware(thunk)\n);\n\nfunction fetchSecretSauce() {\n  return fetch('https://www.google.com/search?q=secret+sauce');\n}\n\n// These are the normal action creators you have seen so far.\n// The actions they return can be dispatched without any middleware.\n// However, they only express “facts” and not the “async flow”.\n\nfunction makeASandwich(forPerson, secretSauce) {\n  return {\n    type: 'MAKE_SANDWICH',\n    forPerson,\n    secretSauce\n  };\n}\n\nfunction apologize(fromPerson, toPerson, error) {\n  return {\n    type: 'APOLOGIZE',\n    fromPerson,\n    toPerson,\n    error\n  };\n}\n\nfunction withdrawMoney(amount) {\n  return {\n    type: 'WITHDRAW',\n    amount\n  };\n}\n\n// Even without middleware, you can dispatch an action:\nstore.dispatch(withdrawMoney(100));\n\n// But what do you do when you need to start an asynchronous action,\n// such as an API call, or a router transition?\n\n// Meet thunks.\n// A thunk is a function that returns a function.\n// This is a thunk.\n\nfunction makeASandwichWithSecretSauce(forPerson) {\n\n  // Invert control!\n  // Return a function that accepts `dispatch` so we can dispatch later.\n  // Thunk middleware knows how to turn thunk async actions into actions.\n\n  return function (dispatch) {\n    return fetchSecretSauce().then(\n      sauce => dispatch(makeASandwich(forPerson, sauce)),\n      error => dispatch(apologize('The Sandwich Shop', forPerson, error))\n    );\n  };\n}\n\n// Thunk middleware lets me dispatch thunk async actions\n// as if they were actions!\n\nstore.dispatch(\n  makeASandwichWithSecretSauce('Me')\n);\n\n// It even takes care to return the thunk’s return value\n// from the dispatch, so I can chain Promises as long as I return them.\n\nstore.dispatch(\n  makeASandwichWithSecretSauce('My wife')\n).then(() => {\n  console.log('Done!');\n});\n\n// In fact I can write action creators that dispatch\n// actions and async actions from other action creators,\n// and I can build my control flow with Promises.\n\nfunction makeSandwichesForEverybody() {\n  return function (dispatch, getState) {\n    if (!getState().sandwiches.isShopOpen) {\n\n      // You don’t have to return Promises, but it’s a handy convention\n      // so the caller can always call .then() on async dispatch result.\n\n      return Promise.resolve();\n    }\n\n    // We can dispatch both plain object actions and other thunks,\n    // which lets us compose the asynchronous actions in a single flow.\n\n    return dispatch(\n      makeASandwichWithSecretSauce('My Grandma')\n    ).then(() =>\n      Promise.all([\n        dispatch(makeASandwichWithSecretSauce('Me')),\n        dispatch(makeASandwichWithSecretSauce('My wife'))\n      ])\n    ).then(() =>\n      dispatch(makeASandwichWithSecretSauce('Our kids'))\n    ).then(() =>\n      dispatch(getState().myMoney > 42 ?\n        withdrawMoney(42) :\n        apologize('Me', 'The Sandwich Shop')\n      )\n    );\n  };\n}\n\n// This is very useful for server side rendering, because I can wait\n// until data is available, then synchronously render the app.\n\nstore.dispatch(\n  makeSandwichesForEverybody()\n).then(() =>\n  response.send(ReactDOMServer.renderToString(<MyApp store={store} />))\n);\n\n// I can also dispatch a thunk async action from a component\n// any time its props change to load the missing data.\n\nimport { connect } from 'react-redux';\nimport { Component } from 'react';\n\nclass SandwichShop extends Component {\n  componentDidMount() {\n    this.props.dispatch(\n      makeASandwichWithSecretSauce(this.props.forPerson)\n    );\n  }\n\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.forPerson !== this.props.forPerson) {\n      this.props.dispatch(\n        makeASandwichWithSecretSauce(nextProps.forPerson)\n      );\n    }\n  }\n\n  render() {\n    return <p>{this.props.sandwiches.join('mustard')}</p>\n  }\n}\n\nexport default connect(\n  state => ({\n    sandwiches: state.sandwiches\n  })\n)(SandwichShop);\n```\n\n## Injecting a Custom Argument\n\nSince 2.1.0, Redux Thunk supports injecting a custom argument using the `withExtraArgument` function:\n\n```js\nconst store = createStore(\n  reducer,\n  applyMiddleware(thunk.withExtraArgument(api))\n)\n\n// later\nfunction fetchUser(id) {\n  return (dispatch, getState, api) => {\n    // you can use api here\n  }\n}\n```\n\nTo pass multiple things, just wrap them in a single object and use destructuring:\n\n```js\nconst store = createStore(\n  reducer,\n  applyMiddleware(thunk.withExtraArgument({ api, whatever }))\n)\n\n// later\nfunction fetchUser(id) {\n  return (dispatch, getState, { api, whatever }) => {\n    // you can use api and something else here here\n  }\n}\n```\n\n\n## License\n\nMIT\n","repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"users":{"danharper":true,"jlertle":true,"moogus":true,"sammyteahan":true,"kay.sackey":true,"jrnail23":true,"isik":true,"reergymerej":true,"kytart":true,"princetoad":true,"sandeepgy11":true,"dmitryscaletta":true,"dskecse":true,"alexjsdev":true,"jasonwang1888":true,"fsgdez":true,"newswim":true,"lagora":true,"brainpoint":true,"restmount":true,"monolithed":true,"ohcoder":true,"nelix":true,"knoja4":true,"xiaochao":true,"mswanson1524":true,"muroc":true,"itonyyo":true,"holly":true,"norlando":true,"asmattic":true,"tsyue":true,"atulmy":true,"tin-lek":true,"abuelwafa":true,"isa424":true,"ezdub":true,"escapeimagery":true,"serge-nikitin":true,"kaufmo":true,"alimaster":true,"nak2k":true,"n0f3":true,"nisimjoseph":true,"nonthasart":true},"bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"license":"MIT","versions":{"0.1.0":{"name":"redux-thunk","version":"0.1.0","description":"Thunk middleware for Redux.","main":"lib/index.js","scripts":{"prepublish":"rm -rf lib && babel src --out-dir lib"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel":"^5.6.14","babel-core":"^5.6.15","babel-eslint":"^3.1.20","eslint":"^0.24.0","eslint-config-airbnb":"0.0.6"},"gitHead":"9f02789ee290c27656fed5f02402507adb54b5a1","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@0.1.0","_shasum":"8e347606808b35bf8a927df4616f6fed101826e5","_from":".","_npmVersion":"2.11.0","_nodeVersion":"2.2.1","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"8e347606808b35bf8a927df4616f6fed101826e5","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-0.1.0.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"directories":{}},"1.0.0":{"name":"redux-thunk","version":"1.0.0","description":"Thunk middleware for Redux.","main":"lib/index.js","scripts":{"prepublish":"rimraf lib && babel src --out-dir lib","test":"mocha --compilers js:babel/register --reporter spec test/*.js"},"repository":{"type":"git","url":"https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel":"^5.6.14","babel-core":"^5.6.15","babel-eslint":"^3.1.20","chai":"^3.2.0","eslint":"^0.24.0","eslint-config-airbnb":"0.0.6","mocha":"^2.2.5","rimraf":"^2.4.3"},"gitHead":"2240b0b389249f6e2ecd1b5385c1dd85ef812c73","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@1.0.0","_shasum":"e35544a10fcd9c9e3ba96083ac16c702394f4009","_from":".","_npmVersion":"2.11.0","_nodeVersion":"2.2.1","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"e35544a10fcd9c9e3ba96083ac16c702394f4009","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-1.0.0.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"directories":{}},"1.0.1":{"name":"redux-thunk","version":"1.0.1","description":"Thunk middleware for Redux.","main":"lib/index.js","files":["lib","src"],"scripts":{"compile":"babel src --out-dir lib","prepublish":"rimraf lib && npm run compile","test":"mocha --compilers js:babel-core/register --reporter spec test/*.js"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel":"^6.1.18","babel-core":"^6.2.1","babel-eslint":"^5.0.0-beta4","babel-cli":"^6.2.0","babel-preset-es2015":"^6.1.18","babel-preset-stage-0":"^6.1.18","chai":"^3.2.0","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","mocha":"^2.2.5","rimraf":"^2.4.3"},"gitHead":"b5707bf4731a85025a4d73f76448764b78b898ba","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@1.0.1","_shasum":"4d92aad1e63ad5634181d1540f2f2c62c75d6bc4","_from":".","_npmVersion":"2.11.0","_nodeVersion":"2.2.1","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"4d92aad1e63ad5634181d1540f2f2c62c75d6bc4","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-1.0.1.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"deprecated":"THIS IS A BROKEN RELEASE. USE 1.0.2 INSTEAD.","directories":{}},"1.0.2":{"name":"redux-thunk","version":"1.0.2","description":"Thunk middleware for Redux.","main":"lib/index.js","files":["lib","src"],"scripts":{"compile":"babel src --out-dir lib","prepublish":"rimraf lib && npm run compile","test":"mocha --compilers js:babel-core/register --reporter spec test/*.js"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel":"^6.1.18","babel-cli":"^6.2.0","babel-core":"^6.2.1","babel-eslint":"^5.0.0-beta4","babel-plugin-add-module-exports":"^0.1.1","babel-preset-es2015":"^6.1.18","babel-preset-stage-0":"^6.1.18","chai":"^3.2.0","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","mocha":"^2.2.5","rimraf":"^2.4.3"},"gitHead":"2abb03390fb0b4c1696a3cc165c1f77889d33f43","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@1.0.2","_shasum":"5911e5a25dab2649d860b0f1eeac261c9d130ece","_from":".","_npmVersion":"3.5.2","_nodeVersion":"4.0.0","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"5911e5a25dab2649d860b0f1eeac261c9d130ece","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-1.0.2.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"directories":{}},"1.0.3":{"name":"redux-thunk","version":"1.0.3","description":"Thunk middleware for Redux.","main":"lib/index.js","files":["lib","src"],"scripts":{"build":"babel src --out-dir lib","prepublish":"rimraf lib && npm run build","test":"mocha --compilers js:babel-core/register --reporter spec test/*.js"},"repository":{"type":"git","url":"https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel":"^6.1.18","babel-cli":"^6.2.0","babel-core":"^6.2.1","babel-eslint":"^5.0.0-beta4","babel-plugin-add-module-exports":"^0.1.1","babel-preset-es2015":"^6.1.18","babel-preset-stage-0":"^6.1.18","chai":"^3.2.0","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","mocha":"^2.2.5","rimraf":"^2.4.3"},"gitHead":"be45e6bc0f027228f6373f6345c8380e935e8f3d","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@1.0.3","_shasum":"778aa0099eea0595031ab6b39165f6670d8d26bd","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"778aa0099eea0595031ab6b39165f6670d8d26bd","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-1.0.3.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"directories":{}},"2.0.1":{"name":"redux-thunk","version":"2.0.1","description":"Thunk middleware for Redux.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","es","src","dist"],"scripts":{"clean":"rimraf lib dist es","build":"npm run build:commonjs && npm run build:umd && npm run build:umd:min && npm run build:es","prepublish":"npm run clean && npm run test && npm run build","posttest":"npm run lint","lint":"eslint src test","test":"cross-env BABEL_ENV=commonjs mocha --compilers js:babel-core/register --reporter spec test/*.js","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=commonjs NODE_ENV=development webpack","build:umd:min":"cross-env BABEL_ENV=commonjs NODE_ENV=production webpack"},"repository":{"type":"git","url":"https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta4","babel-loader":"^6.2.4","babel-plugin-check-es2015-constants":"^6.6.5","babel-plugin-transform-es2015-arrow-functions":"^6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"^6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.6.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-es2015-computed-properties":"^6.6.5","babel-plugin-transform-es2015-destructuring":"^6.6.5","babel-plugin-transform-es2015-for-of":"^6.6.0","babel-plugin-transform-es2015-function-name":"^6.5.0","babel-plugin-transform-es2015-literals":"^6.5.0","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-es2015-object-super":"^6.6.5","babel-plugin-transform-es2015-parameters":"^6.6.5","babel-plugin-transform-es2015-shorthand-properties":"^6.5.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"^6.5.0","babel-plugin-transform-es2015-template-literals":"^6.6.5","babel-plugin-transform-es2015-unicode-regex":"^6.5.0","babel-plugin-transform-es3-member-expression-literals":"^6.5.0","babel-plugin-transform-es3-property-literals":"^6.5.0","chai":"^3.2.0","cross-env":"^1.0.7","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","eslint-plugin-react":"^4.1.0","mocha":"^2.2.5","rimraf":"^2.5.2","webpack":"^1.12.14"},"gitHead":"57b2ee21d05439895c7f75814ec86a7b6f868d3d","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@2.0.1","_shasum":"f0b31070fa1a243a4b19f904befdc2ee439aade9","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"f0b31070fa1a243a4b19f904befdc2ee439aade9","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-2.0.1.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/redux-thunk-2.0.1.tgz_1457269922684_0.06873586401343346"},"directories":{}},"2.1.0":{"name":"redux-thunk","version":"2.1.0","description":"Thunk middleware for Redux.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","es","src","dist"],"scripts":{"clean":"rimraf lib dist es","build":"npm run build:commonjs && npm run build:umd && npm run build:umd:min && npm run build:es","prepublish":"npm run clean && npm run test && npm run build","posttest":"npm run lint","lint":"eslint src test","test":"cross-env BABEL_ENV=commonjs mocha --compilers js:babel-core/register --reporter spec test/*.js","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=commonjs NODE_ENV=development webpack","build:umd:min":"cross-env BABEL_ENV=commonjs NODE_ENV=production webpack"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta4","babel-loader":"^6.2.4","babel-plugin-check-es2015-constants":"^6.6.5","babel-plugin-transform-es2015-arrow-functions":"^6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"^6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.6.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-es2015-computed-properties":"^6.6.5","babel-plugin-transform-es2015-destructuring":"^6.6.5","babel-plugin-transform-es2015-for-of":"^6.6.0","babel-plugin-transform-es2015-function-name":"^6.5.0","babel-plugin-transform-es2015-literals":"^6.5.0","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-es2015-object-super":"^6.6.5","babel-plugin-transform-es2015-parameters":"^6.6.5","babel-plugin-transform-es2015-shorthand-properties":"^6.5.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"^6.5.0","babel-plugin-transform-es2015-template-literals":"^6.6.5","babel-plugin-transform-es2015-unicode-regex":"^6.5.0","babel-plugin-transform-es3-member-expression-literals":"^6.5.0","babel-plugin-transform-es3-property-literals":"^6.5.0","chai":"^3.2.0","cross-env":"^1.0.7","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","eslint-plugin-react":"^4.1.0","mocha":"^2.2.5","rimraf":"^2.5.2","webpack":"^1.12.14"},"gitHead":"7592d43085835959212cda5ae97dab2586f7381f","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@2.1.0","_shasum":"c724bfee75dbe352da2e3ba9bc14302badd89a98","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"gaearon","email":"dan.abramov@gmail.com"},"dist":{"shasum":"c724bfee75dbe352da2e3ba9bc14302badd89a98","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-2.1.0.tgz"},"maintainers":[{"name":"gaearon","email":"dan.abramov@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/redux-thunk-2.1.0.tgz_1462893092551_0.6522019866388291"},"directories":{}},"2.1.1":{"name":"redux-thunk","version":"2.1.1","description":"Thunk middleware for Redux.","main":"lib/index.js","jsnext:main":"es/index.js","typings":"./index.d.ts","files":["lib","es","src","dist","index.d.ts"],"scripts":{"clean":"rimraf lib dist es","build":"npm run build:commonjs && npm run build:umd && npm run build:umd:min && npm run build:es","prepublish":"npm run clean && npm run test && npm run build","posttest":"npm run lint","lint":"eslint src test","test":"cross-env BABEL_ENV=commonjs mocha --compilers js:babel-core/register --reporter spec test/*.js","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=commonjs NODE_ENV=development webpack","build:umd:min":"cross-env BABEL_ENV=commonjs NODE_ENV=production webpack"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta4","babel-loader":"^6.2.4","babel-plugin-check-es2015-constants":"^6.6.5","babel-plugin-transform-es2015-arrow-functions":"^6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"^6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.6.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-es2015-computed-properties":"^6.6.5","babel-plugin-transform-es2015-destructuring":"^6.6.5","babel-plugin-transform-es2015-for-of":"^6.6.0","babel-plugin-transform-es2015-function-name":"^6.5.0","babel-plugin-transform-es2015-literals":"^6.5.0","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-es2015-object-super":"^6.6.5","babel-plugin-transform-es2015-parameters":"^6.6.5","babel-plugin-transform-es2015-shorthand-properties":"^6.5.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"^6.5.0","babel-plugin-transform-es2015-template-literals":"^6.6.5","babel-plugin-transform-es2015-unicode-regex":"^6.5.0","babel-plugin-transform-es3-member-expression-literals":"^6.5.0","babel-plugin-transform-es3-property-literals":"^6.5.0","chai":"^3.2.0","cross-env":"^1.0.7","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","eslint-plugin-react":"^4.1.0","mocha":"^2.2.5","redux":"^3.4.0","rimraf":"^2.5.2","typescript":"^1.8.10","typescript-definition-tester":"0.0.4","webpack":"^1.12.14"},"gitHead":"142097d5cb809a3cc0d31ac58c3c3a6c2bae718a","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@2.1.1","_shasum":"f4e1adfa164e41637cf6396b13fac130fe5febdf","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.2","_npmUser":{"name":"aikoven","email":"dan.lytkin@gmail.com"},"dist":{"shasum":"f4e1adfa164e41637cf6396b13fac130fe5febdf","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-2.1.1.tgz"},"maintainers":[{"name":"aikoven","email":"dan.lytkin@gmail.com"},{"name":"gaearon","email":"dan.abramov@gmail.com"},{"name":"timdorr","email":"timdorr@timdorr.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/redux-thunk-2.1.1.tgz_1484720141702_0.08023179788142443"},"directories":{}},"2.1.2":{"name":"redux-thunk","version":"2.1.2","description":"Thunk middleware for Redux.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","es","src","dist","index.d.ts"],"scripts":{"clean":"rimraf lib dist es","build":"npm run build:commonjs && npm run build:umd && npm run build:umd:min && npm run build:es","prepublish":"npm run clean && npm run test && npm run build","posttest":"npm run lint","lint":"eslint src test","test":"cross-env BABEL_ENV=commonjs mocha --compilers js:babel-core/register --reporter spec test/*.js","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=commonjs NODE_ENV=development webpack","build:umd:min":"cross-env BABEL_ENV=commonjs NODE_ENV=production webpack"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta4","babel-loader":"^6.2.4","babel-plugin-check-es2015-constants":"^6.6.5","babel-plugin-transform-es2015-arrow-functions":"^6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"^6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.6.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-es2015-computed-properties":"^6.6.5","babel-plugin-transform-es2015-destructuring":"^6.6.5","babel-plugin-transform-es2015-for-of":"^6.6.0","babel-plugin-transform-es2015-function-name":"^6.5.0","babel-plugin-transform-es2015-literals":"^6.5.0","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-es2015-object-super":"^6.6.5","babel-plugin-transform-es2015-parameters":"^6.6.5","babel-plugin-transform-es2015-shorthand-properties":"^6.5.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"^6.5.0","babel-plugin-transform-es2015-template-literals":"^6.6.5","babel-plugin-transform-es2015-unicode-regex":"^6.5.0","babel-plugin-transform-es3-member-expression-literals":"^6.5.0","babel-plugin-transform-es3-property-literals":"^6.5.0","chai":"^3.2.0","cross-env":"^1.0.7","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","eslint-plugin-react":"^4.1.0","mocha":"^2.2.5","redux":"^3.4.0","rimraf":"^2.5.2","typescript":"^1.8.10","typescript-definition-tester":"0.0.4","webpack":"^1.12.14"},"gitHead":"a679a60da433c1ff09531a9179a609a08d2bb76d","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@2.1.2","_shasum":"c698ed734d3a7448dd0de9865a0fb41312c2d779","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.2","_npmUser":{"name":"aikoven","email":"dan.lytkin@gmail.com"},"dist":{"shasum":"c698ed734d3a7448dd0de9865a0fb41312c2d779","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-2.1.2.tgz"},"maintainers":[{"name":"aikoven","email":"dan.lytkin@gmail.com"},{"name":"gaearon","email":"dan.abramov@gmail.com"},{"name":"timdorr","email":"timdorr@timdorr.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/redux-thunk-2.1.2.tgz_1484727071620_0.8678598303813487"},"directories":{}},"2.2.0":{"name":"redux-thunk","version":"2.2.0","description":"Thunk middleware for Redux.","main":"lib/index.js","jsnext:main":"es/index.js","typings":"./index.d.ts","files":["lib","es","src","dist","index.d.ts"],"scripts":{"clean":"rimraf lib dist es","build":"npm run build:commonjs && npm run build:umd && npm run build:umd:min && npm run build:es","prepublish":"npm run clean && npm run test && npm run build","posttest":"npm run lint","lint":"eslint src test","test":"cross-env BABEL_ENV=commonjs mocha --compilers js:babel-core/register --reporter spec test/*.js","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=commonjs NODE_ENV=development webpack","build:umd:min":"cross-env BABEL_ENV=commonjs NODE_ENV=production webpack"},"repository":{"type":"git","url":"git+https://github.com/gaearon/redux-thunk.git"},"homepage":"https://github.com/gaearon/redux-thunk","keywords":["redux","thunk","middleware","redux-middleware","flux"],"author":{"name":"Dan Abramov","email":"dan.abramov@me.com"},"license":"MIT","devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta4","babel-loader":"^6.2.4","babel-plugin-check-es2015-constants":"^6.6.5","babel-plugin-transform-es2015-arrow-functions":"^6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"^6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.6.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-es2015-computed-properties":"^6.6.5","babel-plugin-transform-es2015-destructuring":"^6.6.5","babel-plugin-transform-es2015-for-of":"^6.6.0","babel-plugin-transform-es2015-function-name":"^6.5.0","babel-plugin-transform-es2015-literals":"^6.5.0","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-es2015-object-super":"^6.6.5","babel-plugin-transform-es2015-parameters":"^6.6.5","babel-plugin-transform-es2015-shorthand-properties":"^6.5.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"^6.5.0","babel-plugin-transform-es2015-template-literals":"^6.6.5","babel-plugin-transform-es2015-unicode-regex":"^6.5.0","babel-plugin-transform-es3-member-expression-literals":"^6.5.0","babel-plugin-transform-es3-property-literals":"^6.5.0","chai":"^3.2.0","cross-env":"^1.0.7","eslint":"^1.10.2","eslint-config-airbnb":"1.0.2","eslint-plugin-react":"^4.1.0","mocha":"^2.2.5","redux":"^3.4.0","rimraf":"^2.5.2","typescript":"^1.8.10","typescript-definition-tester":"0.0.4","webpack":"^1.12.14"},"gitHead":"4f96ec0239453623adde857b7e7ad8c4f2897bf1","bugs":{"url":"https://github.com/gaearon/redux-thunk/issues"},"_id":"redux-thunk@2.2.0","_shasum":"e615a16e16b47a19a515766133d1e3e99b7852e5","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.2","_npmUser":{"name":"aikoven","email":"dan.lytkin@gmail.com"},"dist":{"shasum":"e615a16e16b47a19a515766133d1e3e99b7852e5","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/redux-thunk/-/redux-thunk-2.2.0.tgz"},"maintainers":[{"name":"aikoven","email":"dan.lytkin@gmail.com"},{"name":"gaearon","email":"dan.abramov@gmail.com"},{"name":"timdorr","email":"timdorr@timdorr.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/redux-thunk-2.2.0.tgz_1484727148461_0.5254623393993825"},"directories":{}}},"name":"redux-thunk","time":{"modified":"2017-04-23T09:09:31.527Z","created":"2015-07-13T13:37:49.846Z","0.1.0":"2015-07-13T13:37:49.846Z","1.0.0":"2015-09-17T17:36:45.457Z","1.0.1":"2015-12-13T20:22:23.607Z","1.0.2":"2015-12-14T08:59:28.515Z","1.0.3":"2015-12-28T22:31:23.546Z","2.0.0":"2016-03-06T13:02:42.003Z","2.0.1":"2016-03-06T13:12:06.001Z","2.1.0":"2016-05-10T15:11:33.770Z","2.1.1":"2017-01-18T06:15:43.554Z","2.1.2":"2017-01-18T08:11:13.223Z","2.2.0":"2017-01-18T08:12:30.464Z"},"readmeFilename":"README.md","homepage":"https://github.com/gaearon/redux-thunk"}