react-native-inapp-inspector 2.3.8 → 2.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/commonjs/components/Inspector/AnalyticsTab.js +27 -2
  2. package/dist/commonjs/components/Inspector/BundleTab.js +3 -0
  3. package/dist/commonjs/components/Inspector/ConsoleTab.js +24 -1
  4. package/dist/commonjs/components/Inspector/CrashTab.js +30 -1
  5. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.d.ts +7 -0
  6. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +111 -0
  7. package/dist/commonjs/components/Inspector/InspectorHeader.js +225 -108
  8. package/dist/commonjs/components/Inspector/NetworkDetail.js +2 -1
  9. package/dist/commonjs/components/Inspector/NetworkFilterModal.d.ts +19 -0
  10. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +648 -0
  11. package/dist/commonjs/components/Inspector/NetworkTab.js +89 -147
  12. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  13. package/dist/commonjs/components/Inspector/PerformanceTab.js +3 -0
  14. package/dist/commonjs/components/Inspector/ReduxTab.js +24 -1
  15. package/dist/commonjs/components/Inspector/SettingsPanel.js +73 -88
  16. package/dist/commonjs/components/Inspector/StorageTab.js +37 -11
  17. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -0
  18. package/dist/commonjs/components/LogCard.js +35 -26
  19. package/dist/commonjs/components/NetworkIcons.d.ts +1 -0
  20. package/dist/commonjs/components/NetworkIcons.js +6 -1
  21. package/dist/commonjs/constants/index.js +3 -0
  22. package/dist/commonjs/constants/version.d.ts +1 -1
  23. package/dist/commonjs/constants/version.js +1 -1
  24. package/dist/commonjs/helpers/telemetry.js +34 -0
  25. package/dist/commonjs/index.js +3 -0
  26. package/dist/commonjs/styles/index.d.ts +11 -0
  27. package/dist/commonjs/styles/index.js +20 -5
  28. package/dist/commonjs/types/enums.d.ts +3 -0
  29. package/dist/commonjs/types/enums.js +3 -0
  30. package/dist/esm/components/Inspector/AnalyticsTab.js +29 -4
  31. package/dist/esm/components/Inspector/BundleTab.js +3 -0
  32. package/dist/esm/components/Inspector/ConsoleTab.js +26 -3
  33. package/dist/esm/components/Inspector/CrashTab.js +32 -3
  34. package/dist/esm/components/Inspector/FeatureUnderDevNotice.d.ts +7 -0
  35. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +74 -0
  36. package/dist/esm/components/Inspector/InspectorHeader.js +226 -109
  37. package/dist/esm/components/Inspector/NetworkDetail.js +2 -1
  38. package/dist/esm/components/Inspector/NetworkFilterModal.d.ts +19 -0
  39. package/dist/esm/components/Inspector/NetworkFilterModal.js +607 -0
  40. package/dist/esm/components/Inspector/NetworkTab.js +91 -149
  41. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  42. package/dist/esm/components/Inspector/PerformanceTab.js +3 -0
  43. package/dist/esm/components/Inspector/ReduxTab.js +26 -3
  44. package/dist/esm/components/Inspector/SettingsPanel.js +73 -88
  45. package/dist/esm/components/Inspector/StorageTab.js +39 -13
  46. package/dist/esm/components/Inspector/UpdateAvailableModal.js +2 -0
  47. package/dist/esm/components/LogCard.js +36 -27
  48. package/dist/esm/components/NetworkIcons.d.ts +1 -0
  49. package/dist/esm/components/NetworkIcons.js +4 -0
  50. package/dist/esm/constants/index.js +3 -0
  51. package/dist/esm/constants/version.d.ts +1 -1
  52. package/dist/esm/constants/version.js +1 -1
  53. package/dist/esm/helpers/telemetry.js +34 -0
  54. package/dist/esm/index.js +3 -0
  55. package/dist/esm/styles/index.d.ts +11 -0
  56. package/dist/esm/styles/index.js +20 -5
  57. package/dist/esm/types/enums.d.ts +3 -0
  58. package/dist/esm/types/enums.js +3 -0
  59. package/package.json +2 -2
  60. package/src/components/Inspector/AnalyticsTab.tsx +71 -43
  61. package/src/components/Inspector/BundleTab.tsx +3 -0
  62. package/src/components/Inspector/ConsoleTab.tsx +28 -1
  63. package/src/components/Inspector/CrashTab.tsx +45 -14
  64. package/src/components/Inspector/FeatureUnderDevNotice.tsx +94 -0
  65. package/src/components/Inspector/InspectorHeader.tsx +257 -115
  66. package/src/components/Inspector/NetworkDetail.tsx +2 -1
  67. package/src/components/Inspector/NetworkFilterModal.tsx +710 -0
  68. package/src/components/Inspector/NetworkTab.tsx +127 -204
  69. package/src/components/Inspector/NpmUpdateToast.tsx +1 -1
  70. package/src/components/Inspector/PerformanceTab.tsx +3 -0
  71. package/src/components/Inspector/ReduxTab.tsx +28 -1
  72. package/src/components/Inspector/SettingsPanel.tsx +93 -132
  73. package/src/components/Inspector/StorageTab.tsx +56 -27
  74. package/src/components/Inspector/UpdateAvailableModal.tsx +2 -0
  75. package/src/components/LogCard.tsx +43 -31
  76. package/src/components/NetworkIcons.tsx +27 -0
  77. package/src/constants/index.ts +3 -0
  78. package/src/constants/version.ts +1 -1
  79. package/src/helpers/telemetry.ts +36 -0
  80. package/src/index.tsx +5 -0
  81. package/src/styles/index.ts +20 -5
  82. package/src/types/enums.ts +3 -0
@@ -833,6 +833,7 @@ const AnalyticsHeader = react_1.default.memo(() => {
833
833
  const AnalyticsTab = react_1.default.memo(() => {
834
834
  const { t } = (0, i18n_1.useTranslation)();
835
835
  const { filteredAnalyticsEvents, analyticsSearch, setAnalyticsSearch, handleDelete, selectedEvent, setSelectedEvent, newEventIds, logRouteMapRef, isAnalyticsLayoutReady, setIsAnalyticsLayoutReady, isAnalyticsPaused, setIsAnalyticsPaused, isAnalyticsFilterApplied, } = (0, InspectorContext_1.useInspector)();
836
+ const listRef = (0, react_1.useRef)(null);
836
837
  const [isFilterModalOpen, setIsFilterModalOpen] = (0, react_1.useState)(false);
837
838
  const keyExtractor = (0, react_1.useCallback)((item, index) => item?.id?.toString() ?? index.toString(), []);
838
839
  const renderItem = (0, react_1.useCallback)(({ item, index }) => {
@@ -960,7 +961,8 @@ const AnalyticsTab = react_1.default.memo(() => {
960
961
  <AnalyticsFilterModal_1.default visible={isFilterModalOpen} onClose={() => setIsFilterModalOpen(false)}/>
961
962
 
962
963
  <react_native_1.View style={{ flex: 1 }} onLayout={() => setIsAnalyticsLayoutReady(true)}>
963
- {isAnalyticsLayoutReady ? (<react_native_1.FlatList data={filteredAnalyticsEvents} keyExtractor={keyExtractor} ListHeaderComponent={AnalyticsHeader} renderItem={renderItem} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} ListEmptyComponent={<EmptyState_1.default isSearch={analyticsSearch.length > 0} searchQuery={analyticsSearch} customTitle={analyticsSearch.length > 0
964
+ {isAnalyticsLayoutReady ? (<>
965
+ <react_native_1.FlatList ref={listRef} data={filteredAnalyticsEvents} keyExtractor={keyExtractor} ListHeaderComponent={AnalyticsHeader} renderItem={renderItem} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} ListEmptyComponent={<EmptyState_1.default isSearch={analyticsSearch.length > 0} searchQuery={analyticsSearch} customTitle={analyticsSearch.length > 0
964
966
  ? 'No matching analytics events'
965
967
  : 'No analytics events yet'} customSub={analyticsSearch.length > 0
966
968
  ? `No events matched "${analyticsSearch}"`
@@ -969,7 +971,30 @@ const AnalyticsTab = react_1.default.memo(() => {
969
971
  filteredAnalyticsEvents.length === 0 && {
970
972
  flexGrow: 1,
971
973
  },
972
- ]} keyboardShouldPersistTaps="handled"/>) : null}
974
+ ]} keyboardShouldPersistTaps="handled"/>
975
+
976
+ <TouchableScale_1.default onPress={() => {
977
+ try {
978
+ listRef.current?.scrollToOffset({
979
+ offset: 0,
980
+ animated: true,
981
+ });
982
+ }
983
+ catch {
984
+ try {
985
+ listRef.current?.scrollToIndex({
986
+ index: 0,
987
+ animated: true,
988
+ });
989
+ }
990
+ catch { }
991
+ }
992
+ }} hitSlop={12} style={styles_1.default.scrollTopBtn}>
993
+ <react_native_1.View style={{ transform: [{ rotate: '180deg' }] }}>
994
+ <NetworkIcons_1.ChevronIcon color={AppColors_1.AppColors.white} size={18}/>
995
+ </react_native_1.View>
996
+ </TouchableScale_1.default>
997
+ </>) : null}
973
998
  </react_native_1.View>
974
999
  </>);
975
1000
  });
@@ -43,6 +43,7 @@ const i18n_1 = require("../../i18n");
43
43
  const TouchableScale_1 = __importDefault(require("../TouchableScale"));
44
44
  const CopyButton_1 = __importDefault(require("../CopyButton"));
45
45
  const HighlightText_1 = __importDefault(require("../HighlightText"));
46
+ const FeatureUnderDevNotice_1 = __importDefault(require("./FeatureUnderDevNotice"));
46
47
  const AppColors_1 = require("../../styles/AppColors");
47
48
  const AppFonts_1 = require("../../styles/AppFonts");
48
49
  const helpers_1 = require("../../helpers");
@@ -828,6 +829,8 @@ const BundleTab = react_1.default.memo(() => {
828
829
  </TouchableScale_1.default>
829
830
  </react_native_1.View>
830
831
 
832
+ <FeatureUnderDevNotice_1.default featureName="Metro Bundle Analyzer"/>
833
+
831
834
 
832
835
 
833
836
 
@@ -52,6 +52,7 @@ const NetworkIcons_1 = require("../NetworkIcons");
52
52
  const ConsoleTab = react_1.default.memo(() => {
53
53
  const { t } = (0, i18n_1.useTranslation)();
54
54
  const { logSearch, setLogSearch, logSortOrder, setLogSortOrder, handleDelete, logFilters, setLogFilters, logCounts, filteredConsoleLogs, visibleConsoleLogs, isConsolePaused, setIsConsolePaused, } = (0, InspectorContext_1.useInspector)();
55
+ const listRef = (0, react_1.useRef)(null);
55
56
  const renderItem = (0, react_1.useCallback)(({ item, index }) => (<AnimatedEntrance_1.default index={index} distance={8}>
56
57
  <ConsoleLogCard_1.ConsoleLogCard item={item} searchStr={logSearch}/>
57
58
  </AnimatedEntrance_1.default>), [logSearch]);
@@ -518,7 +519,7 @@ const ConsoleTab = react_1.default.memo(() => {
518
519
  </react_native_1.ScrollView>
519
520
  </react_native_1.View>
520
521
 
521
- <react_native_1.FlatList data={filteredConsoleLogs} keyExtractor={keyExtractor} ListHeaderComponent={listHeader} renderItem={renderItem} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} ListEmptyComponent={<EmptyState_1.default isSearch={logSearch.length > 0 || logFilters.size > 0} searchQuery={logSearch} customTitle={logSearch.length > 0
522
+ <react_native_1.FlatList ref={listRef} data={filteredConsoleLogs} keyExtractor={keyExtractor} ListHeaderComponent={listHeader} renderItem={renderItem} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} ListEmptyComponent={<EmptyState_1.default isSearch={logSearch.length > 0 || logFilters.size > 0} searchQuery={logSearch} customTitle={logSearch.length > 0
522
523
  ? 'No matching console logs'
523
524
  : 'No console logs'} onClearSearch={() => {
524
525
  setLogSearch('');
@@ -527,6 +528,28 @@ const ConsoleTab = react_1.default.memo(() => {
527
528
  styles_1.default.listContent,
528
529
  filteredConsoleLogs.length === 0 && { flexGrow: 1 },
529
530
  ]} keyboardShouldPersistTaps="handled"/>
531
+
532
+ <TouchableScale_1.default onPress={() => {
533
+ try {
534
+ listRef.current?.scrollToOffset({
535
+ offset: 0,
536
+ animated: true,
537
+ });
538
+ }
539
+ catch {
540
+ try {
541
+ listRef.current?.scrollToIndex({
542
+ index: 0,
543
+ animated: true,
544
+ });
545
+ }
546
+ catch { }
547
+ }
548
+ }} hitSlop={12} style={styles_1.default.scrollTopBtn}>
549
+ <react_native_1.View style={{ transform: [{ rotate: '180deg' }] }}>
550
+ <NetworkIcons_1.ChevronIcon color={AppColors_1.AppColors.white} size={18}/>
551
+ </react_native_1.View>
552
+ </TouchableScale_1.default>
530
553
  </react_native_1.View>);
531
554
  });
532
555
  exports.default = ConsoleTab;
@@ -43,7 +43,9 @@ const InspectorContext_1 = require("./InspectorContext");
43
43
  const TouchableScale_1 = __importDefault(require("../TouchableScale"));
44
44
  const AnimatedEntrance_1 = __importDefault(require("../AnimatedEntrance"));
45
45
  const EndOfListFooter_1 = __importDefault(require("../EndOfListFooter"));
46
+ const FeatureUnderDevNotice_1 = __importDefault(require("./FeatureUnderDevNotice"));
46
47
  const HighlightText_1 = __importDefault(require("../HighlightText"));
48
+ const styles_1 = __importDefault(require("../../styles"));
47
49
  const AppColors_1 = require("../../styles/AppColors");
48
50
  const AppFonts_1 = require("../../styles/AppFonts");
49
51
  const crashHandler_1 = require("../../customHooks/crashHandler");
@@ -67,6 +69,7 @@ const getRelativeTime = (timestamp) => {
67
69
  const CrashTab = react_1.default.memo(() => {
68
70
  const { t } = (0, i18n_1.useTranslation)();
69
71
  const { crashRecords, selectedCrash, setSelectedCrash } = (0, InspectorContext_1.useInspector)();
72
+ const listRef = (0, react_1.useRef)(null);
70
73
  const [searchQuery, setSearchQuery] = (0, react_1.useState)('');
71
74
  const [filterType, setFilterType] = (0, react_1.useState)('all');
72
75
  const [crashFilters, setCrashFilters] = (0, react_1.useState)(CrashFilterModal_1.DEFAULT_CRASH_FILTERS);
@@ -387,6 +390,8 @@ const CrashTab = react_1.default.memo(() => {
387
390
  </TouchableScale_1.default>
388
391
  </react_native_1.View>
389
392
 
393
+ <FeatureUnderDevNotice_1.default featureName="Crash & Exception Sentinel"/>
394
+
390
395
 
391
396
  <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={localStyles.filterScrollContent}>
392
397
  {[
@@ -441,7 +446,31 @@ const CrashTab = react_1.default.memo(() => {
441
446
  Clear Search
442
447
  </react_native_1.Text>
443
448
  </TouchableScale_1.default>)}
444
- </react_native_1.ScrollView>) : (<react_native_1.FlatList data={filteredList} keyExtractor={item => item.id} renderItem={renderCard} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} contentContainerStyle={localStyles.listContent} showsVerticalScrollIndicator={false} ListFooterComponent={<EndOfListFooter_1.default />}/>)}
449
+ </react_native_1.ScrollView>) : (<>
450
+ <react_native_1.FlatList ref={listRef} data={filteredList} keyExtractor={item => item.id} renderItem={renderCard} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} contentContainerStyle={localStyles.listContent} showsVerticalScrollIndicator={false} ListFooterComponent={<EndOfListFooter_1.default />}/>
451
+
452
+ <TouchableScale_1.default onPress={() => {
453
+ try {
454
+ listRef.current?.scrollToOffset({
455
+ offset: 0,
456
+ animated: true,
457
+ });
458
+ }
459
+ catch {
460
+ try {
461
+ listRef.current?.scrollToIndex({
462
+ index: 0,
463
+ animated: true,
464
+ });
465
+ }
466
+ catch { }
467
+ }
468
+ }} hitSlop={12} style={styles_1.default.scrollTopBtn}>
469
+ <react_native_1.View style={{ transform: [{ rotate: '180deg' }] }}>
470
+ <NetworkIcons_1.ChevronIcon color={AppColors_1.AppColors.white} size={18}/>
471
+ </react_native_1.View>
472
+ </TouchableScale_1.default>
473
+ </>)}
445
474
 
446
475
 
447
476
  <CrashFilterModal_1.default visible={isFilterModalOpen} onClose={() => setIsFilterModalOpen(false)} filters={crashFilters} onApply={setCrashFilters} searchQuery={searchQuery}/>
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface FeatureUnderDevNoticeProps {
3
+ featureName?: string;
4
+ compact?: boolean;
5
+ }
6
+ export declare const FeatureUnderDevNotice: React.FC<FeatureUnderDevNoticeProps>;
7
+ export default FeatureUnderDevNotice;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FeatureUnderDevNotice = void 0;
37
+ const react_1 = __importStar(require("react"));
38
+ const react_native_1 = require("react-native");
39
+ const AppColors_1 = require("../../styles/AppColors");
40
+ const AppFonts_1 = require("../../styles/AppFonts");
41
+ const NetworkIcons_1 = require("../NetworkIcons");
42
+ const FeatureUnderDevNotice = ({ featureName, compact = false, }) => {
43
+ const [isDismissed, setIsDismissed] = (0, react_1.useState)(false);
44
+ if (isDismissed)
45
+ return null;
46
+ return (<react_native_1.View style={[styles.container, compact && styles.containerCompact]}>
47
+ <react_native_1.View style={styles.contentRow}>
48
+ <react_native_1.View style={styles.badgeWrap}>
49
+ <NetworkIcons_1.WarningTriangleIcon color={AppColors_1.AppColors.warningIconGold} size={12}/>
50
+ <react_native_1.Text style={styles.badgeText}>IN ACTIVE DEVELOPMENT</react_native_1.Text>
51
+ </react_native_1.View>
52
+
53
+ <react_native_1.Pressable onPress={() => setIsDismissed(true)} hitSlop={8} style={styles.dismissBtn} accessible={true} accessibilityRole="button" accessibilityLabel="Dismiss notice">
54
+ <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak} size={11}/>
55
+ </react_native_1.Pressable>
56
+ </react_native_1.View>
57
+
58
+ <react_native_1.Text style={styles.messageText}>
59
+ {featureName ? `${featureName} is` : 'This module is'} currently in active
60
+ development. Results and metrics may vary in accuracy. We are continuously
61
+ improving this feature for upcoming releases.
62
+ </react_native_1.Text>
63
+ </react_native_1.View>);
64
+ };
65
+ exports.FeatureUnderDevNotice = FeatureUnderDevNotice;
66
+ const styles = react_native_1.StyleSheet.create({
67
+ container: {
68
+ marginHorizontal: 12,
69
+ marginTop: 8,
70
+ marginBottom: 6,
71
+ paddingHorizontal: 12,
72
+ paddingVertical: 9,
73
+ borderRadius: 8,
74
+ backgroundColor: `${AppColors_1.AppColors.warningIconGold}12`,
75
+ borderWidth: 1,
76
+ borderColor: `${AppColors_1.AppColors.warningIconGold}30`,
77
+ },
78
+ containerCompact: {
79
+ marginTop: 4,
80
+ marginBottom: 4,
81
+ paddingVertical: 7,
82
+ paddingHorizontal: 10,
83
+ },
84
+ contentRow: {
85
+ flexDirection: 'row',
86
+ alignItems: 'center',
87
+ justifyContent: 'space-between',
88
+ marginBottom: 4,
89
+ },
90
+ badgeWrap: {
91
+ flexDirection: 'row',
92
+ alignItems: 'center',
93
+ gap: 4.5,
94
+ },
95
+ badgeText: {
96
+ fontFamily: AppFonts_1.AppFonts.interBold,
97
+ fontSize: 9.5,
98
+ color: AppColors_1.AppColors.warningIconGold,
99
+ letterSpacing: 0.4,
100
+ },
101
+ dismissBtn: {
102
+ padding: 2,
103
+ },
104
+ messageText: {
105
+ fontFamily: AppFonts_1.AppFonts.interRegular,
106
+ fontSize: 10.5,
107
+ color: AppColors_1.AppColors.grayText,
108
+ lineHeight: 15,
109
+ },
110
+ });
111
+ exports.default = exports.FeatureUnderDevNotice;