You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

reactotron-redux

Package Overview
Dependencies
Maintainers
16
Versions
88
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reactotron-redux - npm Package Compare versions

Comparing version
3.1.11
to
3.2.0
+7
-0
CHANGELOG.md

@@ -5,2 +5,9 @@ # Changelog

## [3.2.0](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.11...reactotron-redux@3.2.0) (2025-03-16)
### Features
* **reactotron-app:** show redux diffs in timeline ([#1531](https://github.com/infinitered/reactotron/issues/1531) by [@camilossantos2809](https://github.com/camilossantos2809)) ([77831ae](https://github.com/infinitered/reactotron/commit/77831aeb928d0e63c8828b90efa17caeab67f699)), closes [#496](https://github.com/infinitered/reactotron/issues/496)
### [3.1.11](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.10...reactotron-redux@3.1.11) (2025-01-07)

@@ -7,0 +14,0 @@

+1
-1

@@ -1,1 +0,1 @@

import{assertHasStateResponsePlugin}from"reactotron-core-client";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread2(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var stateCleaner=function(a){return a.toJS?a.toJS():a};function pathObject(a,b){if(!a)return b;for(var c,d=a.split("."),e=b,f=0;f<d.length;f++)if(c=d[f],e=e[c],f<d.length-1&&"object"!==_typeof(e)){e=void 0;break}return e}function createSubscriptionHandler(a,b){function c(){if(!a||!a.reduxStore||"function"!=typeof a.reduxStore.getState)return[];var b=a.reduxStore.getState(),c=[];return e.forEach(function(a){var d=a,e=!1;a&&a.endsWith("*")&&(e=!0,d=a.substr(0,a.length-2));var f=pathObject(d,b);e&&d&&f?c.push.apply(c,_toConsumableArray(Object.entries(f).map(function(a){return{path:"".concat(d,".").concat(a[0]),value:a[1]}}))):c.push({path:d,value:f})}),c}function d(){var b=c();0<b.length&&a.stateValuesChange(b)}var e=[];return b(function(){a.reduxStore.subscribe(d)}),{sendSubscriptions:function(){var b=c();a.stateValuesChange(b)},sendSubscriptionsIfNeeded:d,setSubscriptions:function(a){e=a}}}function createCommandHandler(a,b,c){assertHasStateResponsePlugin(a);var d=a,e=createSubscriptionHandler(a,c);return function(a){var c=a.type,f=a.payload,g=d.reduxStore;switch(c){case"state.keys.request":case"state.values.request":{var h=stateCleaner(g.getState());if(!f.path)d.stateKeysResponse(null,"state.keys.request"===c?Object.keys(h):h);else{var i=pathObject(f.path,h),j="state.keys.request"===c?d.stateKeysResponse:d.stateValuesResponse;j(f.path,"state.keys.request"===c?"object"===_typeof(i)?Object.keys(i):void 0:i)}}break;case"state.values.subscribe":e.setSubscriptions(f.paths),e.sendSubscriptions();break;case"state.action.dispatch":g.dispatch(f.action);break;case"state.backup.request":{var k=g.getState();b.onBackup&&(k=b.onBackup(k)),d.send("state.backup.response",{state:k});break}case"state.restore.request":{var l=f.state;b.onRestore&&(l=b.onRestore(f.state,g.getState())),d.reduxStore.dispatch({type:b.restoreActionType,state:l});break}}}}function createSendAction(a){return function(b,c){var d=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],e=b.type;"symbol"===_typeof(e)&&(e=e.toString().replace(/^Symbol\(/,"").replace(/\)$/,"")),a.send("state.action.complete",{name:e,action:b,ms:c},d)}}var DEFAULT_REPLACER_TYPE="REACTOTRON_RESTORE_STATE";function reactotronReducer(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:DEFAULT_REPLACER_TYPE;return function(c,d){var e=d.type===b?d.state:c;return a(e,d)}}function createCustomDispatch(a,b,c){var d=[c.restoreActionType].concat(_toConsumableArray(c.except||[]));return function(e){var f=a.startTimer(),g=b.dispatch(e),h=f(),i="PERFORM_ACTION"===e.type&&e.action?e.action:e,j=d.some(function(a){return"string"==typeof a?i.type===a:"function"==typeof a?a(i.type):!!(a instanceof RegExp)&&a.test(i.type)});if(!j){var k=!1;c&&"function"==typeof c.isActionImportant&&(k=!!c.isActionImportant(i)),a.reportReduxAction(i,h,k)}return g}}function createEnhancer(a,b,c){return function(){var d=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0];return function(e){return function(f){for(var g=arguments.length,h=Array(1<g?g-1:0),i=1;i<g;i++)h[i-1]=arguments[i];var j=e.apply(void 0,[reactotronReducer(f,b.restoreActionType)].concat(h)),k=_objectSpread2(_objectSpread2({},j),{},{dispatch:createCustomDispatch(a,j,b)});return d||(a.reduxStore=k,c()),k}}}}function reactotronRedux(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},b=_objectSpread2(_objectSpread2({},a),{},{restoreActionType:a.restoreActionType||DEFAULT_REPLACER_TYPE}),c=[],d=function(a){c.push(a)},e=function(){c.forEach(function(a){a()})};return function(a){return{onCommand:createCommandHandler(a,b,d),features:{createEnhancer:createEnhancer(a,b,e),setReduxStore:function(b){a.reduxStore=b,e()},reportReduxAction:createSendAction(a)}}}}export{reactotronRedux};
import{assertHasStateResponsePlugin}from"reactotron-core-client";import diff from"microdiff";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread2(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var stateCleaner=function(a){return a.toJS?a.toJS():a};function pathObject(a,b){if(!a)return b;for(var c,d=a.split("."),e=b,f=0;f<d.length;f++)if(c=d[f],e=e[c],f<d.length-1&&"object"!==_typeof(e)){e=void 0;break}return e}function createSubscriptionHandler(a,b){function c(){if(!a||!a.reduxStore||"function"!=typeof a.reduxStore.getState)return[];var b=a.reduxStore.getState(),c=[];return e.forEach(function(a){var d=a,e=!1;a&&a.endsWith("*")&&(e=!0,d=a.substr(0,a.length-2));var f=pathObject(d,b);e&&d&&f?c.push.apply(c,_toConsumableArray(Object.entries(f).map(function(a){return{path:"".concat(d,".").concat(a[0]),value:a[1]}}))):c.push({path:d,value:f})}),c}function d(){var b=c();0<b.length&&a.stateValuesChange(b)}var e=[];return b(function(){a.reduxStore.subscribe(d)}),{sendSubscriptions:function(){var b=c();a.stateValuesChange(b)},sendSubscriptionsIfNeeded:d,setSubscriptions:function(a){e=a}}}function createCommandHandler(a,b,c){assertHasStateResponsePlugin(a);var d=a,e=createSubscriptionHandler(a,c);return function(a){var c=a.type,f=a.payload,g=d.reduxStore;switch(c){case"state.keys.request":case"state.values.request":{var h=stateCleaner(g.getState());if(!f.path)d.stateKeysResponse(null,"state.keys.request"===c?Object.keys(h):h);else{var i=pathObject(f.path,h),j="state.keys.request"===c?d.stateKeysResponse:d.stateValuesResponse;j(f.path,"state.keys.request"===c?"object"===_typeof(i)?Object.keys(i):void 0:i)}}break;case"state.values.subscribe":e.setSubscriptions(f.paths),e.sendSubscriptions();break;case"state.action.dispatch":g.dispatch(f.action);break;case"state.backup.request":{var k=g.getState();b.onBackup&&(k=b.onBackup(k)),d.send("state.backup.response",{state:k});break}case"state.restore.request":{var l=f.state;b.onRestore&&(l=b.onRestore(f.state,g.getState())),d.reduxStore.dispatch({type:b.restoreActionType,state:l});break}}}}function createSendAction(a){return function(b,c){var d=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],e=3<arguments.length?arguments[3]:void 0,f=b.type;"symbol"===_typeof(f)&&(f=f.toString().replace(/^Symbol\(/,"").replace(/\)$/,"")),a.send("state.action.complete",{name:f,action:b,ms:c,diff:e},d)}}var DEFAULT_REPLACER_TYPE="REACTOTRON_RESTORE_STATE";function reactotronReducer(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:DEFAULT_REPLACER_TYPE;return function(c,d){var e=d.type===b?d.state:c;return a(e,d)}}function createCustomDispatch(a,b,c){var d=[c.restoreActionType].concat(_toConsumableArray(c.except||[]));return function(e){var f,g=a.startTimer(),h=null===b||void 0===b||null===(f=b.getState)||void 0===f?void 0:f.call(b),i=b.dispatch(e),j=g(),k="PERFORM_ACTION"===e.type&&e.action?e.action:e,l=d.some(function(a){return"string"==typeof a?k.type===a:"function"==typeof a?a(k.type):!!(a instanceof RegExp)&&a.test(k.type)});if(!l){var m,n=!1;c&&"function"==typeof c.isActionImportant&&(n=!!c.isActionImportant(k));var o=null===b||void 0===b||null===(m=b.getState)||void 0===m?void 0:m.call(b);a.reportReduxAction(k,j,n,diff(h,o))}return i}}function createEnhancer(a,b,c){return function(){var d=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0];return function(e){return function(f){for(var g=arguments.length,h=Array(1<g?g-1:0),i=1;i<g;i++)h[i-1]=arguments[i];var j=e.apply(void 0,[reactotronReducer(f,b.restoreActionType)].concat(h)),k=_objectSpread2(_objectSpread2({},j),{},{dispatch:createCustomDispatch(a,j,b)});return d||(a.reduxStore=k,c()),k}}}}function reactotronRedux(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},b=_objectSpread2(_objectSpread2({},a),{},{restoreActionType:a.restoreActionType||DEFAULT_REPLACER_TYPE}),c=[],d=function(a){c.push(a)},e=function(){c.forEach(function(a){a()})};return function(a){return{onCommand:createCommandHandler(a,b,d),features:{createEnhancer:createEnhancer(a,b,e),setReduxStore:function(b){a.reduxStore=b,e()},reportReduxAction:createSendAction(a)}}}}export{reactotronRedux};

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var reactotronCoreClient=require("reactotron-core-client");function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread2(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var stateCleaner=function(a){return a.toJS?a.toJS():a};function pathObject(a,b){if(!a)return b;for(var c,d=a.split("."),e=b,f=0;f<d.length;f++)if(c=d[f],e=e[c],f<d.length-1&&"object"!==_typeof(e)){e=void 0;break}return e}function createSubscriptionHandler(a,b){function c(){if(!a||!a.reduxStore||"function"!=typeof a.reduxStore.getState)return[];var b=a.reduxStore.getState(),c=[];return e.forEach(function(a){var d=a,e=!1;a&&a.endsWith("*")&&(e=!0,d=a.substr(0,a.length-2));var f=pathObject(d,b);e&&d&&f?c.push.apply(c,_toConsumableArray(Object.entries(f).map(function(a){return{path:"".concat(d,".").concat(a[0]),value:a[1]}}))):c.push({path:d,value:f})}),c}function d(){var b=c();0<b.length&&a.stateValuesChange(b)}var e=[];return b(function(){a.reduxStore.subscribe(d)}),{sendSubscriptions:function(){var b=c();a.stateValuesChange(b)},sendSubscriptionsIfNeeded:d,setSubscriptions:function(a){e=a}}}function createCommandHandler(a,b,c){reactotronCoreClient.assertHasStateResponsePlugin(a);var d=a,e=createSubscriptionHandler(a,c);return function(a){var c=a.type,f=a.payload,g=d.reduxStore;switch(c){case"state.keys.request":case"state.values.request":{var h=stateCleaner(g.getState());if(!f.path)d.stateKeysResponse(null,"state.keys.request"===c?Object.keys(h):h);else{var i=pathObject(f.path,h),j="state.keys.request"===c?d.stateKeysResponse:d.stateValuesResponse;j(f.path,"state.keys.request"===c?"object"===_typeof(i)?Object.keys(i):void 0:i)}}break;case"state.values.subscribe":e.setSubscriptions(f.paths),e.sendSubscriptions();break;case"state.action.dispatch":g.dispatch(f.action);break;case"state.backup.request":{var k=g.getState();b.onBackup&&(k=b.onBackup(k)),d.send("state.backup.response",{state:k});break}case"state.restore.request":{var l=f.state;b.onRestore&&(l=b.onRestore(f.state,g.getState())),d.reduxStore.dispatch({type:b.restoreActionType,state:l});break}}}}function createSendAction(a){return function(b,c){var d=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],e=b.type;"symbol"===_typeof(e)&&(e=e.toString().replace(/^Symbol\(/,"").replace(/\)$/,"")),a.send("state.action.complete",{name:e,action:b,ms:c},d)}}var DEFAULT_REPLACER_TYPE="REACTOTRON_RESTORE_STATE";function reactotronReducer(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:DEFAULT_REPLACER_TYPE;return function(c,d){var e=d.type===b?d.state:c;return a(e,d)}}function createCustomDispatch(a,b,c){var d=[c.restoreActionType].concat(_toConsumableArray(c.except||[]));return function(e){var f=a.startTimer(),g=b.dispatch(e),h=f(),i="PERFORM_ACTION"===e.type&&e.action?e.action:e,j=d.some(function(a){return"string"==typeof a?i.type===a:"function"==typeof a?a(i.type):!!(a instanceof RegExp)&&a.test(i.type)});if(!j){var k=!1;c&&"function"==typeof c.isActionImportant&&(k=!!c.isActionImportant(i)),a.reportReduxAction(i,h,k)}return g}}function createEnhancer(a,b,c){return function(){var d=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0];return function(e){return function(f){for(var g=arguments.length,h=Array(1<g?g-1:0),i=1;i<g;i++)h[i-1]=arguments[i];var j=e.apply(void 0,[reactotronReducer(f,b.restoreActionType)].concat(h)),k=_objectSpread2(_objectSpread2({},j),{},{dispatch:createCustomDispatch(a,j,b)});return d||(a.reduxStore=k,c()),k}}}}function reactotronRedux(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},b=_objectSpread2(_objectSpread2({},a),{},{restoreActionType:a.restoreActionType||DEFAULT_REPLACER_TYPE}),c=[],d=function(a){c.push(a)},e=function(){c.forEach(function(a){a()})};return function(a){return{onCommand:createCommandHandler(a,b,d),features:{createEnhancer:createEnhancer(a,b,e),setReduxStore:function(b){a.reduxStore=b,e()},reportReduxAction:createSendAction(a)}}}}exports.reactotronRedux=reactotronRedux;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});function _interopDefault(a){return a&&"object"==typeof a&&"default"in a?a["default"]:a}var reactotronCoreClient=require("reactotron-core-client"),diff=_interopDefault(require("microdiff"));function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread2(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var stateCleaner=function(a){return a.toJS?a.toJS():a};function pathObject(a,b){if(!a)return b;for(var c,d=a.split("."),e=b,f=0;f<d.length;f++)if(c=d[f],e=e[c],f<d.length-1&&"object"!==_typeof(e)){e=void 0;break}return e}function createSubscriptionHandler(a,b){function c(){if(!a||!a.reduxStore||"function"!=typeof a.reduxStore.getState)return[];var b=a.reduxStore.getState(),c=[];return e.forEach(function(a){var d=a,e=!1;a&&a.endsWith("*")&&(e=!0,d=a.substr(0,a.length-2));var f=pathObject(d,b);e&&d&&f?c.push.apply(c,_toConsumableArray(Object.entries(f).map(function(a){return{path:"".concat(d,".").concat(a[0]),value:a[1]}}))):c.push({path:d,value:f})}),c}function d(){var b=c();0<b.length&&a.stateValuesChange(b)}var e=[];return b(function(){a.reduxStore.subscribe(d)}),{sendSubscriptions:function(){var b=c();a.stateValuesChange(b)},sendSubscriptionsIfNeeded:d,setSubscriptions:function(a){e=a}}}function createCommandHandler(a,b,c){reactotronCoreClient.assertHasStateResponsePlugin(a);var d=a,e=createSubscriptionHandler(a,c);return function(a){var c=a.type,f=a.payload,g=d.reduxStore;switch(c){case"state.keys.request":case"state.values.request":{var h=stateCleaner(g.getState());if(!f.path)d.stateKeysResponse(null,"state.keys.request"===c?Object.keys(h):h);else{var i=pathObject(f.path,h),j="state.keys.request"===c?d.stateKeysResponse:d.stateValuesResponse;j(f.path,"state.keys.request"===c?"object"===_typeof(i)?Object.keys(i):void 0:i)}}break;case"state.values.subscribe":e.setSubscriptions(f.paths),e.sendSubscriptions();break;case"state.action.dispatch":g.dispatch(f.action);break;case"state.backup.request":{var k=g.getState();b.onBackup&&(k=b.onBackup(k)),d.send("state.backup.response",{state:k});break}case"state.restore.request":{var l=f.state;b.onRestore&&(l=b.onRestore(f.state,g.getState())),d.reduxStore.dispatch({type:b.restoreActionType,state:l});break}}}}function createSendAction(a){return function(b,c){var d=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],e=3<arguments.length?arguments[3]:void 0,f=b.type;"symbol"===_typeof(f)&&(f=f.toString().replace(/^Symbol\(/,"").replace(/\)$/,"")),a.send("state.action.complete",{name:f,action:b,ms:c,diff:e},d)}}var DEFAULT_REPLACER_TYPE="REACTOTRON_RESTORE_STATE";function reactotronReducer(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:DEFAULT_REPLACER_TYPE;return function(c,d){var e=d.type===b?d.state:c;return a(e,d)}}function createCustomDispatch(a,b,c){var d=[c.restoreActionType].concat(_toConsumableArray(c.except||[]));return function(e){var f,g=a.startTimer(),h=null===b||void 0===b||null===(f=b.getState)||void 0===f?void 0:f.call(b),i=b.dispatch(e),j=g(),k="PERFORM_ACTION"===e.type&&e.action?e.action:e,l=d.some(function(a){return"string"==typeof a?k.type===a:"function"==typeof a?a(k.type):!!(a instanceof RegExp)&&a.test(k.type)});if(!l){var m,n=!1;c&&"function"==typeof c.isActionImportant&&(n=!!c.isActionImportant(k));var o=null===b||void 0===b||null===(m=b.getState)||void 0===m?void 0:m.call(b);a.reportReduxAction(k,j,n,diff(h,o))}return i}}function createEnhancer(a,b,c){return function(){var d=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0];return function(e){return function(f){for(var g=arguments.length,h=Array(1<g?g-1:0),i=1;i<g;i++)h[i-1]=arguments[i];var j=e.apply(void 0,[reactotronReducer(f,b.restoreActionType)].concat(h)),k=_objectSpread2(_objectSpread2({},j),{},{dispatch:createCustomDispatch(a,j,b)});return d||(a.reduxStore=k,c()),k}}}}function reactotronRedux(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},b=_objectSpread2(_objectSpread2({},a),{},{restoreActionType:a.restoreActionType||DEFAULT_REPLACER_TYPE}),c=[],d=function(a){c.push(a)},e=function(){c.forEach(function(a){a()})};return function(a){return{onCommand:createCommandHandler(a,b,d),features:{createEnhancer:createEnhancer(a,b,e),setReduxStore:function(b){a.reduxStore=b,e()},reportReduxAction:createSendAction(a)}}}}exports.reactotronRedux=reactotronRedux;
import { PluginConfig } from "./pluginConfig";
export default function createCustomDispatch(reactotron: any, store: {
dispatch: Function;
getState?: Function;
}, pluginConfig: PluginConfig): (action: any) => any;

@@ -13,3 +13,3 @@ import type { ReactotronCore } from "reactotron-core-client";

type: any;
}, ms: number, important?: boolean) => void;
}, ms: number, important?: boolean, diff?: any) => void;
};

@@ -16,0 +16,0 @@ };

import type { ReactotronCore } from "reactotron-core-client";
export default function createSendAction<Client extends ReactotronCore = ReactotronCore>(reactotron: Client): (action: {
type: any;
}, ms: number, important?: boolean) => void;
}, ms: number, important?: boolean, diff?: any) => void;
{
"name": "reactotron-redux",
"version": "3.1.11",
"version": "3.2.0",
"description": "A Reactotron plugin for Redux.",

@@ -43,2 +43,5 @@ "author": "Infinite Red",

},
"dependencies": {
"microdiff": "^1.5.0"
},
"peerDependencies": {

@@ -45,0 +48,0 @@ "reactotron-core-client": "*",

@@ -23,3 +23,3 @@ import createCustomDispatch from "./customDispatch"

expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])
})

@@ -98,3 +98,3 @@

expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])
})

@@ -147,3 +147,3 @@

expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])
})

@@ -172,3 +172,3 @@

expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])
})

@@ -220,3 +220,3 @@

expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, true)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, true, [])
})

@@ -245,4 +245,28 @@

expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])
})
it("should send the difference between the old state and the new state", () => {
const mockReactotron = {
startTimer: () => jest.fn().mockReturnValue(1000),
reportReduxAction: jest.fn(),
}
const mockStore = {
dispatch: jest.fn(),
getState: jest.fn().mockReturnValueOnce({ value: "old value" }).mockReturnValueOnce({
value: "new value",
}),
}
const action = {
type: "@module/someAction",
payload: { value: "new value" },
}
const dispatch = createCustomDispatch(mockReactotron, mockStore, {})
dispatch(action)
expect(mockStore.dispatch).toHaveBeenCalledWith(action)
expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [
{ oldValue: "old value", value: "new value", type: "CHANGE", path: ["value"] },
])
})
})

@@ -0,1 +1,3 @@

import diff from "microdiff"
import { PluginConfig } from "./pluginConfig"

@@ -6,3 +8,3 @@

// eslint-disable-next-line @typescript-eslint/ban-types
store: { dispatch: Function },
store: { dispatch: Function; getState?: Function },
pluginConfig: PluginConfig

@@ -16,2 +18,5 @@ ) {

// save the state before the action is dispatched to be used on "diff"
const oldState = store?.getState?.()
// call the original dispatch that actually does the real work

@@ -46,4 +51,4 @@ const result = store.dispatch(action)

}
reactotron.reportReduxAction(unwrappedAction, ms, important)
const state = store?.getState?.()
reactotron.reportReduxAction(unwrappedAction, ms, important, diff(oldState, state))
}

@@ -50,0 +55,0 @@

@@ -6,3 +6,3 @@ import type { ReactotronCore } from "reactotron-core-client"

) {
return (action: { type: any }, ms: number, important = false) => {
return (action: { type: any }, ms: number, important = false, diff?: any) => {
// let's call the type, name because that's "generic" name in Reactotron

@@ -20,4 +20,4 @@ let { type: name } = action

// off ya go!
reactotron.send("state.action.complete", { name, action, ms }, important)
reactotron.send("state.action.complete", { name, action, ms, diff }, important)
}
}