react-proxy
Advanced tools
Comparing version
@@ -59,16 +59,28 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.getForceUpdate = exports.createProxy = undefined; | ||
function _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; } | ||
var _supportsProtoAssignment = __webpack_require__(9); | ||
var _createClassProxy = __webpack_require__(12); | ||
var _supportsProtoAssignment2 = _interopRequireDefault(_supportsProtoAssignment); | ||
exports.createProxy = _interopRequire(_createClassProxy); | ||
var _createClassProxy = __webpack_require__(13); | ||
var _reactDeepForceUpdate = __webpack_require__(39); | ||
var _createClassProxy2 = _interopRequireDefault(_createClassProxy); | ||
exports.getForceUpdate = _interopRequire(_reactDeepForceUpdate); | ||
var _reactDeepForceUpdate = __webpack_require__(40); | ||
var _reactDeepForceUpdate2 = _interopRequireDefault(_reactDeepForceUpdate); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
if (!(0, _supportsProtoAssignment2.default)()) { | ||
console.warn('This JavaScript environment does not support __proto__. ' + 'This means that react-proxy is unable to proxy React components. ' + 'Features that rely on react-proxy, such as react-transform-hmr, ' + 'will not function as expected.'); | ||
} | ||
exports.createProxy = _createClassProxy2.default; | ||
exports.getForceUpdate = _reactDeepForceUpdate2.default; | ||
/***/ }, | ||
@@ -112,3 +124,3 @@ /* 1 */ | ||
var getLength = __webpack_require__(30), | ||
var getLength = __webpack_require__(31), | ||
isLength = __webpack_require__(5); | ||
@@ -152,3 +164,3 @@ | ||
var isNative = __webpack_require__(35); | ||
var isNative = __webpack_require__(36); | ||
@@ -317,2 +329,22 @@ /** | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = supportsProtoAssignment; | ||
var x = {}; | ||
var y = { supports: true }; | ||
try { | ||
x.__proto__ = y; | ||
} catch (err) {} | ||
function supportsProtoAssignment() { | ||
return x.supports || false; | ||
}; | ||
/***/ }, | ||
/* 10 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
/** Used as the `TypeError` message for "Functions" methods. */ | ||
@@ -379,3 +411,3 @@ var FUNC_ERROR_TEXT = 'Expected a function'; | ||
/***/ }, | ||
/* 10 */ | ||
/* 11 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -386,3 +418,3 @@ | ||
isObject = __webpack_require__(1), | ||
shimKeys = __webpack_require__(33); | ||
shimKeys = __webpack_require__(34); | ||
@@ -432,5 +464,11 @@ /* Native method references for those with the same name as other `lodash` methods. */ | ||
/***/ }, | ||
/* 11 */ | ||
/* 12 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = bindAutoBindMethods; | ||
/** | ||
@@ -448,8 +486,2 @@ * Copyright 2013-2015, Facebook, Inc. | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
value: true | ||
}); | ||
exports['default'] = bindAutoBindMethods; | ||
function bindAutoBindMethod(component, method) { | ||
@@ -501,9 +533,6 @@ var boundMethod = method.bind(component); | ||
} | ||
} | ||
}; | ||
; | ||
module.exports = exports['default']; | ||
/***/ }, | ||
/* 12 */ | ||
/* 13 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -513,24 +542,28 @@ | ||
Object.defineProperty(exports, '__esModule', { | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = proxyClass; | ||
exports.default = createClassProxy; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _createPrototypeProxy = __webpack_require__(14); | ||
exports['default'] = proxyClass; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _createPrototypeProxy = __webpack_require__(13); | ||
var _createPrototypeProxy2 = _interopRequireDefault(_createPrototypeProxy); | ||
var _bindAutoBindMethods = __webpack_require__(11); | ||
var _bindAutoBindMethods = __webpack_require__(12); | ||
var _bindAutoBindMethods2 = _interopRequireDefault(_bindAutoBindMethods); | ||
var _deleteUnknownAutoBindMethods = __webpack_require__(14); | ||
var _deleteUnknownAutoBindMethods = __webpack_require__(15); | ||
var _deleteUnknownAutoBindMethods2 = _interopRequireDefault(_deleteUnknownAutoBindMethods); | ||
var _supportsProtoAssignment = __webpack_require__(9); | ||
var _supportsProtoAssignment2 = _interopRequireDefault(_supportsProtoAssignment); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var RESERVED_STATICS = ['length', 'name', 'arguments', 'caller', 'prototype', 'toString']; | ||
@@ -560,3 +593,3 @@ | ||
var prototypeProxy = (0, _createPrototypeProxy2['default'])(); | ||
var prototypeProxy = (0, _createPrototypeProxy2.default)(); | ||
var CurrentClass = undefined; | ||
@@ -592,84 +625,74 @@ | ||
function update(_x) { | ||
var _again = true; | ||
function update(NextClass) { | ||
if (typeof NextClass !== 'function') { | ||
throw new Error('Expected a constructor.'); | ||
} | ||
_function: while (_again) { | ||
var NextClass = _x; | ||
mountedInstances = undefined; | ||
_again = false; | ||
// Prevent proxy cycles | ||
if (Object.prototype.hasOwnProperty.call(NextClass, '__reactPatchProxy')) { | ||
return update(NextClass.__reactPatchProxy.__getCurrent()); | ||
} | ||
if (typeof NextClass !== 'function') { | ||
throw new Error('Expected a constructor.'); | ||
} | ||
// Save the next constructor so we call it | ||
CurrentClass = NextClass; | ||
// Prevent proxy cycles | ||
if (Object.prototype.hasOwnProperty.call(NextClass, '__reactPatchProxy')) { | ||
_x = NextClass.__reactPatchProxy.__getCurrent(); | ||
_again = true; | ||
continue _function; | ||
} | ||
// Update the prototype proxy with new methods | ||
var mountedInstances = prototypeProxy.update(NextClass.prototype); | ||
// Save the next constructor so we call it | ||
CurrentClass = NextClass; | ||
// Set up the constructor property so accessing the statics work | ||
ProxyClass.prototype.constructor = ProxyClass; | ||
// Update the prototype proxy with new methods | ||
var mountedInstances = prototypeProxy.update(NextClass.prototype); | ||
// Set up the same prototype for inherited statics | ||
ProxyClass.__proto__ = NextClass.__proto__; | ||
// Set up the constructor property so accessing the statics work | ||
ProxyClass.prototype.constructor = ProxyClass; | ||
// Copy static methods and properties | ||
Object.getOwnPropertyNames(NextClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Set up the same prototype for inherited statics | ||
ProxyClass.__proto__ = NextClass.__proto__; | ||
var staticDescriptor = _extends({}, Object.getOwnPropertyDescriptor(NextClass, key), { | ||
configurable: true | ||
}); | ||
// Copy static methods and properties | ||
Object.getOwnPropertyNames(NextClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Copy static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
Object.defineProperty(ProxyClass, key, staticDescriptor); | ||
staticDescriptors[key] = staticDescriptor; | ||
} | ||
}); | ||
var staticDescriptor = _extends({}, Object.getOwnPropertyDescriptor(NextClass, key), { | ||
configurable: true | ||
}); | ||
// Remove old static methods and properties | ||
Object.getOwnPropertyNames(ProxyClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Copy static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
Object.defineProperty(ProxyClass, key, staticDescriptor); | ||
staticDescriptors[key] = staticDescriptor; | ||
} | ||
}); | ||
// Skip statics that exist on the next class | ||
if (NextClass.hasOwnProperty(key)) { | ||
return; | ||
} | ||
// Remove old static methods and properties | ||
Object.getOwnPropertyNames(ProxyClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Skip non-configurable statics | ||
var descriptor = Object.getOwnPropertyDescriptor(ProxyClass, key); | ||
if (descriptor && !descriptor.configurable) { | ||
return; | ||
} | ||
// Skip statics that exist on the next class | ||
if (NextClass.hasOwnProperty(key)) { | ||
return; | ||
} | ||
// Delete static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
delete ProxyClass[key]; | ||
delete staticDescriptors[key]; | ||
} | ||
}); | ||
// Skip non-configurable statics | ||
var descriptor = Object.getOwnPropertyDescriptor(ProxyClass, key); | ||
if (descriptor && !descriptor.configurable) { | ||
return; | ||
} | ||
// Try to infer displayName | ||
ProxyClass.displayName = NextClass.displayName || NextClass.name; | ||
// Delete static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
delete ProxyClass[key]; | ||
delete staticDescriptors[key]; | ||
} | ||
}); | ||
// We might have added new methods that need to be auto-bound | ||
mountedInstances.forEach(_bindAutoBindMethods2.default); | ||
mountedInstances.forEach(_deleteUnknownAutoBindMethods2.default); | ||
// Try to infer displayName | ||
ProxyClass.displayName = NextClass.displayName || NextClass.name; | ||
// We might have added new methods that need to be auto-bound | ||
mountedInstances.forEach(_bindAutoBindMethods2['default']); | ||
mountedInstances.forEach(_deleteUnknownAutoBindMethods2['default']); | ||
// Let the user take care of redrawing | ||
return mountedInstances; | ||
} | ||
// Let the user take care of redrawing | ||
return mountedInstances; | ||
}; | ||
@@ -706,6 +729,21 @@ | ||
module.exports = exports['default']; | ||
function createFallback(Component) { | ||
var CurrentComponent = Component; | ||
return { | ||
get: function get() { | ||
return CurrentComponent; | ||
}, | ||
update: function update(NextComponent) { | ||
CurrentComponent = NextComponent; | ||
} | ||
}; | ||
} | ||
function createClassProxy(Component) { | ||
return Component.__proto__ && (0, _supportsProtoAssignment2.default)() ? proxyClass(Component) : createFallback(Component); | ||
} | ||
/***/ }, | ||
/* 13 */ | ||
/* 14 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -715,16 +753,16 @@ | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports['default'] = createPrototypeProxy; | ||
exports.default = createPrototypeProxy; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _assign = __webpack_require__(37); | ||
var _lodashObjectAssign = __webpack_require__(36); | ||
var _assign2 = _interopRequireDefault(_assign); | ||
var _lodashObjectAssign2 = _interopRequireDefault(_lodashObjectAssign); | ||
var _difference = __webpack_require__(16); | ||
var _lodashArrayDifference = __webpack_require__(15); | ||
var _difference2 = _interopRequireDefault(_difference); | ||
var _lodashArrayDifference2 = _interopRequireDefault(_lodashArrayDifference); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -762,3 +800,3 @@ function createPrototypeProxy() { | ||
// Copy properties of the original function, if any | ||
(0, _lodashObjectAssign2['default'])(proxiedMethod, current[name]); | ||
(0, _assign2.default)(proxiedMethod, current[name]); | ||
proxiedMethod.toString = proxyToString(name); | ||
@@ -830,5 +868,5 @@ | ||
var __reactAutoBindMap = {}; | ||
for (var _name in current.__reactAutoBindMap) { | ||
if (current.__reactAutoBindMap.hasOwnProperty(_name)) { | ||
__reactAutoBindMap[_name] = proxy[_name]; | ||
for (var name in current.__reactAutoBindMap) { | ||
if (typeof proxy[name] === 'function' && current.__reactAutoBindMap.hasOwnProperty(name)) { | ||
__reactAutoBindMap[name] = proxy[name]; | ||
} | ||
@@ -850,4 +888,3 @@ } | ||
var previousName = Object.getOwnPropertyNames(proxy); | ||
var addedNames = (0, _lodashArrayDifference2['default'])(currentNames, previousName); | ||
var removedNames = (0, _lodashArrayDifference2['default'])(previousName, currentNames); | ||
var removedNames = (0, _difference2.default)(previousName, currentNames); | ||
@@ -893,9 +930,6 @@ // Remove properties and methods that are no longer there | ||
}; | ||
} | ||
}; | ||
; | ||
module.exports = exports['default']; | ||
/***/ }, | ||
/* 14 */ | ||
/* 15 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -905,6 +939,6 @@ | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports['default'] = deleteUnknownAutoBindMethods; | ||
exports.default = deleteUnknownAutoBindMethods; | ||
function shouldDeleteClassicInstanceMethod(component, name) { | ||
@@ -973,3 +1007,2 @@ if (component.__reactAutoBindMap.hasOwnProperty(name)) { | ||
*/ | ||
function deleteUnknownAutoBindMethods(component) { | ||
@@ -985,13 +1018,11 @@ var names = Object.getOwnPropertyNames(component); | ||
module.exports = exports['default']; | ||
/***/ }, | ||
/* 15 */ | ||
/* 16 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var baseDifference = __webpack_require__(21), | ||
baseFlatten = __webpack_require__(22), | ||
var baseDifference = __webpack_require__(22), | ||
baseFlatten = __webpack_require__(23), | ||
isArrayLike = __webpack_require__(2), | ||
isObjectLike = __webpack_require__(3), | ||
restParam = __webpack_require__(9); | ||
restParam = __webpack_require__(10); | ||
@@ -1024,6 +1055,6 @@ /** | ||
/***/ }, | ||
/* 16 */ | ||
/* 17 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
/* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(27), | ||
/* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(28), | ||
getNative = __webpack_require__(4); | ||
@@ -1061,3 +1092,3 @@ | ||
/***/ }, | ||
/* 17 */ | ||
/* 18 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1088,6 +1119,6 @@ | ||
/***/ }, | ||
/* 18 */ | ||
/* 19 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var keys = __webpack_require__(10); | ||
var keys = __webpack_require__(11); | ||
@@ -1127,7 +1158,7 @@ /** | ||
/***/ }, | ||
/* 19 */ | ||
/* 20 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var baseCopy = __webpack_require__(20), | ||
keys = __webpack_require__(10); | ||
var baseCopy = __webpack_require__(21), | ||
keys = __webpack_require__(11); | ||
@@ -1153,3 +1184,3 @@ /** | ||
/***/ }, | ||
/* 20 */ | ||
/* 21 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1183,8 +1214,8 @@ | ||
/***/ }, | ||
/* 21 */ | ||
/* 22 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var baseIndexOf = __webpack_require__(23), | ||
cacheIndexOf = __webpack_require__(26), | ||
createCache = __webpack_require__(29); | ||
var baseIndexOf = __webpack_require__(24), | ||
cacheIndexOf = __webpack_require__(27), | ||
createCache = __webpack_require__(30); | ||
@@ -1245,6 +1276,6 @@ /** Used as the size to enable large array optimizations. */ | ||
/***/ }, | ||
/* 22 */ | ||
/* 23 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var arrayPush = __webpack_require__(17), | ||
var arrayPush = __webpack_require__(18), | ||
isArguments = __webpack_require__(7), | ||
@@ -1293,6 +1324,6 @@ isArray = __webpack_require__(8), | ||
/***/ }, | ||
/* 23 */ | ||
/* 24 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var indexOfNaN = __webpack_require__(31); | ||
var indexOfNaN = __webpack_require__(32); | ||
@@ -1327,3 +1358,3 @@ /** | ||
/***/ }, | ||
/* 24 */ | ||
/* 25 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1348,6 +1379,6 @@ | ||
/***/ }, | ||
/* 25 */ | ||
/* 26 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var identity = __webpack_require__(38); | ||
var identity = __webpack_require__(39); | ||
@@ -1394,3 +1425,3 @@ /** | ||
/***/ }, | ||
/* 26 */ | ||
/* 27 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1420,3 +1451,3 @@ | ||
/***/ }, | ||
/* 27 */ | ||
/* 28 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1447,8 +1478,8 @@ | ||
/***/ }, | ||
/* 28 */ | ||
/* 29 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var bindCallback = __webpack_require__(25), | ||
isIterateeCall = __webpack_require__(32), | ||
restParam = __webpack_require__(9); | ||
var bindCallback = __webpack_require__(26), | ||
isIterateeCall = __webpack_require__(33), | ||
restParam = __webpack_require__(10); | ||
@@ -1495,6 +1526,6 @@ /** | ||
/***/ }, | ||
/* 29 */ | ||
/* 30 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
/* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(16), | ||
/* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(17), | ||
getNative = __webpack_require__(4); | ||
@@ -1524,6 +1555,6 @@ | ||
/***/ }, | ||
/* 30 */ | ||
/* 31 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var baseProperty = __webpack_require__(24); | ||
var baseProperty = __webpack_require__(25); | ||
@@ -1546,3 +1577,3 @@ /** | ||
/***/ }, | ||
/* 31 */ | ||
/* 32 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1576,3 +1607,3 @@ | ||
/***/ }, | ||
/* 32 */ | ||
/* 33 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1611,3 +1642,3 @@ | ||
/***/ }, | ||
/* 33 */ | ||
/* 34 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1619,3 +1650,3 @@ | ||
isLength = __webpack_require__(5), | ||
keysIn = __webpack_require__(37); | ||
keysIn = __webpack_require__(38); | ||
@@ -1660,3 +1691,3 @@ /** Used for native method references. */ | ||
/***/ }, | ||
/* 34 */ | ||
/* 35 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1705,6 +1736,6 @@ | ||
/***/ }, | ||
/* 35 */ | ||
/* 36 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var isFunction = __webpack_require__(34), | ||
var isFunction = __webpack_require__(35), | ||
isObjectLike = __webpack_require__(3); | ||
@@ -1760,8 +1791,8 @@ | ||
/***/ }, | ||
/* 36 */ | ||
/* 37 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
var assignWith = __webpack_require__(18), | ||
baseAssign = __webpack_require__(19), | ||
createAssigner = __webpack_require__(28); | ||
var assignWith = __webpack_require__(19), | ||
baseAssign = __webpack_require__(20), | ||
createAssigner = __webpack_require__(29); | ||
@@ -1810,3 +1841,3 @@ /** | ||
/***/ }, | ||
/* 37 */ | ||
/* 38 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1881,3 +1912,3 @@ | ||
/***/ }, | ||
/* 38 */ | ||
/* 39 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1908,3 +1939,3 @@ | ||
/***/ }, | ||
/* 39 */ | ||
/* 40 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -1911,0 +1942,0 @@ |
@@ -0,1 +1,7 @@ | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = bindAutoBindMethods; | ||
/** | ||
@@ -13,8 +19,2 @@ * Copyright 2013-2015, Facebook, Inc. | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
value: true | ||
}); | ||
exports['default'] = bindAutoBindMethods; | ||
function bindAutoBindMethod(component, method) { | ||
@@ -66,5 +66,2 @@ var boundMethod = method.bind(component); | ||
} | ||
} | ||
; | ||
module.exports = exports['default']; | ||
}; |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = proxyClass; | ||
exports.default = createClassProxy; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
exports['default'] = proxyClass; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _createPrototypeProxy = require('./createPrototypeProxy'); | ||
@@ -25,2 +23,8 @@ | ||
var _supportsProtoAssignment = require('./supportsProtoAssignment'); | ||
var _supportsProtoAssignment2 = _interopRequireDefault(_supportsProtoAssignment); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var RESERVED_STATICS = ['length', 'name', 'arguments', 'caller', 'prototype', 'toString']; | ||
@@ -50,3 +54,3 @@ | ||
var prototypeProxy = (0, _createPrototypeProxy2['default'])(); | ||
var prototypeProxy = (0, _createPrototypeProxy2.default)(); | ||
var CurrentClass = undefined; | ||
@@ -82,84 +86,74 @@ | ||
function update(_x) { | ||
var _again = true; | ||
function update(NextClass) { | ||
if (typeof NextClass !== 'function') { | ||
throw new Error('Expected a constructor.'); | ||
} | ||
_function: while (_again) { | ||
var NextClass = _x; | ||
mountedInstances = undefined; | ||
_again = false; | ||
// Prevent proxy cycles | ||
if (Object.prototype.hasOwnProperty.call(NextClass, '__reactPatchProxy')) { | ||
return update(NextClass.__reactPatchProxy.__getCurrent()); | ||
} | ||
if (typeof NextClass !== 'function') { | ||
throw new Error('Expected a constructor.'); | ||
} | ||
// Save the next constructor so we call it | ||
CurrentClass = NextClass; | ||
// Prevent proxy cycles | ||
if (Object.prototype.hasOwnProperty.call(NextClass, '__reactPatchProxy')) { | ||
_x = NextClass.__reactPatchProxy.__getCurrent(); | ||
_again = true; | ||
continue _function; | ||
} | ||
// Update the prototype proxy with new methods | ||
var mountedInstances = prototypeProxy.update(NextClass.prototype); | ||
// Save the next constructor so we call it | ||
CurrentClass = NextClass; | ||
// Set up the constructor property so accessing the statics work | ||
ProxyClass.prototype.constructor = ProxyClass; | ||
// Update the prototype proxy with new methods | ||
var mountedInstances = prototypeProxy.update(NextClass.prototype); | ||
// Set up the same prototype for inherited statics | ||
ProxyClass.__proto__ = NextClass.__proto__; | ||
// Set up the constructor property so accessing the statics work | ||
ProxyClass.prototype.constructor = ProxyClass; | ||
// Copy static methods and properties | ||
Object.getOwnPropertyNames(NextClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Set up the same prototype for inherited statics | ||
ProxyClass.__proto__ = NextClass.__proto__; | ||
var staticDescriptor = _extends({}, Object.getOwnPropertyDescriptor(NextClass, key), { | ||
configurable: true | ||
}); | ||
// Copy static methods and properties | ||
Object.getOwnPropertyNames(NextClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Copy static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
Object.defineProperty(ProxyClass, key, staticDescriptor); | ||
staticDescriptors[key] = staticDescriptor; | ||
} | ||
}); | ||
var staticDescriptor = _extends({}, Object.getOwnPropertyDescriptor(NextClass, key), { | ||
configurable: true | ||
}); | ||
// Remove old static methods and properties | ||
Object.getOwnPropertyNames(ProxyClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Copy static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
Object.defineProperty(ProxyClass, key, staticDescriptor); | ||
staticDescriptors[key] = staticDescriptor; | ||
} | ||
}); | ||
// Skip statics that exist on the next class | ||
if (NextClass.hasOwnProperty(key)) { | ||
return; | ||
} | ||
// Remove old static methods and properties | ||
Object.getOwnPropertyNames(ProxyClass).forEach(function (key) { | ||
if (RESERVED_STATICS.indexOf(key) > -1) { | ||
return; | ||
} | ||
// Skip non-configurable statics | ||
var descriptor = Object.getOwnPropertyDescriptor(ProxyClass, key); | ||
if (descriptor && !descriptor.configurable) { | ||
return; | ||
} | ||
// Skip statics that exist on the next class | ||
if (NextClass.hasOwnProperty(key)) { | ||
return; | ||
} | ||
// Delete static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
delete ProxyClass[key]; | ||
delete staticDescriptors[key]; | ||
} | ||
}); | ||
// Skip non-configurable statics | ||
var descriptor = Object.getOwnPropertyDescriptor(ProxyClass, key); | ||
if (descriptor && !descriptor.configurable) { | ||
return; | ||
} | ||
// Try to infer displayName | ||
ProxyClass.displayName = NextClass.displayName || NextClass.name; | ||
// Delete static unless user has redefined it at runtime | ||
if (!wasStaticModifiedByUser(key)) { | ||
delete ProxyClass[key]; | ||
delete staticDescriptors[key]; | ||
} | ||
}); | ||
// We might have added new methods that need to be auto-bound | ||
mountedInstances.forEach(_bindAutoBindMethods2.default); | ||
mountedInstances.forEach(_deleteUnknownAutoBindMethods2.default); | ||
// Try to infer displayName | ||
ProxyClass.displayName = NextClass.displayName || NextClass.name; | ||
// We might have added new methods that need to be auto-bound | ||
mountedInstances.forEach(_bindAutoBindMethods2['default']); | ||
mountedInstances.forEach(_deleteUnknownAutoBindMethods2['default']); | ||
// Let the user take care of redrawing | ||
return mountedInstances; | ||
} | ||
// Let the user take care of redrawing | ||
return mountedInstances; | ||
}; | ||
@@ -196,2 +190,17 @@ | ||
module.exports = exports['default']; | ||
function createFallback(Component) { | ||
var CurrentComponent = Component; | ||
return { | ||
get: function get() { | ||
return CurrentComponent; | ||
}, | ||
update: function update(NextComponent) { | ||
CurrentComponent = NextComponent; | ||
} | ||
}; | ||
} | ||
function createClassProxy(Component) { | ||
return Component.__proto__ && (0, _supportsProtoAssignment2.default)() ? proxyClass(Component) : createFallback(Component); | ||
} |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports['default'] = createPrototypeProxy; | ||
exports.default = createPrototypeProxy; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _assign = require('lodash/object/assign'); | ||
var _lodashObjectAssign = require('lodash/object/assign'); | ||
var _assign2 = _interopRequireDefault(_assign); | ||
var _lodashObjectAssign2 = _interopRequireDefault(_lodashObjectAssign); | ||
var _difference = require('lodash/array/difference'); | ||
var _lodashArrayDifference = require('lodash/array/difference'); | ||
var _difference2 = _interopRequireDefault(_difference); | ||
var _lodashArrayDifference2 = _interopRequireDefault(_lodashArrayDifference); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -49,3 +49,3 @@ function createPrototypeProxy() { | ||
// Copy properties of the original function, if any | ||
(0, _lodashObjectAssign2['default'])(proxiedMethod, current[name]); | ||
(0, _assign2.default)(proxiedMethod, current[name]); | ||
proxiedMethod.toString = proxyToString(name); | ||
@@ -117,5 +117,5 @@ | ||
var __reactAutoBindMap = {}; | ||
for (var _name in current.__reactAutoBindMap) { | ||
if (current.__reactAutoBindMap.hasOwnProperty(_name)) { | ||
__reactAutoBindMap[_name] = proxy[_name]; | ||
for (var name in current.__reactAutoBindMap) { | ||
if (typeof proxy[name] === 'function' && current.__reactAutoBindMap.hasOwnProperty(name)) { | ||
__reactAutoBindMap[name] = proxy[name]; | ||
} | ||
@@ -137,4 +137,3 @@ } | ||
var previousName = Object.getOwnPropertyNames(proxy); | ||
var addedNames = (0, _lodashArrayDifference2['default'])(currentNames, previousName); | ||
var removedNames = (0, _lodashArrayDifference2['default'])(previousName, currentNames); | ||
var removedNames = (0, _difference2.default)(previousName, currentNames); | ||
@@ -180,5 +179,2 @@ // Remove properties and methods that are no longer there | ||
}; | ||
} | ||
; | ||
module.exports = exports['default']; | ||
}; |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports['default'] = deleteUnknownAutoBindMethods; | ||
exports.default = deleteUnknownAutoBindMethods; | ||
function shouldDeleteClassicInstanceMethod(component, name) { | ||
@@ -70,3 +70,2 @@ if (component.__reactAutoBindMap.hasOwnProperty(name)) { | ||
*/ | ||
function deleteUnknownAutoBindMethods(component) { | ||
@@ -80,4 +79,2 @@ var names = Object.getOwnPropertyNames(component); | ||
}); | ||
} | ||
module.exports = exports['default']; | ||
} |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.getForceUpdate = exports.createProxy = undefined; | ||
function _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; } | ||
var _supportsProtoAssignment = require('./supportsProtoAssignment'); | ||
var _supportsProtoAssignment2 = _interopRequireDefault(_supportsProtoAssignment); | ||
var _createClassProxy = require('./createClassProxy'); | ||
exports.createProxy = _interopRequire(_createClassProxy); | ||
var _createClassProxy2 = _interopRequireDefault(_createClassProxy); | ||
var _reactDeepForceUpdate = require('react-deep-force-update'); | ||
exports.getForceUpdate = _interopRequire(_reactDeepForceUpdate); | ||
var _reactDeepForceUpdate2 = _interopRequireDefault(_reactDeepForceUpdate); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
if (!(0, _supportsProtoAssignment2.default)()) { | ||
console.warn('This JavaScript environment does not support __proto__. ' + 'This means that react-proxy is unable to proxy React components. ' + 'Features that rely on react-proxy, such as react-transform-hmr, ' + 'will not function as expected.'); | ||
} | ||
exports.createProxy = _createClassProxy2.default; | ||
exports.getForceUpdate = _reactDeepForceUpdate2.default; |
{ | ||
"name": "react-proxy", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"description": "Proxies React components without unmounting or losing their state.", | ||
@@ -8,6 +8,11 @@ "main": "modules/index.js", | ||
"build": "rimraf modules dist && webpack && babel src --out-dir modules", | ||
"test": "mocha --compilers js:babel/register --recursive ./test", | ||
"test": "mocha --compilers js:babel-core/register --recursive ./test", | ||
"test:watch": "npm run test -- --watch", | ||
"prepublish": "npm run build" | ||
}, | ||
"files": [ | ||
"dist", | ||
"modules", | ||
"src" | ||
], | ||
"repository": { | ||
@@ -24,5 +29,9 @@ "type": "git", | ||
"devDependencies": { | ||
"babel": "^5.1.13", | ||
"babel-core": "^5.1.13", | ||
"babel-loader": "^5.0.0", | ||
"babel-cli": "^6.3.17", | ||
"babel-core": "^6.3.21", | ||
"babel-loader": "^6.2.0", | ||
"babel-plugin-transform-decorators-legacy": "^1.3.4", | ||
"babel-preset-es2015": "^6.3.3", | ||
"babel-preset-react": "^6.3.13", | ||
"babel-preset-stage-0": "^6.3.13", | ||
"expect": "^1.9.0", | ||
@@ -29,0 +38,0 @@ "mocha": "^2.2.4", |
import createPrototypeProxy from './createPrototypeProxy'; | ||
import bindAutoBindMethods from './bindAutoBindMethods'; | ||
import deleteUnknownAutoBindMethods from './deleteUnknownAutoBindMethods'; | ||
import supportsProtoAssignment from './supportsProtoAssignment'; | ||
@@ -171,2 +172,21 @@ const RESERVED_STATICS = [ | ||
return proxy; | ||
} | ||
} | ||
function createFallback(Component) { | ||
let CurrentComponent = Component; | ||
return { | ||
get() { | ||
return CurrentComponent; | ||
}, | ||
update(NextComponent) { | ||
CurrentComponent = NextComponent; | ||
} | ||
}; | ||
} | ||
export default function createClassProxy(Component) { | ||
return Component.__proto__ && supportsProtoAssignment() ? | ||
proxyClass(Component) : | ||
createFallback(Component); | ||
} |
@@ -101,3 +101,3 @@ import assign from 'lodash/object/assign'; | ||
for (let name in current.__reactAutoBindMap) { | ||
if (current.__reactAutoBindMap.hasOwnProperty(name)) { | ||
if (typeof proxy[name] === 'function' && current.__reactAutoBindMap.hasOwnProperty(name)) { | ||
__reactAutoBindMap[name] = proxy[name]; | ||
@@ -120,3 +120,2 @@ } | ||
const previousName = Object.getOwnPropertyNames(proxy); | ||
const addedNames = difference(currentNames, previousName); | ||
const removedNames = difference(previousName, currentNames); | ||
@@ -123,0 +122,0 @@ |
@@ -1,2 +0,14 @@ | ||
export { default as createProxy } from './createClassProxy'; | ||
export { default as getForceUpdate } from 'react-deep-force-update'; | ||
import supportsProtoAssignment from './supportsProtoAssignment'; | ||
if (!supportsProtoAssignment()) { | ||
console.warn( | ||
'This JavaScript environment does not support __proto__. ' + | ||
'This means that react-proxy is unable to proxy React components. ' + | ||
'Features that rely on react-proxy, such as react-transform-hmr, ' + | ||
'will not function as expected.' | ||
); | ||
} | ||
import createProxy from './createClassProxy'; | ||
import getForceUpdate from 'react-deep-force-update'; | ||
export { createProxy, getForceUpdate }; |
91299
2.35%2480
2.35%12
50%15
-21.05%