{"bugs":{"url":"https://github.com/supasate/connected-react-router/issues"},"dist":{"shasum":"4d8ba714f819c0f88c05eede4ae19b603e85e5d8","tarball":"https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.2.0-beta.2.tgz","fileCount":41,"integrity":"sha512-ooXK19g7OdS8dXKad7XDC8CyQwIhO8OFKYqaB8BvqxHHTy/v1JM4MpUG5ZBnHa6YJ7wTjNuTYYtK2JRIvGqfGw==","signatures":[{"sig":"MEYCIQC+jlQYGq9ok6SrS5EONryDffbK8z2+ZcRWDfdjthssegIhALG23GVXfNBOFjHGNNrxNtDS0ijNgpZfXDsCUEFi8Hcj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":464910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMcZCCRA9TVsSAnZWagAAVpIP/1zt8u3pXj5eRgh0sOah\nWfX7tY0f6NWqozz0djGX/P9cALxQfNdDwDKKU3uRnDr1S48QgGSjUzq5Uipe\nxf8mbKXvdk/RV31SjUn0pDjXBWWUA08RpJP6NzalZuB1hUltGGDPzlZmp2QM\nwodb+wEQu1AWNIADlYMt4hk3PlFZe4xRyu05hHjD/RWhnzYUlAD6iMN73+Cb\nJMYUdde7mzepOsdaXgCIJ2S+zfxjJuOpuCdVh5S4FKyQ3Jo9Lxuqi1wAPtUR\nimwx719CX5OtY7sPe3/UC5RJJSzIFuEowUh1/DGOy4aZ3XKXP5Qeexr3dvxp\n/2FP99MvUWESpcyb2suvBLYMBjpOtBhhrMhpNiCC3jw5g4IXVRg0eVEhA85C\n3n387iFP3kzJq5U1gevhx+5jBhjw0oOxm+iHo7ThCgj9hjoQTen+FcDjhTqU\nsevD6MYNE+FNkgGDcXfgkra5xYoyoffcaTFe5Cm05WuUT3Lfx+shn/6Fr/sp\n4BC0bNwtpANXUt4K456PhwiaSlHAIoIZYG9+R9ONHusOBu5sZHKr1IacCfQC\ng2UKoWusyZhlmKAZFOJ50F1LtvjPrf9M1EQ61Sz4QrGQHOT73LS5RjoLEO/2\n3EkUKjKCJYx7m/facaBSg42/jcuUKgeNI58V+x+qTf4sJRtPkC0gS+v9jK+9\n/Hxr\r\n=LlpO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","name":"connected-react-router","types":"./index.d.ts","author":{"name":"Supasate Choochaisri"},"module":"esm/index.js","readme":"> Breaking change in v5.0.0! Please read [How to migrate from v4 to v5](https://github.com/supasate/connected-react-router/blob/master/FAQ.md#how-to-migrate-from-v4-to-v5).\n\n> v6.0.0 requires React v16.4.0 and React Redux v6.0 or later.\n\nConnected React Router [![Build Status](https://travis-ci.org/supasate/connected-react-router.svg?branch=master)](https://travis-ci.org/supasate/connected-react-router) [![Open Source Helpers](https://www.codetriage.com/supasate/connected-react-router/badges/users.svg)](https://www.codetriage.com/supasate/connected-react-router)\n======================\nA Redux binding for React Router v4\n\nMain features\n-------------\n:sparkles: Synchronize router state with redux store through uni-directional flow (i.e. history -> store -> router -> components).\n\n:gift: Support [React Router v4](https://github.com/ReactTraining/react-router).\n\n:sunny: Support functional component hot reloading while preserving state (with [react-hot-reload](https://github.com/gaearon/react-hot-loader)).\n\n:tada: Dispatching of history methods (`push`, `replace`, `go`, `goBack`, `goForward`) works for both [redux-thunk](https://github.com/gaearon/redux-thunk) and [redux-saga](https://github.com/yelouafi/redux-saga).\n\n:snowman: Nested children can access routing state such as the current location directly with `react-redux`'s `connect`.\n\n:clock9: Support time traveling in Redux DevTools.\n\n:gem: Support [Immutable.js](https://facebook.github.io/immutable-js/)\n\n:muscle: Support TypeScript\n\n\nInstallation\n-----------\nConnected React Router requires **React 16.4 and React Redux 6.0 or later**.\n\n\n    $ npm install --save connected-react-router\n\nOr\n\n    $ yarn add connected-react-router\n\nUsage\n-----\n### Step 1\nIn your root reducer file, \n- Create a function that takes `history` as an argument and returns a root reducer.\n- Add `router` reducer into root reducer by passing `history` to `connectRouter`. \n- **Note: The key MUST be `router`**.\n \n```js\n// reducers.js\nimport { combineReducers } from 'redux'\nimport { connectRouter } from 'connected-react-router'\n\nexport default (history) => combineReducers({\n  router: connectRouter(history),\n  ... // rest of your reducers\n})\n```\n\n### Step 2\nWhen creating a Redux store,\n- Create a `history` object.\n- Provide the created `history` to the root reducer creator.\n- Use `routerMiddleware(history)` if you want to dispatch history actions (e.g. to change URL with `push('/path/to/somewhere')`).\n\n\n```js\n// configureStore.js\n...\nimport { createBrowserHistory } from 'history'\nimport { applyMiddleware, compose, createStore } from 'redux'\nimport { routerMiddleware } from 'connected-react-router'\nimport createRootReducer from './reducers'\n...\nexport const history = createBrowserHistory()\n\nexport default function configureStore(preloadedState) {\n  const store = createStore(\n    createRootReducer(history), // root reducer with router state\n    preloadedState,\n    compose(\n      applyMiddleware(\n        routerMiddleware(history), // for dispatching history actions\n        // ... other middlewares ...\n      ),\n    ),\n  )\n\n  return store\n}\n```\n\n### Step 3\n\n- Wrap your react-router v4 routing with `ConnectedRouter` and pass the `history` object as a prop.\n- Place `ConnectedRouter` as a child of `react-redux`'s `Provider`.\n\n```js\n// index.js\n...\nimport { Provider } from 'react-redux'\nimport { Route, Switch } from 'react-router' // react-router v4\nimport { ConnectedRouter } from 'connected-react-router'\nimport configureStore, { history } from './configureStore'\n...\nconst store = configureStore(/* provide initial state if any */)\n\nReactDOM.render(\n  <Provider store={store}>\n    <ConnectedRouter history={history}> { /* place ConnectedRouter under Provider */ }\n      <> { /* your usual react-router v4 routing */ }\n        <Switch>\n          <Route exact path=\"/\" render={() => (<div>Match</div>)} />\n          <Route render={() => (<div>Miss</div>)} />\n        </Switch>\n      </>\n    </ConnectedRouter>\n  </Provider>,\n  document.getElementById('react-root')\n)\n```\nNote: the `history` object provided to `router` reducer, `routerMiddleware`, and `ConnectedRouter` component must be the same `history` object.\n\nNow, it's ready to work!\n\n\nExamples\n--------\nSee the [examples](https://github.com/supasate/connected-react-router/tree/master/examples) folder\n\n[FAQ](https://github.com/supasate/connected-react-router/tree/master/FAQ.md)\n-----\n- [How to navigate with Redux action](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-navigate-with-redux-action)\n- [How to get the current browser location (URL)](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-get-the-current-browser-location-url)\n- [How to set Router props e.g. basename, initialEntries, etc.](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-set-router-props-eg-basename-initialentries-etc)\n- [How to hot reload functional components](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-hot-reload-functional-components)\n- [How to hot reload reducers](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-hot-reload-reducers)\n- [How to support Immutable.js](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-support-immutablejs)\n- [How to implement server-side rendering](https://medium.com/@cereallarceny/server-side-rendering-in-create-react-app-with-all-the-goodies-without-ejecting-4c889d7db25e) ([sample codebase](https://github.com/cereallarceny/cra-ssr))\n- [How to migrate from v4 to v5](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-migrate-from-v4-to-v5)\n- [How to use your own context with react-redux](https://github.com/supasate/connected-react-router/tree/master/FAQ.md#how-to-use-your-own-context-with-react-redux)\n\nBuild\n-----\n```bash\nnpm run build\n```\nGenerated files will be in the `lib` folder.\n\nDevelopment\n-----------\nWhen testing the example apps with `npm link` or `yarn link`, you should explicitly provide the same `Context` to both `Provider` and `ConnectedRouter` to make sure that the `ConnectedRouter` doesn't pick up a different `ReactReduxContext` from a different `node_modules` folder.\n\nIn `index.js`.\n```js\n...\nimport { Provider, ReactReduxContext } from 'react-redux'\n...\n      <Provider store={store} context={ReactReduxContext}>\n        <App history={history} context={ReactReduxContext} />\n      </Provider>\n...\n```\n\nIn `App.js`,\n```js\n...\nconst App = ({ history, context }) => {\n  return (\n    <ConnectedRouter history={history} context={context}>\n      { routes }\n    </ConnectedRouter>\n  )\n}\n...\n```\n\nContributors\n------------\nSee [Contributors](https://github.com/supasate/connected-react-router/graphs/contributors) and [Acknowledge](https://github.com/supasate/connected-react-router/blob/master/ACKNOWLEDGE.md).\n\nLicense\n-------\n[MIT License](https://github.com/supasate/connected-react-router/blob/master/LICENSE.md)\n","gitHead":"3bfe29f889e86f052e8415f6da46f49fbf4975a9","license":"MIT","scripts":{"lint":"eslint .","test":"jest --config ./.jestrc.json","build":"npm run build:esm & npm run build:commonjs & npm run build:umd & npm run build:umd:min","posttest":"npm run lint","build:esm":"BABEL_ENV=esm babel src --out-dir esm","build:umd":"NODE_ENV=development webpack src/index.js umd/ConnectedReactRouter.js","test:watch":"npm run test -- --watch","build:umd:min":"NODE_ENV=production webpack -p src/index.js umd/ConnectedReactRouter.min.js","build:commonjs":"BABEL_ENV=commonjs babel src --out-dir lib"},"_npmUser":{"name":"supasate","email":"supasate.c@gmail.com"},"homepage":"https://github.com/supasate/connected-react-router#readme","repository":{"url":"git+https://github.com/supasate/connected-react-router.git","type":"git"},"_npmVersion":"6.4.1","description":"A Redux binding for React Router v4","directories":{},"maintainers":[{"name":"supasate","email":"supasate.c@gmail.com"}],"sideEffects":false,"_nodeVersion":"8.12.0","dependencies":{"immutable":"^3.8.1","seamless-immutable":"^7.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"raf":"^3.4.0","jest":"^23.6.0","react":"^16.4.0","redux":"^4.0.0","enzyme":"3.1.1","eslint":"^5.9.0","rewire":"^2.5.2","webpack":"^2.2.1","react-dom":"^16.0.0","@babel/cli":"^7.1.5","babel-core":"7.0.0-bridge.0","babel-jest":"^23.6.0","prop-types":"^15.5.8","@babel/core":"^7.1.5","babel-types":"^6.2.0","react-redux":"^6.0.0","@types/react":"*","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","react-router":"^4.3.1","@types/history":"^4.5.0","babel-template":"^6.2.0","redux-devtools":"^3.4.0","redux-immutable":"^3.0.11","redux-mock-store":"^1.2.1","@babel/preset-env":"^7.1.5","@babel/preset-react":"^7.0.0","babel-plugin-rewire":"^1.2.0","eslint-plugin-react":"^7.11.1","react-test-renderer":"^16.0.0","eslint-plugin-import":"^2.14.0","enzyme-adapter-react-16":"^1.0.4","redux-seamless-immutable":"^0.4.0"},"peerDependencies":{"react":"^16.4.0","redux":"^3.6.0 || ^4.0.0","history":"^4.7.2","react-redux":"^6.0.0","react-router":"^4.3.1"},"_npmOperationalInternal":{"tmp":"tmp/connected-react-router_6.2.0-beta.2_1546765889349_0.9088181699511682","host":"s3://npm-registry-packages"},"_id":"connected-react-router@6.2.0-beta.2","version":"6.2.0-beta.2"}