diff --git a/.babelrc b/.babelrc index d8eaf3cb0..32630a648 100644 --- a/.babelrc +++ b/.babelrc @@ -37,6 +37,17 @@ "plugins": [ "external-helpers" ] + }, + "rollup-production": { + "plugins": [ + "external-helpers", + ["transform-react-remove-prop-types", { "removeImport": true }] + ] + }, + "production": { + "plugins": [ + ["transform-react-remove-prop-types", { "removeImport": true }] + ] } } } diff --git a/package-lock.json b/package-lock.json index 093fa473b..51a63d743 100644 --- a/package-lock.json +++ b/package-lock.json @@ -268,7 +268,8 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true }, "asn1": { "version": "0.2.3", @@ -1356,6 +1357,12 @@ "babel-runtime": "^6.22.0" } }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.14.tgz", + "integrity": "sha512-fMlqvLZPX9v7k0Sl4SVzHofQOKTDXvQbpKx+glCm5Ar5L5KQZ8VxjCsYslQwP+KrYXCG6BY7hOp+O1tUVATTDA==", + "dev": true + }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", @@ -2357,6 +2364,7 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, "requires": { "iconv-lite": "~0.4.13" } @@ -2893,6 +2901,7 @@ "version": "0.8.16", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "dev": true, "requires": { "core-js": "^1.0.0", "isomorphic-fetch": "^2.1.1", @@ -2906,7 +2915,8 @@ "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true } } }, @@ -4228,7 +4238,8 @@ "iconv-lite": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", + "dev": true }, "ignore": { "version": "3.3.7", @@ -4614,7 +4625,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-symbol": { "version": "1.0.1", @@ -4665,6 +4677,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, "requires": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" @@ -6223,6 +6236,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, "requires": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -6337,7 +6351,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -6725,6 +6740,7 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, "requires": { "asap": "~2.0.3" } @@ -6740,11 +6756,11 @@ } }, "prop-types": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", - "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "dev": true, "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } @@ -8299,7 +8315,8 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true }, "shallow-equals": { "version": "1.0.0", @@ -9249,7 +9266,8 @@ "ua-parser-js": { "version": "0.7.17", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true }, "uglify-js": { "version": "2.8.29", @@ -9524,7 +9542,8 @@ "whatwg-fetch": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true }, "whatwg-mimetype": { "version": "2.1.0", diff --git a/package.json b/package.json index e6d8d5b84..6c905fb3c 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "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=rollup NODE_ENV=development rollup -c -o dist/react-redux.js", - "build:umd:min": "cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-redux.min.js", + "build:umd:min": "cross-env BABEL_ENV=rollup-production NODE_ENV=production rollup -c -o dist/react-redux.min.js", "build": "npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min", "clean": "rimraf lib dist es coverage", "lint": "eslint src test/utils test/components", @@ -46,7 +46,6 @@ "hoist-non-react-statics": "^2.5.5", "invariant": "^2.2.4", "loose-envify": "^1.1.0", - "prop-types": "^15.6.1", "react-is": "^16.4.2", "shallow-equals": "^1.0.0" }, @@ -78,6 +77,7 @@ "babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-plugin-transform-react-display-name": "^6.4.0", "babel-plugin-transform-react-jsx": "^6.4.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.14", "codecov": "^3.0.2", "create-react-class": "^15.6.3", "cross-env": "^5.2.0", @@ -90,6 +90,7 @@ "jest": "^23.4.1", "jest-dom": "^1.12.0", "npm-run": "^5.0.1", + "prop-types": "^15.6.2", "react": "^16.4.2", "react-dom": "^16.4.2", "react-testing-library": "^5.0.0", diff --git a/rollup.config.js b/rollup.config.js index 352f58a12..5e3aa6f43 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -28,7 +28,6 @@ const config = { commonjs({ namedExports: { 'node_modules/react-is/index.js': ['isValidElementType'], - 'node_modules/prop-types/index.js': ['oneOfType', 'func', 'object'] } }) ] diff --git a/src/components/Provider.js b/src/components/Provider.js index 63ba35a4d..88149ee17 100644 --- a/src/components/Provider.js +++ b/src/components/Provider.js @@ -1,7 +1,6 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { Provider as ContextProvider } from './Context' -import { storeShape } from '../utils/PropTypes' class Provider extends Component { constructor(props) { @@ -69,7 +68,11 @@ class Provider extends Component { } Provider.propTypes = { - store: storeShape.isRequired, + store: PropTypes.shape({ + subscribe: PropTypes.func.isRequired, + dispatch: PropTypes.func.isRequired, + getState: PropTypes.func.isRequired + }), context: PropTypes.object, children: PropTypes.any } diff --git a/src/components/connectAdvanced.js b/src/components/connectAdvanced.js index ded84903d..780e6538c 100644 --- a/src/components/connectAdvanced.js +++ b/src/components/connectAdvanced.js @@ -1,7 +1,7 @@ import hoistStatics from 'hoist-non-react-statics' import invariant from 'invariant' import React, { Component, PureComponent } from 'react' -import * as propTypes from 'prop-types' +import propTypes from 'prop-types' import shallowEqual from 'shallow-equals' import { isValidElementType } from 'react-is' diff --git a/src/utils/PropTypes.js b/src/utils/PropTypes.js deleted file mode 100644 index 3177fa7a3..000000000 --- a/src/utils/PropTypes.js +++ /dev/null @@ -1,7 +0,0 @@ -import PropTypes from 'prop-types' - -export const storeShape = PropTypes.shape({ - subscribe: PropTypes.func.isRequired, - dispatch: PropTypes.func.isRequired, - getState: PropTypes.func.isRequired -})