diff --git a/.babelrc b/.babelrc index bb7dd964..9e3ca29c 100644 --- a/.babelrc +++ b/.babelrc @@ -1,10 +1,18 @@ { "presets": [ - "es2015", - "react", - "stage-1" + "@babel/preset-env", + "@babel/preset-react" ], - "plugins": [ - "rewire" - ] -} + "env": { + "esm": { + "presets": [ + ["@babel/preset-env", { "modules": false }] + ] + }, + "test": { + "plugins": [ + "rewire" + ] + } + } +} \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 7978a502..a532c869 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,4 @@ examples/* +esm/* lib/* umd/* diff --git a/.eslintrc b/.eslintrc index 753a7223..6fec7fa2 100644 --- a/.eslintrc +++ b/.eslintrc @@ -18,5 +18,10 @@ 2, "never" ] + }, + "settings": { + "react": { + "version": "16.0" + } } } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0feb6615..e7619727 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ *.log *.swp node_modules +esm lib umd -.idea \ No newline at end of file +.idea +package-lock.json \ No newline at end of file diff --git a/.jestrc b/.jestrc.json similarity index 100% rename from .jestrc rename to .jestrc.json diff --git a/package.json b/package.json index 628f98b4..b87562f2 100644 --- a/package.json +++ b/package.json @@ -3,23 +3,27 @@ "version": "5.0.1", "description": "A Redux binding for React Router v4", "main": "lib/index.js", + "module": "esm/index.js", "types": "./index.d.ts", + "sideEffects": false, "author": "Supasate Choochaisri", "license": "MIT", "files": [ "*.md", "*.js", "*.ts", + "esm", "lib", "umd" ], "scripts": { + "build:esm": "BABEL_ENV=esm babel src --out-dir esm", "build:commonjs": "BABEL_ENV=commonjs babel src --out-dir lib", "build:umd": "NODE_ENV=development webpack src/index.js umd/ConnectedReactRouter.js", "build:umd:min": "NODE_ENV=production webpack -p src/index.js umd/ConnectedReactRouter.min.js", - "build": "npm run build:commonjs & npm run build:umd & npm run build:umd:min", + "build": "npm run build:esm & npm run build:commonjs & npm run build:umd & npm run build:umd:min", "lint": "eslint .", - "test": "jest --config ./.jestrc", + "test": "jest --config ./.jestrc.json", "test:watch": "npm run test -- --watch", "posttest": "npm run lint" }, @@ -35,25 +39,25 @@ "redux": "^3.6.0 || ^4.0.0" }, "devDependencies": { + "@babel/cli": "^7.1.5", + "@babel/core": "^7.1.5", + "@babel/preset-env": "^7.1.5", + "@babel/preset-react": "^7.0.0", "@types/history": "^4.5.0", "@types/react": "*", - "babel-cli": "^6.18.0", - "babel-core": "^6.20.0", - "babel-eslint": "^7.1.1", - "babel-jest": "^17.0.2", - "babel-loader": "^6.3.1", - "babel-plugin-rewire": "^1.0.0", - "babel-preset-es2015": "^6.18.0", - "babel-preset-react": "^6.16.0", - "babel-preset-stage-1": "^6.16.0", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.0.1", + "babel-jest": "^23.6.0", + "babel-loader": "^8.0.4", + "babel-plugin-rewire": "^1.2.0", "babel-template": "^6.2.0", "babel-types": "^6.2.0", "enzyme": "3.1.1", "enzyme-adapter-react-16": "^1.0.4", - "eslint": "^3.12.0", - "eslint-plugin-import": "^2.2.0", - "eslint-plugin-react": "^6.8.0", - "jest": "^17.0.2", + "eslint": "^5.9.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-react": "^7.11.1", + "jest": "^23.6.0", "prop-types": "^15.5.8", "raf": "^3.4.0", "react": "^16.0.0", diff --git a/src/createAll.js b/src/createAll.js deleted file mode 100644 index ff47c7da..00000000 --- a/src/createAll.js +++ /dev/null @@ -1,15 +0,0 @@ -import * as actions from './actions' -import createConnectedRouter from './ConnectedRouter' -import createConnectRouter from './reducer' -import routerMiddleware from './middleware' -import createSelectors from './selectors' - -const createAll = structure => ({ - ...actions, - ...createSelectors(structure), - ConnectedRouter: createConnectedRouter(structure), - connectRouter: createConnectRouter(structure), - routerMiddleware, -}) - -export default createAll diff --git a/src/immutable.js b/src/immutable.js index c93acfdc..0e50d5e7 100644 --- a/src/immutable.js +++ b/src/immutable.js @@ -1,19 +1,11 @@ -import createAll from './createAll' +import createConnectedRouter from "./ConnectedRouter" +import createConnectRouter from "./reducer" +import createSelectors from "./selectors" import immutableStructure from './structure/immutable' -export const { - LOCATION_CHANGE, - CALL_HISTORY_METHOD, - push, - replace, - go, - goBack, - goForward, - routerActions, - ConnectedRouter, - connectRouter, - routerMiddleware, - getLocation, - getAction, - createMatchSelector, -} = createAll(immutableStructure) +export { LOCATION_CHANGE, CALL_HISTORY_METHOD, push, replace, go, goBack, goForward, routerActions } from "./actions" +export { default as routerMiddleware } from "./middleware" + +export const ConnectedRouter = /*#__PURE__*/ createConnectedRouter(immutableStructure) +export const connectRouter = /*#__PURE__*/ createConnectRouter(immutableStructure) +export const { getLocation, getAction, createMatchSelector } = /*#__PURE__*/ createSelectors(immutableStructure) \ No newline at end of file diff --git a/src/index.js b/src/index.js index 0927fa44..6812d163 100644 --- a/src/index.js +++ b/src/index.js @@ -1,19 +1,11 @@ -import createAll from './createAll' -import plainStructure from './structure/plain' +import createConnectedRouter from "./ConnectedRouter" +import createConnectRouter from "./reducer" +import createSelectors from "./selectors" +import plainStructure from "./structure/plain" -export const { - LOCATION_CHANGE, - CALL_HISTORY_METHOD, - push, - replace, - go, - goBack, - goForward, - routerActions, - ConnectedRouter, - connectRouter, - routerMiddleware, - getLocation, - getAction, - createMatchSelector, -} = createAll(plainStructure) +export { LOCATION_CHANGE, CALL_HISTORY_METHOD, push, replace, go, goBack, goForward, routerActions } from "./actions" +export { default as routerMiddleware } from "./middleware" + +export const ConnectedRouter = /*#__PURE__*/ createConnectedRouter(plainStructure) +export const connectRouter = /*#__PURE__*/ createConnectRouter(plainStructure) +export const { getLocation, getAction, createMatchSelector } = /*#__PURE__*/ createSelectors(plainStructure) \ No newline at end of file diff --git a/src/seamless-immutable.js b/src/seamless-immutable.js index f88bf8f2..f3a58d56 100644 --- a/src/seamless-immutable.js +++ b/src/seamless-immutable.js @@ -1,19 +1,11 @@ -import createAll from './createAll' +import createConnectedRouter from "./ConnectedRouter" +import createConnectRouter from "./reducer" +import createSelectors from "./selectors" import immutableStructure from './structure/seamless-immutable' -export const { - LOCATION_CHANGE, - CALL_HISTORY_METHOD, - push, - replace, - go, - goBack, - goForward, - routerActions, - ConnectedRouter, - connectRouter, - routerMiddleware, - getLocation, - getAction, - createMatchSelector, -} = createAll(immutableStructure) +export { LOCATION_CHANGE, CALL_HISTORY_METHOD, push, replace, go, goBack, goForward, routerActions } from "./actions" +export { default as routerMiddleware } from "./middleware" + +export const ConnectedRouter = /*#__PURE__*/ createConnectedRouter(immutableStructure) +export const connectRouter = /*#__PURE__*/ createConnectRouter(immutableStructure) +export const { getLocation, getAction, createMatchSelector } = /*#__PURE__*/ createSelectors(immutableStructure) \ No newline at end of file