UNPKG

react-router

Version:

A complete routing library for React

75 lines (60 loc) 2.31 kB
'use strict'; exports.__esModule = true; exports.canUseMembrane = undefined; var _routerWarning = require('./routerWarning'); var _routerWarning2 = _interopRequireDefault(_routerWarning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var canUseMembrane = exports.canUseMembrane = false; // No-op by default. var deprecateObjectProperties = function deprecateObjectProperties(object) { return object; }; if (process.env.NODE_ENV !== 'production') { try { if (Object.defineProperty({}, 'x', { get: function get() { return true; } }).x) { exports.canUseMembrane = canUseMembrane = true; } /* eslint-disable no-empty */ } catch (e) {} /* eslint-enable no-empty */ if (canUseMembrane) { deprecateObjectProperties = function deprecateObjectProperties(object, message) { // Wrap the deprecated object in a membrane to warn on property access. var membrane = {}; var _loop = function _loop(prop) { if (!Object.prototype.hasOwnProperty.call(object, prop)) { return 'continue'; } if (typeof object[prop] === 'function') { // Can't use fat arrow here because of use of arguments below. membrane[prop] = function () { process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0; return object[prop].apply(object, arguments); }; return 'continue'; } // These properties are non-enumerable to prevent React dev tools from // seeing them and causing spurious warnings when accessing them. In // principle this could be done with a proxy, but support for the // ownKeys trap on proxies is not universal, even among browsers that // otherwise support proxies. Object.defineProperty(membrane, prop, { get: function get() { process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0; return object[prop]; } }); }; for (var prop in object) { var _ret = _loop(prop); if (_ret === 'continue') continue; } return membrane; }; } } exports.default = deprecateObjectProperties;