diff --git a/modules/History.js b/modules/History.js index f9c758ec26..0ec9b1126b 100644 --- a/modules/History.js +++ b/modules/History.js @@ -1,5 +1,5 @@ -var invariant = require('react/lib/invariant'); -var canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; +var invariant = require('invariant'); +var canUseDOM = require('can-use-dom'); var History = { diff --git a/modules/PathUtils.js b/modules/PathUtils.js index 2788ef1594..deb3629e79 100644 --- a/modules/PathUtils.js +++ b/modules/PathUtils.js @@ -1,4 +1,4 @@ -var invariant = require('react/lib/invariant'); +var invariant = require('invariant'); var assign = require('object-assign'); var qs = require('qs'); diff --git a/modules/Route.js b/modules/Route.js index ae313cfd0c..207336d685 100644 --- a/modules/Route.js +++ b/modules/Route.js @@ -1,6 +1,6 @@ var assign = require('react/lib/Object.assign'); -var invariant = require('react/lib/invariant'); -var warning = require('react/lib/warning'); +var invariant = require('invariant'); +var warning = require('./warning'); var PathUtils = require('./PathUtils'); var _currentRoute; diff --git a/modules/ScrollHistory.js b/modules/ScrollHistory.js index 7c6e579dbc..f640d0fd85 100644 --- a/modules/ScrollHistory.js +++ b/modules/ScrollHistory.js @@ -1,5 +1,5 @@ -var invariant = require('react/lib/invariant'); -var canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; +var invariant = require('invariant'); +var canUseDOM = require('can-use-dom'); var getWindowScrollPosition = require('./getWindowScrollPosition'); function shouldUpdateScroll(state, prevState) { diff --git a/modules/components/Route.js b/modules/components/Route.js index 6c32ca9cee..63ddf15b76 100644 --- a/modules/components/Route.js +++ b/modules/components/Route.js @@ -1,5 +1,5 @@ var React = require('react'); -var invariant = require('react/lib/invariant'); +var invariant = require('invariant'); var PropTypes = require('../PropTypes'); var RouteHandler = require('./RouteHandler'); diff --git a/modules/createRouter.js b/modules/createRouter.js index 833f5d2984..60a39f0916 100644 --- a/modules/createRouter.js +++ b/modules/createRouter.js @@ -1,8 +1,8 @@ /* jshint -W058 */ var React = require('react'); -var warning = require('react/lib/warning'); -var invariant = require('react/lib/invariant'); -var canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; +var warning = require('./warning'); +var invariant = require('invariant'); +var canUseDOM = require('can-use-dom'); var LocationActions = require('./actions/LocationActions'); var ImitateBrowserBehavior = require('./behaviors/ImitateBrowserBehavior'); var HashLocation = require('./locations/HashLocation'); diff --git a/modules/createRoutesFromReactChildren.js b/modules/createRoutesFromReactChildren.js index 2e9456db22..5eaeca3e84 100644 --- a/modules/createRoutesFromReactChildren.js +++ b/modules/createRoutesFromReactChildren.js @@ -1,7 +1,7 @@ /* jshint -W084 */ var React = require('react'); var assign = require('react/lib/Object.assign'); -var warning = require('react/lib/warning'); +var warning = require('./warning'); var DefaultRoute = require('./components/DefaultRoute'); var NotFoundRoute = require('./components/NotFoundRoute'); var Redirect = require('./components/Redirect'); diff --git a/modules/getWindowScrollPosition.js b/modules/getWindowScrollPosition.js index cde98a2df7..ec8973c35f 100644 --- a/modules/getWindowScrollPosition.js +++ b/modules/getWindowScrollPosition.js @@ -1,5 +1,5 @@ -var invariant = require('react/lib/invariant'); -var canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; +var invariant = require('invariant'); +var canUseDOM = require('can-use-dom'); /** * Returns the current scroll position of the window as { x, y }. diff --git a/modules/locations/StaticLocation.js b/modules/locations/StaticLocation.js index 49dcd6a426..9dbe07a8e1 100644 --- a/modules/locations/StaticLocation.js +++ b/modules/locations/StaticLocation.js @@ -1,4 +1,4 @@ -var invariant = require('react/lib/invariant'); +var invariant = require('invariant'); function throwCannotModify() { invariant(false, 'You cannot modify a static location'); diff --git a/modules/locations/TestLocation.js b/modules/locations/TestLocation.js index 8a9c93d762..5feceeecb6 100644 --- a/modules/locations/TestLocation.js +++ b/modules/locations/TestLocation.js @@ -1,4 +1,4 @@ -var invariant = require('react/lib/invariant'); +var invariant = require('invariant'); var LocationActions = require('../actions/LocationActions'); var History = require('../History'); diff --git a/modules/warning.js b/modules/warning.js new file mode 100644 index 0000000000..c182e4268b --- /dev/null +++ b/modules/warning.js @@ -0,0 +1,59 @@ +/** + * Copyright 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of https://github.com/facebook/react/tree/0.13-stable. + * An additional grant of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule warning + */ + +"use strict"; + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var __DEV__ = process.env.NODE_ENV !== 'production'; + +var warning = function () {}; + +if (__DEV__) { + warning = function(condition, format, ...args) { + if (format === undefined) { + throw new Error( + '`warning(condition, format, ...args)` requires a warning ' + + 'message argument' + ); + } + + if (format.length < 10 || /^[s\W]*$/.test(format)) { + throw new Error( + 'The warning format should be able to uniquely identify this ' + + 'warning. Please, use a more descriptive format than: ' + format + ); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]); + console.warn(message); + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch(x) {} + } + }; +} + +module.exports = warning; diff --git a/package.json b/package.json index f4bf799c6d..debf22b7f7 100644 --- a/package.json +++ b/package.json @@ -38,16 +38,18 @@ "marked": "0.3.3", "mocha": "^2.0.1", "pygmentize-bundled": "^2.3.0", - "react": "0.13.x", + "react": "0.14.x", "rf-changelog": "^0.4.0", "rx": "2.3.18", "webpack": "^1.4.13", "webpack-dev-server": "^1.6.6" }, "peerDependencies": { - "react": "0.13.x" + "react": "0.13.x||0.14.x" }, "dependencies": { + "can-use-dom": "0.1.0", + "invariant": "^2.0.0", "object-assign": "^2.0.0", "qs": "2.4.1" },