UNPKG

rn-pendo-sdk

Version:

Pendo Mobile React Native SDK

1 lines 7.81 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Utils=exports.Consts=void 0;var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _reactNative=require("react-native");var _pendoLogger=require("./pendoLogger");var _pendoTypes=require("./pendoTypes");var _traverseOptions=require("./traverseOptions");var Consts=exports.Consts=(0,_createClass2.default)(function Consts(){(0,_classCallCheck2.default)(this,Consts);});Consts.kOnDynamicContentRequestAnalyzer='onDynamicContentRequestAnalyzer';Consts.kOnCaptureRequestAnalyzer='onCaptureRequestAnalyzer';Consts.kOnReturnFromAlertRequestAnalyzer='onReturnFromAlertRequestAnalyzer';Consts.kOnDefaultRequestAnalyzer='onDefaultRequestAnalyzer';Consts.kOnScreenContentChange='onScreenContentChange';Consts.kOnModalStateVisible='onModalStateVisible';Consts.kOnModalStateHidden='onModalStateHidden';Consts.kDrawer='drawer';Consts.kRnnRegisterComponentDidAppearListener='registerComponentDidAppearListener';var Utils=exports.Utils=function(){function Utils(){(0,_classCallCheck2.default)(this,Utils);}return(0,_createClass2.default)(Utils,null,[{key:"reactNativeVersion",value:function reactNativeVersion(){return`${_reactNative.Platform.constants.reactNativeVersion.major}.${_reactNative.Platform.constants.reactNativeVersion.minor}.${_reactNative.Platform.constants.reactNativeVersion.patch}`;}},{key:"pluginVersion",value:function pluginVersion(){try{var response=require('../package.json');return response.version;}catch(error){_pendoLogger.Logger.info('Error fetching or parsing package.json:',error);return'';}}},{key:"isFabricEnabled",value:function isFabricEnabled(){var isFabricEnabled=false;try{if(Utils.isIOS()){isFabricEnabled=global.nativeFabricUIManager!=null;}else{var _UIManager$getViewMan;isFabricEnabled=((_UIManager$getViewMan=_reactNative.UIManager.getViewManagerConfig('RCTView'))==null?void 0:_UIManager$getViewMan.NativeProps)!=null;}}catch(error){_pendoLogger.Logger.warn('Error checking if Fabric is enabled:',error);}_pendoLogger.Logger.debug('Fabric is enabled:',isFabricEnabled);return isFabricEnabled;}},{key:"isIOS",value:function isIOS(){return _reactNative.Platform.OS===_pendoTypes.PlatformOS.ios;}},{key:"isAndroid",value:function isAndroid(){return _reactNative.Platform.OS===_pendoTypes.PlatformOS.android;}},{key:"getOS",value:function getOS(){if(Utils.isIOS()){return _pendoTypes.PlatformOS.ios;}else if(Utils.isAndroid()){return _pendoTypes.PlatformOS.android;}return null;}},{key:"isEmpty",value:function isEmpty(object){return object===null||object===undefined||object===false||object==='';}},{key:"isNotEmpty",value:function isNotEmpty(object){return!Utils.isEmpty(object);}},{key:"getRandomInt",value:function getRandomInt(max){return Math.floor(Math.random()*max);}},{key:"hasPendoNativeModule",value:function hasPendoNativeModule(){var withMessage=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(Utils.isAvailable){return true;}if(withMessage){_pendoLogger.Logger.info('Pendo native plugin is not available. Ignoring Call. Please note that if you are using Expo, Expo Go is not supported by Pendo because Pendo SDK has a native plugin that is not part of the Expo Go app.');}return false;}},{key:"addRootTag",value:function addRootTag(rootTags,rootTag,msg){var pushAsFirstRootTag=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;if(rootTag&&!rootTags.includes(rootTag)){if(msg){_pendoLogger.Logger.debug(msg,rootTag);}if(pushAsFirstRootTag){rootTags.unshift(rootTag);}else{rootTags.push(rootTag);}}}},{key:"removeSpacesAndNewLine",value:function removeSpacesAndNewLine(original){if(!original||original.length===0){return'';}var removeNewLine=original.replace(/\r?\n|\r/g,' ');return removeNewLine.replace(/ /g,'');}},{key:"handleError",value:function handleError(func){try{for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}return func.apply(void 0,args);}catch(e){var err;if(e instanceof Error){err=e;}else{err=new Error(String(e));}_pendoLogger.Logger.error('Unexpected error',err);}}},{key:"instanceOfNavigationState",value:function instanceOfNavigationState(state){return'type'in state;}},{key:"instanceOfNavigationRoute",value:function instanceOfNavigationRoute(route){return'name'in route;}},{key:"mergeWithDefaultTraverseOptions",value:function mergeWithDefaultTraverseOptions(options){var traversalOptionsObject={android:{},ios:{},nativeIDs:[],clickableElementsNativeIDsRegex:null,debouncerTime:_traverseOptions.DEFAULT_TRAVERSE_OPTIONS.debouncerTime,firstScreenDebouncerTime:_traverseOptions.DEFAULT_TRAVERSE_OPTIONS.firstScreenDebouncerTime,analyzeScreenNoDebouncerTime:_traverseOptions.DEFAULT_TRAVERSE_OPTIONS.analyzeScreenNoDebouncerTime,analyzeScreenDefaultDebouncerTime:_traverseOptions.DEFAULT_TRAVERSE_OPTIONS.analyzeScreenDefaultDebouncerTime,analyzeContentScreenDefaultDebouncerTime:_traverseOptions.DEFAULT_TRAVERSE_OPTIONS.analyzeContentScreenDefaultDebouncerTime};traversalOptionsObject=Utils.overrideOptionsWithUserOptions(traversalOptionsObject,options);traversalOptionsObject=Utils.mergeOptionsForOS(_pendoTypes.PlatformOS.android,traversalOptionsObject,options);traversalOptionsObject=Utils.mergeOptionsForOS(_pendoTypes.PlatformOS.ios,traversalOptionsObject,options);return traversalOptionsObject;}},{key:"overrideOptionsWithUserOptions",value:function overrideOptionsWithUserOptions(currentOptions,options){if(options&&options.firstScreenDebouncerTime){currentOptions.firstScreenDebouncerTime=options.firstScreenDebouncerTime;}if(options&&options.debouncerTime){currentOptions.debouncerTime=options.debouncerTime;}if(options&&options.nativeIDs){currentOptions.nativeIDs=options.nativeIDs;}if(options&&options.clickableElementsNativeIDsRegex){currentOptions.clickableElementsNativeIDsRegex=options.clickableElementsNativeIDsRegex;}return currentOptions;}},{key:"mergeOptionsForOS",value:function mergeOptionsForOS(platform,currentOptions,options){if(options&&options[platform]){currentOptions[platform]=Object.assign({},_traverseOptions.DEFAULT_TRAVERSE_OPTIONS[platform],options[platform]);}else{currentOptions[platform]=Object.assign({},_traverseOptions.DEFAULT_TRAVERSE_OPTIONS[platform]);}if(currentOptions.clickableElementsNativeIDsRegex){currentOptions[platform].clickableElementsNativeIDsRegex=_traverseOptions.DEFAULT_TRAVERSE_OPTIONS[platform].clickableElementsNativeIDsRegex;}return currentOptions;}},{key:"retroactiveScreenId",value:function retroactiveScreenId(routeState){var result={screenId:null,key:null,routeName:null};if(routeState==null){return result;}if(Utils.instanceOfNavigationState(routeState)){var route=routeState.routes[routeState.index];if(route){var retroScreenId=Utils.retroactiveScreenId(route);var type=routeState.type;result.screenId=type.concat('/',retroScreenId.screenId==null?'':retroScreenId.screenId);result.key=retroScreenId.key;result.routeName=retroScreenId.routeName;}}else if(Utils.instanceOfNavigationRoute(routeState)){var _retroScreenId=Utils.retroactiveScreenId(routeState.state);var name=routeState.name;if(_retroScreenId.key==null){var _retroScreenId$routeN;_retroScreenId.key=routeState.key;_retroScreenId.routeName=(_retroScreenId$routeN=_retroScreenId.routeName)!=null?_retroScreenId$routeN:name;}result.screenId=_retroScreenId.screenId==null?name:name.concat('/',_retroScreenId.screenId);result.key=_retroScreenId.key;result.routeName=_retroScreenId.routeName;}else{_pendoLogger.Logger.info(`Invalid route object ${routeState}`);}return result;}}]);}();Utils.isAvailable=!!_reactNative.NativeModules.ReactNativePendo;