infinitered / reactotron-react-native

Reactotron's react-native client.
MIT License
110 stars 27 forks source link

TypeError: o is not a function. (In 'o()', 'o' is undefined) #768

Open noway opened 3 years ago

noway commented 3 years ago

Encountering this error straight after Getting Started installation. No connections are going through, I don't see my device in Reactotron Mac App: IMG_9E9138262D87-1

TypeError: o is not a function. (In 'o()', 'o' is undefined)
r
    index.js:1:13042
d
    index.js:1:13222
EventTarget.prototype.dispatchEvent
    event-target-shim.js:818:39
_setReadyState
    FileReader.js:80:25
NativeFileReaderModule.readAsText.then$argument_0
    FileReader.js:118:28
tryCallOne
    core.js:37:14
setImmediate$argument_0
    core.js:123:25

reactotron config:


import Reactotron from 'reactotron-react-native'
import AsyncStorage from '@react-native-community/async-storage'

Reactotron
  .setAsyncStorageHandler(AsyncStorage) // AsyncStorage would either come from `react-native` or `@react-native-community/async-storage` depending on where you get it from
  .configure({
    name: "React Native Demo"
  }) // controls connection & communication settings
  .useReactNative() // add all built-in react native plugins
  .connect() // let's connect!

App.tsx:

if(__DEV__) {
  import('./ReactotronConfig').then(() => console.log('Reactotron Configured'))
}
import React from 'react'
import { StatusBar, Platform } from 'react-native'
// ... etc

react native info:

warn Your project is using deprecated "rnpm" config that will stop working from next release. Please use a "react-native.config.js" file to configure the React Native CLI. Migration guide: https://github.com/react-native-community/cli/blob/master/docs/configuration.md
warn The following packages use deprecated "rnpm" config that will stop working from next release:
  - react-native-comparison-slider: https://npmjs.com/package/react-native-comparison-slider
  - react-native-fetch-blob: https://npmjs.com/package/react-native-fetch-blob
  - react-native-music-control: https://npmjs.com/package/react-native-music-control
  - react-native-orientation: https://github.com/yamill/react-native-orientation#readme
  - react-native-vector-icons: https://github.com/oblador/react-native-vector-icons
  - react-native-video: https://npmjs.com/package/react-native-video
  - react-native-zip-archive: https://github.com/mockingbot/react-native-zip-archive
Please notify their maintainers about it. You can find more details at https://github.com/react-native-community/cli/blob/master/docs/configuration.md#migration-guide.
info Fetching system and libraries information...
System:
    OS: macOS 11.2.2
    CPU: (8) x64 Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz
    Memory: 157.16 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 14.7.0 - /usr/local/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.14.8 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 14.4, DriverKit 20.2, macOS 11.1, tvOS 14.3, watchOS 7.2
  IDEs:
    Android Studio: 3.6 AI-192.7142.36.36.6308749
    Xcode: 12.4/12D4e - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0
    react-native: 0.61.5 => 0.61.5

This is the minified snippet of where the error happens. I don't know where that relates to the unminified code, pretty hard to debug a minified version.

            function d(a, c, d, e, g, i) {
                if (!i._skipReactotron) {
                    var j = null,
                        k = e ? e.indexOf("?") : -1; - 1 < k && (j = queryString.parse(e.substr(k)));
                    var l = i._trackingName,
                        m = h[l] || {};
                    h[l] = null;
                    var n = m.data,
                        o = m.stopTimer,
                        p = {
                            url: e || m.xhr._url,
                            method: i._method || null,
                            data: n,
                            headers: i._headers || null,
                            params: j
                        },
                        q = i.responseHeaders && i.responseHeaders["content-type"] || i.responseHeaders && i.responseHeaders["Content-Type"] || "",
                        r = function(c) {
                            var e = "~~~ skipped ~~~";
                            if (c) try {
                                e = JSON.parse(c)
                            } catch (a) {
                                e = d
                            }
                            var f = {
                                body: e,
                                status: a,
                                headers: i.responseHeaders || null
                            };
                            b.apiResponse(p, f, o())
                        },
                        s = ("string" == typeof d || "object" === _typeof(d)) && !f.test(q || "");
                    if (!s) r("");
                    else if ("blob" === g && "undefined" != typeof FileReader && d) {
                        var t = new FileReader,
                            u = function a() {
                                r(t.result), t.removeEventListener("loadend", a)
                            };
                        t.addEventListener("loadend", u), t.readAsText(d)
                    } else r(d)
                }
            }

This is where the error is coming from: https://github.com/infinitered/reactotron-react-native/blob/master/src/plugins/networking.ts#L115

aluferraz commented 3 years ago

+1

pascal-mormin commented 3 years ago

Any solution ?

Tj3n commented 3 years ago

Any fixed yet...? this is getting really annoying when developing..

stearruda commented 3 years ago

I've experienced that a couple of times. The only fixes were to reload the bundler or rebuild the app. I would love to know what to fix this once and for all.

mcarcaso commented 3 years ago

This was annoying me too so I did a little digging and found that removing lines 22-26 from here did the trick for me: https://github.com/infinitered/ignite/blob/master/boilerplate/storybook/storybook.tsx#L22 I figured this wouldn't break reactotron because I noticed that reactotron is already set up here: https://github.com/infinitered/ignite/blob/master/boilerplate/app/models/environment.ts#L26 So my hunch is that the setup in storybook.tsx is conflicting with the setup in environment.ts but I'm not 100% sure about that. Can anybody confirm if this makes sense? Reactotron still seems to work for me with that code removed but I'm not a heavy user of it so maybe there's something broken that I'm not seeing.

Tj3n commented 3 years ago

This was annoying me too so I did a little digging and found that removing lines 22-26 from here did the trick for me: https://github.com/infinitered/ignite/blob/master/boilerplate/storybook/storybook.tsx#L22 I figured this wouldn't break reactotron because I noticed that reactotron is already set up here: https://github.com/infinitered/ignite/blob/master/boilerplate/app/models/environment.ts#L26 So my hunch is that the setup in storybook.tsx is conflicting with the setup in environment.ts but I'm not 100% sure about that. Can anybody confirm if this makes sense? Reactotron still seems to work for me with that code removed but I'm not a heavy user of it so maybe there's something broken that I'm not seeing.

I'm still having this problem after commenting out that code, just simply save a model then problem appear again.

casamia918 commented 3 years ago

I've been following this tutorial : https://shift.infinite.red/creating-a-trivia-app-with-ignite-bowser-part-ii-a286a978d0c8

I got this error message when I edit my react native code (question-screen) while fast refresh . I assume that this comes from memory garbage issue. Because fast refresh is well working on static data screen (demo-screen). But have problem in flatList which the item data comes from api source and saved in mobx store.

jamonholmgren commented 3 years ago

Still looking into this -- it does look like it's an issue with Reactotron.

aclement-rally commented 2 years ago

FWIW @jamonholmgren, I did some very preliminary investigation from the minified code the issue seems to come from this specific code:

https://github.com/infinitered/reactotron-react-native/blob/82b6aed071dd7b839922afedddf426fcb761ac85/src/plugins/networking.ts#L115

Specifically, the case where a cached request is an empty object at:

https://github.com/infinitered/reactotron-react-native/blob/82b6aed071dd7b839922afedddf426fcb761ac85/src/plugins/networking.ts#L79

Then stopTimer would be undefined

odjhey commented 2 years ago

our team was also having similar problems, we were not able to identify why the cache is getting cleared on hot-reload.

so we patched with below

diff --git a/src/plugins/networking.ts b/src/plugins/networking.ts
index 9a0c943..1923af8 100644
--- a/src/plugins/networking.ts
+++ b/src/plugins/networking.ts
@@ -112,7 +112,7 @@ export default <ReactotronSubtype = ReactotronCore>(pluginConfig: NetworkingOpti
       }

       // send this off to Reactotron
-      ;(reactotron as any).apiResponse(tronRequest, tronResponse, stopTimer()) // TODO: Fix
+      ;(reactotron as any).apiResponse(tronRequest, tronResponse, stopTimer ? stopTimer() : null) // TODO: Fix
     }

     // can we use the real response?

working fine so far. if you're using patch-package you may use below file patches/reactotron-react-native+5.0.1.patch to patch with the approach above

diff --git a/node_modules/reactotron-react-native/dist/index.js b/node_modules/reactotron-react-native/dist/index.js
index 8cb06db..c8af221 100644
--- a/node_modules/reactotron-react-native/dist/index.js
+++ b/node_modules/reactotron-react-native/dist/index.js
@@ -1 +1 @@
-'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var reactNative=require("react-native"),reactotronCoreClient=require("reactotron-core-client"),getHost=require("rn-host-detect"),React=require("react"),XHRInterceptor=require("react-native/Libraries/Network/XHRInterceptor"),queryString=require("query-string");function _interopDefaultLegacy(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var getHost__default=_interopDefaultLegacy(getHost),React__default=_interopDefaultLegacy(React),XHRInterceptor__default=_interopDefaultLegacy(XHRInterceptor),queryString__default=_interopDefaultLegacy(queryString);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 _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 asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),b&&_setPrototypeOf(a,b)}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf||function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _possibleConstructorReturn(a,b){if(b&&("object"==typeof b||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function getReactNativeVersionWithModules(a){try{if(!a.PlatformConstants)return null;if(!a.PlatformConstants.reactNativeVersion)return null;var b=a.PlatformConstants.reactNativeVersion.major,c=a.PlatformConstants.reactNativeVersion.minor,d=a.PlatformConstants.reactNativeVersion.patch,e=a.PlatformConstants.reactNativeVersion.prerelease;if("number"!=typeof b)return null;var f=[];return f.push("".concat(b,".").concat(c,".").concat(d)),e&&f.push("-".concat(e)),f.join("")}catch(a){}return null}function getReactNativeVersion(){return getReactNativeVersionWithModules(reactNative.NativeModules)}function getReactNativeDimensionsWithDimensions(a,b){var c=Math.ceil;try{var d={},e={};return a&&(d={screenWidth:c(a.width),screenHeight:c(a.height),screenScale:a.scale,screenFontScale:a.fontScale}),b&&(e={windowWidth:c(b.width),windowHeight:c(b.height),windowScale:b.scale,windowFontScale:b.fontScale}),_objectSpread2(_objectSpread2({},d),e)}catch(a){}return null}function getReactNativeDimensions(){var a=null,b=null;try{a=reactNative.Dimensions.get("screen")}catch(a){}try{b=reactNative.Dimensions.get("window")}catch(a){}return getReactNativeDimensionsWithDimensions(a,b)}var PLUGIN_DEFAULTS$1={ignore:[]},asyncStorage=function(a){return function(b){var c,d,e,f,g,h,i,j=Object.assign({},PLUGIN_DEFAULTS$1,a||{}),k=j.ignore||PLUGIN_DEFAULTS$1.ignore,l=!1,m=function(a,c){b.send("asyncStorage.mutation",{action:a,data:c})},n=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,d,e){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{0>k.indexOf(b)&&m("setItem",{key:b,value:d})}catch(a){}return a.abrupt("return",c(b,d,e));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),o=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{0>k.indexOf(b)&&m("removeItem",{key:b})}catch(a){}return a.abrupt("return",d(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),p=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c,d){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{0>k.indexOf(b)&&m("mergeItem",{key:b,value:c})}catch(a){}return a.abrupt("return",e(b,c,d));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),q=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{m("clear")}catch(a){}return a.abrupt("return",f(b));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),r=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){var d;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{d=(b||[]).filter(function(a){return a&&a[0]&&0>k.indexOf(a[0])}),0<d.length&&m("multiSet",{pairs:d})}catch(a){}return a.abrupt("return",g(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),s=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){var d;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{d=(b||[]).filter(function(a){return 0>k.indexOf(a)}),0<d.length&&m("multiRemove",{keys:d})}catch(a){}return a.abrupt("return",h(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),t=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){var d;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{d=(b||[]).filter(function(a){return a&&a[0]&&0>k.indexOf(a[0])}),0<d.length&&m("multiMerge",{pairs:d})}catch(a){}return a.abrupt("return",i(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),u=function(){l||(c=b.asyncStorageHandler.setItem,b.asyncStorageHandler.setItem=n,d=b.asyncStorageHandler.removeItem,b.asyncStorageHandler.removeItem=o,e=b.asyncStorageHandler.mergeItem,b.asyncStorageHandler.mergeItem=p,f=b.asyncStorageHandler.clear,b.asyncStorageHandler.clear=q,g=b.asyncStorageHandler.multiSet,b.asyncStorageHandler.multiSet=r,h=b.asyncStorageHandler.multiRemove,b.asyncStorageHandler.multiRemove=s,i=b.asyncStorageHandler.multiMerge,b.asyncStorageHandler.multiMerge=t,l=!0)},v=function(){l&&(b.asyncStorageHandler.setItem=c,b.asyncStorageHandler.removeItem=d,b.asyncStorageHandler.mergeItem=e,b.asyncStorageHandler.clear=f,b.asyncStorageHandler.multiSet=g,b.asyncStorageHandler.multiRemove=h,b.asyncStorageHandler.multiMerge=i,l=!1)};return b.asyncStorageHandler&&u(),{features:{trackAsyncStorage:u,untrackAsyncStorage:v}}}};function mitt(a){return a=a||Object.create(null),{on:function(b,c){(a[b]||(a[b]=[])).push(c)},off:function(b,c){a[b]&&a[b].splice(a[b].indexOf(c)>>>0,1)},emit:function(b,c){(a[b]||[]).slice().map(function(a){a(c)}),(a["*"]||[]).slice().map(function(a){a(b,c)})}}}var parseErrorStack,symbolicateStackTrace,Styles={container:{position:"absolute",left:0,top:0,right:0,bottom:0,zIndex:1e3,opacity:.25}},FullScreenOverlay=function(a){function b(a){var d;return _classCallCheck(this,b),d=c.call(this,a),d.state={opacity:Styles.container.opacity,uri:null,justifyContent:"center",alignItems:"center"},a.emitter.on("overlay",function(a){d.setState(_objectSpread2(_objectSpread2({},d.state),a))}),d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"createContainerStyle",value:function(){var a=this.state,b=a.opacity,c=a.justifyContent,d=a.alignItems,e=reactNative.Dimensions.get("window"),f=e.width,g=e.height,h=_objectSpread2(_objectSpread2({},Styles.container),{},{opacity:b,width:f,height:g,justifyContent:c,alignItems:d});return h}},{key:"render",value:function(){var a=this.state,b=a.uri,c=a.width,d=a.height,e=a.growToWindow,f=a.resizeMode,g=a.marginLeft,h=void 0===g?0:g,i=a.marginRight,j=void 0===i?0:i,k=a.marginTop,l=void 0===k?0:k,m=a.marginBottom,n=void 0===m?0:m,o={width:c,height:d,marginTop:l,marginRight:j,marginBottom:n,marginLeft:h};if(e){var p=reactNative.Dimensions.get("window");o.width=p.width,o.height=p.height}var q=b?React__default["default"].createElement(reactNative.Image,{source:{uri:b},style:o,resizeMode:e?f:null}):React__default["default"].createElement(reactNative.View,null);return React__default["default"].createElement(reactNative.View,{style:this.createContainerStyle(),pointerEvents:"none"},q)}}]),b}(React.Component),overlay=function(){return function(){var a=new mitt;return{onCommand:function(b){"overlay"!==b.type||a.emit("overlay",b.payload)},features:{overlay:function(b){return function(c){return React__default["default"].createElement(reactNative.View,{style:{flex:1}},React__default["default"].createElement(b,c),React__default["default"].createElement(FullScreenOverlay,{emitter:a}))}}}}}},DEFAULTS$2={url:"http://localhost:8081"},openInEditor=function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return function(){var b=Object.assign({},DEFAULTS$2,a);return{onCommand:function(a){if("editor.open"===a.type){var c=a.payload,d=c.file,e=c.lineNumber,f="".concat(b.url,"/open-stack-frame");fetch(f,{method:"POST",body:JSON.stringify({file:d,lineNumber:e||1})})}}}}},PLUGIN_DEFAULTS={veto:null},trackGlobalErrors=function(a){return function(b){function c(a,c,d){h(a,c,d);try{var e=c.map(function(a){return{functionName:"<unknown>"===a.methodName?null:a.methodName,lineNumber:a.lineNumber,columnNumber:a.column,fileName:a.file}});g.veto&&(e=e.filter(function(a){return g.veto(a)})),b.error(a,e)}catch(a){}}function d(){i||!reactNative.NativeModules.ExceptionsManager||(h=reactNative.NativeModules.ExceptionsManager.updateExceptionMessage,reactNative.NativeModules.ExceptionsManager.updateExceptionMessage=c,i=!0)}function e(){h&&reactNative.NativeModules.ExceptionsManager&&(reactNative.NativeModules.ExceptionsManager.updateExceptionMessage=h,i=!1)}function f(a){try{if(parseErrorStack=parseErrorStack||require("react-native/Libraries/Core/Devtools/parseErrorStack"),symbolicateStackTrace=symbolicateStackTrace||require("react-native/Libraries/Core/Devtools/symbolicateStackTrace"),parseErrorStack&&symbolicateStackTrace){var c=parseErrorStack(a);symbolicateStackTrace(c).then(function(c){var d=c.map(function(a){return{fileName:a.file,functionName:a.methodName,lineNumber:a.lineNumber}});g.veto&&(d=d.filter(function(a){return g.veto(a)})),b.error(a.message,d)})}}catch(a){}}var g=Object.assign({},PLUGIN_DEFAULTS,a||{}),h=null,i=!1;return d(),{features:{reportError:f,trackGlobalErrors:d,untrackGlobalErrors:e}}}},DEFAULT_CONTENT_TYPES_RX=/^(image)\/.*$/i,DEFAULTS$1={},networking=function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return function(b){function c(a,c){return e.ignoreUrls&&e.ignoreUrls.test(c._url)?void(c._skipReactotron=!0):void(g++,c._trackingName=g,h[g]={data:a,xhr:c,stopTimer:b.startTimer()})}function d(a,c,d,e,g,i){if(!i._skipReactotron){var j=null,k=e?e.indexOf("?"):-1;-1<k&&(j=queryString__default["default"].parse(e.substr(k)));var l=i._trackingName,m=h[l]||{};h[l]=null;var n=m.data,o=m.stopTimer,p={url:e||m.xhr._url,method:i._method||null,data:n,headers:i._headers||null,params:j},q=i.responseHeaders&&i.responseHeaders["content-type"]||i.responseHeaders&&i.responseHeaders["Content-Type"]||"",r=function(c){var e="~~~ skipped ~~~";if(c)try{e=JSON.parse(c)}catch(a){e=d}var f={body:e,status:a,headers:i.responseHeaders||null};b.apiResponse(p,f,o())},s=("string"==typeof d||"object"===_typeof(d))&&!f.test(q||"");if(!s)r("");else if("blob"===g&&"undefined"!=typeof FileReader&&d){var t=new FileReader,u=function a(){r(t.result),t.removeEventListener("loadend",a)};t.addEventListener("loadend",u),t.readAsText(d)}else r(d)}}var e=Object.assign({},DEFAULTS$1,a),f=e.ignoreContentTypes||DEFAULT_CONTENT_TYPES_RX,g=1e3,h={};return XHRInterceptor__default["default"].setSendCallback(c),XHRInterceptor__default["default"].setResponseCallback(d),XHRInterceptor__default["default"].enableInterception(),{}}},StorybookSwitcher=function(a){function b(a){var d;return _classCallCheck(this,b),d=c.call(this,a),d.state={showStorybook:!1},a.emitter.on("storybook",function(a){d.setState({showStorybook:a})}),d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"render",value:function(){var a=this.state.showStorybook,b=this.props,c=b.storybookUi,d=b.children;return React__default["default"].createElement(reactNative.View,{style:{flex:1}},a?React__default["default"].createElement(c,null):d)}}]),b}(React.Component),storybook=function(){return function(){var a=new mitt;return{onCommand:function(b){"storybook"!==b.type||a.emit("storybook",b.payload)},features:{storybookSwitcher:function(b){return function(c){return function(d){return React__default["default"].createElement(StorybookSwitcher,{storybookUi:b,emitter:a},React__default["default"].createElement(c,d))}}}}}}},devTools=function(){return function(){return{onCommand:function(a){"devtools.open"!==a.type&&"devtools.reload"!==a.type||("devtools.open"===a.type&&reactNative.NativeModules.DevMenu.show(),"devtools.reload"===a.type&&reactNative.NativeModules.DevMenu.reload())}}}},ConnectionManager=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"webSocket",void 0),this.webSocket=new WebSocket(b)}return _createClass(a,[{key:"send",value:function(a){1===this.webSocket.readyState&&this.webSocket.send(a)}},{key:"on",value:function(a,b){"open"===a?this.webSocket.onopen=b:"message"==a&&(this.webSocket.onmessage=function(a){return b(a.data)})}},{key:"close",value:function(){this.webSocket.close()}}]),a}(),constants=reactNative.NativeModules.PlatformConstants||{},REACTOTRON_ASYNC_CLIENT_ID="@REACTOTRON/clientId",tempClientId=null,DEFAULTS={createSocket:function(a){return new ConnectionManager(a)},host:getHost__default["default"]("localhost"),port:9090,name:"React Native App",environment:process.env.NODE_ENV||(__DEV__?"development":"production"),client:_objectSpread2({reactotronLibraryName:"reactotron-react-native",reactotronLibraryVersion:"REACTOTRON_REACT_NATIVE_VERSION",platform:reactNative.Platform.OS,platformVersion:reactNative.Platform.Version,osRelease:constants.Release,model:constants.Model,serverHost:constants.ServerHost,forceTouch:constants.forceTouchAvailable||!1,interfaceIdiom:constants.interfaceIdiom,systemName:constants.systemName,uiMode:constants.uiMode,serial:constants.Serial,androidId:constants.androidID,reactNativeVersion:getReactNativeVersion()},getReactNativeDimensions()),getClientId:function(){return reactotron.asyncStorageHandler?reactotron.asyncStorageHandler.getItem(REACTOTRON_ASYNC_CLIENT_ID):new Promise(function(a){return a(tempClientId)})},setClientId:function(a){return reactotron.asyncStorageHandler?reactotron.asyncStorageHandler.setItem(REACTOTRON_ASYNC_CLIENT_ID,a):(tempClientId=a,Promise.resolve())},proxyHack:!0},reactotron=reactotronCoreClient.createClient(DEFAULTS);function getPluginOptions(a){return"object"===_typeof(a)?a:null}reactotron.useReactNative=function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return!1!==a.errors&&reactotron.use(trackGlobalErrors(getPluginOptions(a.errors))),!1!==a.editor&&reactotron.use(openInEditor(getPluginOptions(a.editor))),!1!==a.overlay&&reactotron.use(overlay()),!1!==a.asyncStorage&&reactotron.use(asyncStorage(getPluginOptions(a.asyncStorage))),!1!==a.networking&&reactotron.use(networking(getPluginOptions(a.networking))),!1!==a.storybook&&reactotron.use(storybook()),!1!==a.devTools&&reactotron.use(devTools()),reactotron},reactotron.setAsyncStorageHandler=function(a){return reactotron.asyncStorageHandler=a,reactotron},exports.asyncStorage=asyncStorage,exports["default"]=reactotron,exports.devTools=devTools,exports.networking=networking,exports.openInEditor=openInEditor,exports.overlay=overlay,exports.storybook=storybook,exports.trackGlobalErrors=trackGlobalErrors;
+'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var reactNative=require("react-native"),reactotronCoreClient=require("reactotron-core-client"),getHost=require("rn-host-detect"),React=require("react"),XHRInterceptor=require("react-native/Libraries/Network/XHRInterceptor"),queryString=require("query-string");function _interopDefaultLegacy(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var getHost__default=_interopDefaultLegacy(getHost),React__default=_interopDefaultLegacy(React),XHRInterceptor__default=_interopDefaultLegacy(XHRInterceptor),queryString__default=_interopDefaultLegacy(queryString);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 _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 asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),b&&_setPrototypeOf(a,b)}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf||function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _possibleConstructorReturn(a,b){if(b&&("object"==typeof b||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function getReactNativeVersionWithModules(a){try{if(!a.PlatformConstants)return null;if(!a.PlatformConstants.reactNativeVersion)return null;var b=a.PlatformConstants.reactNativeVersion.major,c=a.PlatformConstants.reactNativeVersion.minor,d=a.PlatformConstants.reactNativeVersion.patch,e=a.PlatformConstants.reactNativeVersion.prerelease;if("number"!=typeof b)return null;var f=[];return f.push("".concat(b,".").concat(c,".").concat(d)),e&&f.push("-".concat(e)),f.join("")}catch(a){}return null}function getReactNativeVersion(){return getReactNativeVersionWithModules(reactNative.NativeModules)}function getReactNativeDimensionsWithDimensions(a,b){var c=Math.ceil;try{var d={},e={};return a&&(d={screenWidth:c(a.width),screenHeight:c(a.height),screenScale:a.scale,screenFontScale:a.fontScale}),b&&(e={windowWidth:c(b.width),windowHeight:c(b.height),windowScale:b.scale,windowFontScale:b.fontScale}),_objectSpread2(_objectSpread2({},d),e)}catch(a){}return null}function getReactNativeDimensions(){var a=null,b=null;try{a=reactNative.Dimensions.get("screen")}catch(a){}try{b=reactNative.Dimensions.get("window")}catch(a){}return getReactNativeDimensionsWithDimensions(a,b)}var PLUGIN_DEFAULTS$1={ignore:[]},asyncStorage=function(a){return function(b){var c,d,e,f,g,h,i,j=Object.assign({},PLUGIN_DEFAULTS$1,a||{}),k=j.ignore||PLUGIN_DEFAULTS$1.ignore,l=!1,m=function(a,c){b.send("asyncStorage.mutation",{action:a,data:c})},n=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,d,e){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{0>k.indexOf(b)&&m("setItem",{key:b,value:d})}catch(a){}return a.abrupt("return",c(b,d,e));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),o=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{0>k.indexOf(b)&&m("removeItem",{key:b})}catch(a){}return a.abrupt("return",d(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),p=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c,d){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{0>k.indexOf(b)&&m("mergeItem",{key:b,value:c})}catch(a){}return a.abrupt("return",e(b,c,d));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),q=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b){return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{m("clear")}catch(a){}return a.abrupt("return",f(b));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),r=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){var d;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{d=(b||[]).filter(function(a){return a&&a[0]&&0>k.indexOf(a[0])}),0<d.length&&m("multiSet",{pairs:d})}catch(a){}return a.abrupt("return",g(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),s=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){var d;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{d=(b||[]).filter(function(a){return 0>k.indexOf(a)}),0<d.length&&m("multiRemove",{keys:d})}catch(a){}return a.abrupt("return",h(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),t=function(){var a=_asyncToGenerator(regeneratorRuntime.mark(function a(b,c){var d;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:try{d=(b||[]).filter(function(a){return a&&a[0]&&0>k.indexOf(a[0])}),0<d.length&&m("multiMerge",{pairs:d})}catch(a){}return a.abrupt("return",i(b,c));case 2:case"end":return a.stop();}},a)}));return function(){return a.apply(this,arguments)}}(),u=function(){l||(c=b.asyncStorageHandler.setItem,b.asyncStorageHandler.setItem=n,d=b.asyncStorageHandler.removeItem,b.asyncStorageHandler.removeItem=o,e=b.asyncStorageHandler.mergeItem,b.asyncStorageHandler.mergeItem=p,f=b.asyncStorageHandler.clear,b.asyncStorageHandler.clear=q,g=b.asyncStorageHandler.multiSet,b.asyncStorageHandler.multiSet=r,h=b.asyncStorageHandler.multiRemove,b.asyncStorageHandler.multiRemove=s,i=b.asyncStorageHandler.multiMerge,b.asyncStorageHandler.multiMerge=t,l=!0)},v=function(){l&&(b.asyncStorageHandler.setItem=c,b.asyncStorageHandler.removeItem=d,b.asyncStorageHandler.mergeItem=e,b.asyncStorageHandler.clear=f,b.asyncStorageHandler.multiSet=g,b.asyncStorageHandler.multiRemove=h,b.asyncStorageHandler.multiMerge=i,l=!1)};return b.asyncStorageHandler&&u(),{features:{trackAsyncStorage:u,untrackAsyncStorage:v}}}};function mitt(a){return a=a||Object.create(null),{on:function(b,c){(a[b]||(a[b]=[])).push(c)},off:function(b,c){a[b]&&a[b].splice(a[b].indexOf(c)>>>0,1)},emit:function(b,c){(a[b]||[]).slice().map(function(a){a(c)}),(a["*"]||[]).slice().map(function(a){a(b,c)})}}}var parseErrorStack,symbolicateStackTrace,Styles={container:{position:"absolute",left:0,top:0,right:0,bottom:0,zIndex:1e3,opacity:.25}},FullScreenOverlay=function(a){function b(a){var d;return _classCallCheck(this,b),d=c.call(this,a),d.state={opacity:Styles.container.opacity,uri:null,justifyContent:"center",alignItems:"center"},a.emitter.on("overlay",function(a){d.setState(_objectSpread2(_objectSpread2({},d.state),a))}),d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"createContainerStyle",value:function(){var a=this.state,b=a.opacity,c=a.justifyContent,d=a.alignItems,e=reactNative.Dimensions.get("window"),f=e.width,g=e.height,h=_objectSpread2(_objectSpread2({},Styles.container),{},{opacity:b,width:f,height:g,justifyContent:c,alignItems:d});return h}},{key:"render",value:function(){var a=this.state,b=a.uri,c=a.width,d=a.height,e=a.growToWindow,f=a.resizeMode,g=a.marginLeft,h=void 0===g?0:g,i=a.marginRight,j=void 0===i?0:i,k=a.marginTop,l=void 0===k?0:k,m=a.marginBottom,n=void 0===m?0:m,o={width:c,height:d,marginTop:l,marginRight:j,marginBottom:n,marginLeft:h};if(e){var p=reactNative.Dimensions.get("window");o.width=p.width,o.height=p.height}var q=b?React__default["default"].createElement(reactNative.Image,{source:{uri:b},style:o,resizeMode:e?f:null}):React__default["default"].createElement(reactNative.View,null);return React__default["default"].createElement(reactNative.View,{style:this.createContainerStyle(),pointerEvents:"none"},q)}}]),b}(React.Component),overlay=function(){return function(){var a=new mitt;return{onCommand:function(b){"overlay"!==b.type||a.emit("overlay",b.payload)},features:{overlay:function(b){return function(c){return React__default["default"].createElement(reactNative.View,{style:{flex:1}},React__default["default"].createElement(b,c),React__default["default"].createElement(FullScreenOverlay,{emitter:a}))}}}}}},DEFAULTS$2={url:"http://localhost:8081"},openInEditor=function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return function(){var b=Object.assign({},DEFAULTS$2,a);return{onCommand:function(a){if("editor.open"===a.type){var c=a.payload,d=c.file,e=c.lineNumber,f="".concat(b.url,"/open-stack-frame");fetch(f,{method:"POST",body:JSON.stringify({file:d,lineNumber:e||1})})}}}}},PLUGIN_DEFAULTS={veto:null},trackGlobalErrors=function(a){return function(b){function c(a,c,d){h(a,c,d);try{var e=c.map(function(a){return{functionName:"<unknown>"===a.methodName?null:a.methodName,lineNumber:a.lineNumber,columnNumber:a.column,fileName:a.file}});g.veto&&(e=e.filter(function(a){return g.veto(a)})),b.error(a,e)}catch(a){}}function d(){i||!reactNative.NativeModules.ExceptionsManager||(h=reactNative.NativeModules.ExceptionsManager.updateExceptionMessage,reactNative.NativeModules.ExceptionsManager.updateExceptionMessage=c,i=!0)}function e(){h&&reactNative.NativeModules.ExceptionsManager&&(reactNative.NativeModules.ExceptionsManager.updateExceptionMessage=h,i=!1)}function f(a){try{if(parseErrorStack=parseErrorStack||require("react-native/Libraries/Core/Devtools/parseErrorStack"),symbolicateStackTrace=symbolicateStackTrace||require("react-native/Libraries/Core/Devtools/symbolicateStackTrace"),parseErrorStack&&symbolicateStackTrace){var c=parseErrorStack(a);symbolicateStackTrace(c).then(function(c){var d=c.map(function(a){return{fileName:a.file,functionName:a.methodName,lineNumber:a.lineNumber}});g.veto&&(d=d.filter(function(a){return g.veto(a)})),b.error(a.message,d)})}}catch(a){}}var g=Object.assign({},PLUGIN_DEFAULTS,a||{}),h=null,i=!1;return d(),{features:{reportError:f,trackGlobalErrors:d,untrackGlobalErrors:e}}}},DEFAULT_CONTENT_TYPES_RX=/^(image)\/.*$/i,DEFAULTS$1={},networking=function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return function(b){function c(a,c){return e.ignoreUrls&&e.ignoreUrls.test(c._url)?void(c._skipReactotron=!0):void(g++,c._trackingName=g,h[g]={data:a,xhr:c,stopTimer:b.startTimer()})}function d(a,c,d,e,g,i){if(!i._skipReactotron){var j=null,k=e?e.indexOf("?"):-1;-1<k&&(j=queryString__default["default"].parse(e.substr(k)));var l=i._trackingName,m=h[l]||{};h[l]=null;var n=m.data,o=m.stopTimer,p={url:e||m.xhr._url,method:i._method||null,data:n,headers:i._headers||null,params:j},q=i.responseHeaders&&i.responseHeaders["content-type"]||i.responseHeaders&&i.responseHeaders["Content-Type"]||"",r=function(c){var e="~~~ skipped ~~~";if(c)try{e=JSON.parse(c)}catch(a){e=d}var f={body:e,status:a,headers:i.responseHeaders||null};b.apiResponse(p,f,o?o():null)},s=("string"==typeof d||"object"===_typeof(d))&&!f.test(q||"");if(!s)r("");else if("blob"===g&&"undefined"!=typeof FileReader&&d){var t=new FileReader,u=function a(){r(t.result),t.removeEventListener("loadend",a)};t.addEventListener("loadend",u),t.readAsText(d)}else r(d)}}var e=Object.assign({},DEFAULTS$1,a),f=e.ignoreContentTypes||DEFAULT_CONTENT_TYPES_RX,g=1e3,h={};return XHRInterceptor__default["default"].setSendCallback(c),XHRInterceptor__default["default"].setResponseCallback(d),XHRInterceptor__default["default"].enableInterception(),{}}},StorybookSwitcher=function(a){function b(a){var d;return _classCallCheck(this,b),d=c.call(this,a),d.state={showStorybook:!1},a.emitter.on("storybook",function(a){d.setState({showStorybook:a})}),d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"render",value:function(){var a=this.state.showStorybook,b=this.props,c=b.storybookUi,d=b.children;return React__default["default"].createElement(reactNative.View,{style:{flex:1}},a?React__default["default"].createElement(c,null):d)}}]),b}(React.Component),storybook=function(){return function(){var a=new mitt;return{onCommand:function(b){"storybook"!==b.type||a.emit("storybook",b.payload)},features:{storybookSwitcher:function(b){return function(c){return function(d){return React__default["default"].createElement(StorybookSwitcher,{storybookUi:b,emitter:a},React__default["default"].createElement(c,d))}}}}}}},devTools=function(){return function(){return{onCommand:function(a){"devtools.open"!==a.type&&"devtools.reload"!==a.type||("devtools.open"===a.type&&reactNative.NativeModules.DevMenu.show(),"devtools.reload"===a.type&&reactNative.NativeModules.DevMenu.reload())}}}},ConnectionManager=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"webSocket",void 0),this.webSocket=new WebSocket(b)}return _createClass(a,[{key:"send",value:function(a){1===this.webSocket.readyState&&this.webSocket.send(a)}},{key:"on",value:function(a,b){"open"===a?this.webSocket.onopen=b:"message"==a&&(this.webSocket.onmessage=function(a){return b(a.data)})}},{key:"close",value:function(){this.webSocket.close()}}]),a}(),constants=reactNative.NativeModules.PlatformConstants||{},REACTOTRON_ASYNC_CLIENT_ID="@REACTOTRON/clientId",tempClientId=null,DEFAULTS={createSocket:function(a){return new ConnectionManager(a)},host:getHost__default["default"]("localhost"),port:9090,name:"React Native App",environment:process.env.NODE_ENV||(__DEV__?"development":"production"),client:_objectSpread2({reactotronLibraryName:"reactotron-react-native",reactotronLibraryVersion:"REACTOTRON_REACT_NATIVE_VERSION",platform:reactNative.Platform.OS,platformVersion:reactNative.Platform.Version,osRelease:constants.Release,model:constants.Model,serverHost:constants.ServerHost,forceTouch:constants.forceTouchAvailable||!1,interfaceIdiom:constants.interfaceIdiom,systemName:constants.systemName,uiMode:constants.uiMode,serial:constants.Serial,androidId:constants.androidID,reactNativeVersion:getReactNativeVersion()},getReactNativeDimensions()),getClientId:function(){return reactotron.asyncStorageHandler?reactotron.asyncStorageHandler.getItem(REACTOTRON_ASYNC_CLIENT_ID):new Promise(function(a){return a(tempClientId)})},setClientId:function(a){return reactotron.asyncStorageHandler?reactotron.asyncStorageHandler.setItem(REACTOTRON_ASYNC_CLIENT_ID,a):(tempClientId=a,Promise.resolve())},proxyHack:!0},reactotron=reactotronCoreClient.createClient(DEFAULTS);function getPluginOptions(a){return"object"===_typeof(a)?a:null}reactotron.useReactNative=function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return!1!==a.errors&&reactotron.use(trackGlobalErrors(getPluginOptions(a.errors))),!1!==a.editor&&reactotron.use(openInEditor(getPluginOptions(a.editor))),!1!==a.overlay&&reactotron.use(overlay()),!1!==a.asyncStorage&&reactotron.use(asyncStorage(getPluginOptions(a.asyncStorage))),!1!==a.networking&&reactotron.use(networking(getPluginOptions(a.networking))),!1!==a.storybook&&reactotron.use(storybook()),!1!==a.devTools&&reactotron.use(devTools()),reactotron},reactotron.setAsyncStorageHandler=function(a){return reactotron.asyncStorageHandler=a,reactotron},exports.asyncStorage=asyncStorage,exports["default"]=reactotron,exports.devTools=devTools,exports.networking=networking,exports.openInEditor=openInEditor,exports.overlay=overlay,exports.storybook=storybook,exports.trackGlobalErrors=trackGlobalErrors;

we also tried doing below options, they worked, we just decided above is better.

@@ -76,7 +76,8 @@ export default <ReactotronSubtype = ReactotronCore>(pluginConfig: NetworkingOpti

     // fetch and clear the request data from the cache
     const rid = xhr._trackingName
-    const cachedRequest = requestCache[rid] || {}
+    const cachedRequest = requestCache[rid] || {stopTimer: () => {}} 
+    // OR below
+    // const cachedRequest = requestCache[rid] || {stopTimer: reactotron.startTimer()}
     requestCache[rid] = null

     // assemble the request object
jamonholmgren commented 2 years ago

Just merged the PR: https://github.com/infinitered/reactotron-react-native/pull/1039

Should be able to upgrade to reactotron-react-native 5.0.2 to fix this issue going forward, once CI finishes.

jamonholmgren commented 2 years ago

(Anyone want to submit a PR to Ignite to bump the dep on Ignite? I can do it, but if someone else wants the credit...it's an easy one!)

officialomkarjadhav commented 1 year ago

(0,n.usePreventRemoveContext) is not a function. (In '(0,n.usePreventRemoveContext)()', '(0,n.usePreventRemoveContext)' is undefined)