react-native-inapp-inspector 2.4.2 → 2.5.1
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.
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
- package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.2.0/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +523 -2
- package/dist/commonjs/capture.d.ts +2 -0
- package/dist/commonjs/capture.js +1 -1
- package/dist/commonjs/components/AnalyticsDetail.js +23 -23
- package/dist/commonjs/components/AnalyticsEventCard.js +1 -1
- package/dist/commonjs/components/AnalyticsGraph.js +44 -44
- package/dist/commonjs/components/AnimatedBrandOwl.js +32 -32
- package/dist/commonjs/components/AppHeaderLogo.js +6 -6
- package/dist/commonjs/components/BrandCircleIcon.js +28 -28
- package/dist/commonjs/components/BrandSquareIcon.js +33 -33
- package/dist/commonjs/components/ConsoleLogCard.js +1 -1
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +2 -2
- package/dist/commonjs/components/Inspector/ConfirmationModal.js +23 -25
- package/dist/commonjs/components/Inspector/ConsoleTab.js +5 -5
- package/dist/commonjs/components/Inspector/CrashTab.js +44 -11
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +1 -1
- package/dist/commonjs/components/Inspector/FabLauncher.js +30 -25
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +54 -0
- package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
- package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +234 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +137 -127
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +1 -1
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +114 -32
- package/dist/commonjs/components/Inspector/MainScreen.js +26 -19
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +38 -35
- package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +36 -0
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +345 -123
- package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
- package/dist/commonjs/components/Inspector/PushCard.js +1 -1
- package/dist/commonjs/components/Inspector/PushDetail.js +9 -9
- package/dist/commonjs/components/Inspector/PushTab.js +3 -3
- package/dist/commonjs/components/Inspector/ReduxTab.js +9 -7
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +43 -0
- package/dist/commonjs/components/Inspector/SettingsPanel.js +102 -73
- package/dist/commonjs/components/Inspector/SocketCard.js +1 -1
- package/dist/commonjs/components/Inspector/SocketDetail.js +73 -63
- package/dist/commonjs/components/Inspector/SocketTab.js +4 -4
- package/dist/commonjs/components/Inspector/StorageTab.js +10 -10
- package/dist/commonjs/components/Inspector/SupportModal.js +2 -2
- package/dist/commonjs/components/Inspector/SupportPage.js +1 -1
- package/dist/commonjs/components/JsonViewer.js +47 -45
- package/dist/commonjs/components/LogCard.js +22 -20
- package/dist/commonjs/components/ModuleErrorBoundary.js +5 -5
- package/dist/commonjs/components/NetworkIcons.d.ts +27 -0
- package/dist/commonjs/components/NetworkIcons.js +103 -5
- package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
- package/dist/commonjs/constants/telemetryConfig.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/crash.d.ts +1 -1
- package/dist/commonjs/crash.js +1 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +2 -1
- package/dist/commonjs/customHooks/crashHandler.js +7 -7
- package/dist/commonjs/editor.d.ts +13 -0
- package/dist/commonjs/editor.js +1 -0
- package/dist/commonjs/helpers/index.d.ts +1 -0
- package/dist/commonjs/helpers/index.js +1 -1
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/helpers/telemetry.js +1 -1
- package/dist/commonjs/i18n/index.js +1 -1
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -1
- package/dist/commonjs/i18n/locales/de.json +1 -1
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -1
- package/dist/commonjs/i18n/locales/fr.json +1 -1
- package/dist/commonjs/i18n/locales/gu.json +1 -1
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -1
- package/dist/commonjs/i18n/locales/it.json +1 -1
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -1
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -1
- package/dist/commonjs/i18n/locales/mr.json +1 -1
- package/dist/commonjs/i18n/locales/nl.json +1 -1
- package/dist/commonjs/i18n/locales/pa.json +1 -1
- package/dist/commonjs/i18n/locales/pl.json +1 -1
- package/dist/commonjs/i18n/locales/pt.json +1 -1
- package/dist/commonjs/i18n/locales/ru.json +1 -1
- package/dist/commonjs/i18n/locales/ta.json +1 -1
- package/dist/commonjs/i18n/locales/te.json +1 -1
- package/dist/commonjs/i18n/locales/tr.json +1 -1
- package/dist/commonjs/i18n/locales/vi.json +1 -1
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/commonjs/index.d.ts +4 -1
- package/dist/commonjs/index.js +3 -3
- package/dist/commonjs/native/NativeInspector.d.ts +3 -0
- package/dist/commonjs/native/NativeInspector.js +1 -1
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
- package/dist/commonjs/styles/AppColors.d.ts +42 -2
- package/dist/commonjs/styles/AppColors.js +1 -1
- package/dist/commonjs/styles/common.js +1 -1
- package/dist/commonjs/styles/index.d.ts +7 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/editor.d.ts +96 -0
- package/dist/commonjs/types/editor.js +1 -0
- package/dist/commonjs/types/interfaces.d.ts +21 -0
- package/dist/esm/capture.d.ts +2 -0
- package/dist/esm/capture.js +1 -1
- package/dist/esm/components/AnalyticsDetail.js +31 -31
- package/dist/esm/components/AnalyticsEventCard.js +1 -1
- package/dist/esm/components/AnalyticsGraph.js +74 -74
- package/dist/esm/components/AnimatedBrandOwl.js +114 -114
- package/dist/esm/components/AppHeaderLogo.js +7 -7
- package/dist/esm/components/BrandCircleIcon.js +70 -70
- package/dist/esm/components/BrandSquareIcon.js +61 -61
- package/dist/esm/components/ConsoleLogCard.js +1 -1
- package/dist/esm/components/Inspector/AnalyticsTab.js +14 -14
- package/dist/esm/components/Inspector/ConfirmationModal.js +23 -25
- package/dist/esm/components/Inspector/ConsoleTab.js +17 -17
- package/dist/esm/components/Inspector/CrashTab.js +202 -169
- package/dist/esm/components/Inspector/DeviceInfoTab.js +75 -75
- package/dist/esm/components/Inspector/FabLauncher.js +56 -51
- package/dist/esm/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
- package/dist/esm/components/Inspector/FloatingCaptureWidget.js +54 -0
- package/dist/esm/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
- package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +234 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +162 -152
- package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +1 -1
- package/dist/esm/components/Inspector/LanguageSelectorModal.js +140 -58
- package/dist/esm/components/Inspector/MainScreen.js +61 -54
- package/dist/esm/components/Inspector/MediaGalleryTab.js +55 -52
- package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +36 -0
- package/dist/esm/components/Inspector/MediaPreviewModal.js +345 -123
- package/dist/esm/components/Inspector/NetworkTab.js +74 -74
- package/dist/esm/components/Inspector/PushCard.js +1 -1
- package/dist/esm/components/Inspector/PushDetail.js +18 -18
- package/dist/esm/components/Inspector/PushTab.js +1 -1
- package/dist/esm/components/Inspector/ReduxTab.js +18 -16
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +43 -0
- package/dist/esm/components/Inspector/SettingsPanel.js +224 -195
- package/dist/esm/components/Inspector/SocketCard.js +8 -8
- package/dist/esm/components/Inspector/SocketDetail.js +106 -96
- package/dist/esm/components/Inspector/SocketTab.js +18 -18
- package/dist/esm/components/Inspector/StorageTab.js +47 -47
- package/dist/esm/components/Inspector/SupportModal.js +64 -64
- package/dist/esm/components/Inspector/SupportPage.js +5 -5
- package/dist/esm/components/JsonViewer.js +51 -49
- package/dist/esm/components/LogCard.js +41 -39
- package/dist/esm/components/ModuleErrorBoundary.js +10 -10
- package/dist/esm/components/NetworkIcons.d.ts +27 -0
- package/dist/esm/components/NetworkIcons.js +101 -3
- package/dist/esm/constants/telemetryConfig.d.ts +3 -3
- package/dist/esm/constants/telemetryConfig.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/crash.d.ts +1 -1
- package/dist/esm/crash.js +1 -1
- package/dist/esm/customHooks/crashHandler.d.ts +2 -1
- package/dist/esm/customHooks/crashHandler.js +7 -7
- package/dist/esm/editor.d.ts +13 -0
- package/dist/esm/editor.js +1 -0
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +4 -4
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/helpers/telemetry.js +1 -1
- package/dist/esm/i18n/index.js +1 -1
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -1
- package/dist/esm/i18n/locales/de.json +1 -1
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -1
- package/dist/esm/i18n/locales/fr.json +1 -1
- package/dist/esm/i18n/locales/gu.json +1 -1
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -1
- package/dist/esm/i18n/locales/it.json +1 -1
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -1
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -1
- package/dist/esm/i18n/locales/mr.json +1 -1
- package/dist/esm/i18n/locales/nl.json +1 -1
- package/dist/esm/i18n/locales/pa.json +1 -1
- package/dist/esm/i18n/locales/pl.json +1 -1
- package/dist/esm/i18n/locales/pt.json +1 -1
- package/dist/esm/i18n/locales/ru.json +1 -1
- package/dist/esm/i18n/locales/ta.json +1 -1
- package/dist/esm/i18n/locales/te.json +1 -1
- package/dist/esm/i18n/locales/tr.json +1 -1
- package/dist/esm/i18n/locales/vi.json +1 -1
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/dist/esm/index.d.ts +4 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/native/NativeInspector.d.ts +3 -0
- package/dist/esm/native/NativeInspector.js +1 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
- package/dist/esm/styles/AppColors.d.ts +42 -2
- package/dist/esm/styles/AppColors.js +1 -1
- package/dist/esm/styles/common.js +1 -1
- package/dist/esm/styles/index.d.ts +7 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/editor.d.ts +96 -0
- package/dist/esm/types/editor.js +1 -0
- package/dist/esm/types/interfaces.d.ts +21 -0
- package/editor.d.ts +1 -0
- package/editor.js +1 -0
- package/ios/NetworkInspectorModule.mm +429 -0
- package/package.json +10 -1
- package/react-native-inapp-inspector.podspec +1 -1
- package/src/native/NativeInspector.ts +57 -4
- package/src/native/NativeNetworkInspector.ts +4 -0
|
@@ -1,76 +1,78 @@
|
|
|
1
|
-
import re,{useEffect as te,useRef as oe,useMemo as ne}from"react";import{Alert as
|
|
1
|
+
import re,{useEffect as te,useRef as oe,useMemo as ne}from"react";import{Alert as le,Animated as W,Linking as F,View as C,Pressable as A,Text as T,StyleSheet as E}from"react-native";import Ce,{Path as Te}from"react-native-svg";import{AppColors as e}from"../styles/AppColors";import{METHOD_COLORS as U}from"../constants";import{getStatusColor as Se,getDurationColor as Be,formatDateTime as Re,getSize as He,getPath as Ve,getBaseUrl as ze}from"../helpers";import{CalendarIcon as Ie,ClockIcon as N,SizeIcon as Le,CircleCheckIcon as $e,CircleAlertIcon as De,CircleXIcon as Oe,RepeatIcon as We,ForwardChevronIcon as Fe,GlobeIcon as Pe}from"./NetworkIcons";import{AppFonts as S}from"../styles/AppFonts";import G from"./HighlightText";import Me from"./TouchableScale";import{useTranslation as ve}from"../i18n";function Ae({item:r,onPress:B,timelineMinStart:Ue,timelineTotalRange:qe,isNew:$,isSelected:P,onToggleSelect:J,searchStr:j}){const{t:z}=ve(),M=U[r.method]??U.ALL,H=ne(()=>{try{const o=new URL(r.url),L=o.host,v=o.pathname+(o.search?o.search:""),ee=o.protocol==="https:";return{host:L,path:v||"/",isHttps:ee}}catch{const o=r.url.toLowerCase().startsWith("https:"),L=Ve(r.url);return{host:ze(r.url).replace(/^https?:\/\//,""),path:L||r.url,isHttps:o}}},[r.url]),K=o=>{o?.stopPropagation?.(),le.alert(z("common.openInBrowser")||"Open in Browser",`${z("common.openInBrowserPrompt")||"Are you sure you want to open this URL in your external browser?"}
|
|
2
2
|
|
|
3
|
-
${
|
|
4
|
-
<
|
|
3
|
+
${r.url}`,[{text:z("common.cancel")||"Cancel",style:"cancel"},{text:z("common.open")||"Open",onPress:()=>{F.canOpenURL(r.url).then(L=>{L?F.openURL(r.url):F.openURL(r.url).catch(()=>{})}).catch(()=>{})}}])},R=r.status===0||r.status!=null&&r.status>=400,V=r.status==null,D=Se(r.status),I=Be(r.duration),Q=V?e.darkOrange:R?e.errorColor:e.greenColor,O=oe(new W.Value($?.35:0)).current;te(()=>{$&&W.timing(O,{toValue:0,duration:1200,useNativeDriver:!0}).start()},[$,O]);const X=()=>{if(V)return"...";if(r.status===0||r.status==null)return z("network.statusFailed")||"FAILED";const o=typeof r.status=="number"?r.status:parseInt(String(r.status||0),10);return o===200?"200 OK":o===201?"201 Created":o===204?"204 No Content":o===304?"304 Not Modified":o===400?"400 Bad Req":o===401?"401 Unauth":o===403?"403 Forbidden":o===404?"404 Not Found":o===500?"500 Error":String(r.status)},_=()=>{if(V)return<N color={e.darkOrange}size={10}/>;const o=typeof r.status=="number"?r.status:parseInt(String(r.status||0),10);return o>=200&&o<300?<$e color={e.greenColor}size={10}/>:o>=300&&o<400?<We color={e.amber700}size={10}/>:o>=400&&o<500?<De color={e.darkOrange}size={10}/>:<Oe color={e.errorColor}size={10}/>},Y=Re(r.startTime),Z=r.url.split("?")[0].toLowerCase().endsWith(".json");return<C style={t.container}>
|
|
4
|
+
<Me onPress={B}style={[t.card,{borderLeftWidth:3.5,borderLeftColor:Q,backgroundColor:R?e.errorCardBg:e.white}]}>
|
|
5
5
|
<C style={t.cardBody}>
|
|
6
6
|
|
|
7
7
|
<C style={t.cardHeaderRow}>
|
|
8
8
|
<C style={t.cardHeaderLeft}>
|
|
9
|
-
<A onPress={()=>
|
|
9
|
+
<A onPress={()=>J(r.id)}hitSlop={12}style={[t.smallCheckbox,P&&t.smallCheckboxChecked]}>
|
|
10
10
|
{P&&<Ce width={9}height={9}viewBox="0 0 24 24"fill="none">
|
|
11
|
-
<Te d="M20 6L9 17l-5-5"stroke={
|
|
11
|
+
<Te d="M20 6L9 17l-5-5"stroke={e.white}strokeWidth="4"strokeLinecap="round"strokeLinejoin="round"/>
|
|
12
12
|
</Ce>}
|
|
13
13
|
</A>
|
|
14
14
|
|
|
15
|
-
<T style={t.serialNumber}>#{
|
|
15
|
+
<T style={t.serialNumber}>#{r.id+1}</T>
|
|
16
16
|
|
|
17
|
-
<C style={[t.methodBadge,{backgroundColor:
|
|
17
|
+
<C style={[t.methodBadge,{backgroundColor:M}]}>
|
|
18
18
|
<T style={t.methodBadgeText}>
|
|
19
|
-
{
|
|
19
|
+
{r.method}
|
|
20
20
|
</T>
|
|
21
21
|
</C>
|
|
22
22
|
|
|
23
|
-
{
|
|
24
|
-
<T style={[t.chipText,{color:
|
|
25
|
-
{
|
|
23
|
+
{r.client&&<C style={[t.chip,{backgroundColor:r.client==="axios"?`${e.purple}14`:r.client==="apollo"||r.client==="graphql"?`${e.pink500}14`:r.client==="xhr"?`${e.amber500}14`:`${e.sky500}14`,borderColor:r.client==="axios"?`${e.purple}30`:r.client==="apollo"||r.client==="graphql"?`${e.pink500}30`:r.client==="xhr"?`${e.amber500}30`:`${e.sky500}30`}]}>
|
|
24
|
+
<T style={[t.chipText,{color:r.client==="axios"?e.purple:r.client==="apollo"||r.client==="graphql"?e.pink500:r.client==="xhr"?e.amber700:e.sky600}]}>
|
|
25
|
+
{r.client.toUpperCase()}
|
|
26
26
|
</T>
|
|
27
27
|
</C>}
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
{(
|
|
31
|
-
<T style={[t.chipText,{color:
|
|
30
|
+
{(r.url.toLowerCase().includes("graphql")||r.client==="apollo"||r.client==="graphql")&&<C style={[t.chip,{backgroundColor:e.roseBg,borderColor:e.roseBorder}]}>
|
|
31
|
+
<T style={[t.chipText,{color:e.pink600}]}>
|
|
32
32
|
GQL
|
|
33
33
|
</T>
|
|
34
34
|
</C>}
|
|
35
35
|
</C>
|
|
36
36
|
|
|
37
37
|
<C style={t.cardHeaderRight}>
|
|
38
|
-
<C style={[t.statusPill,{backgroundColor:R?`${
|
|
38
|
+
<C style={[t.statusPill,{backgroundColor:R?`${e.errorColor}14`:V?`${e.darkOrange}14`:`${D}14`,borderColor:R?`${e.errorColor}33`:V?`${e.darkOrange}33`:`${D}33`}]}>
|
|
39
39
|
{_()}
|
|
40
|
-
<T style={[t.statusPillText,{color:R?
|
|
40
|
+
<T style={[t.statusPillText,{color:R?e.errorColor:V?e.darkOrange:D}]}>
|
|
41
41
|
{X()}
|
|
42
42
|
</T>
|
|
43
43
|
</C>
|
|
44
44
|
<A onPress={K}hitSlop={8}style={t.globeBtn}accessibilityRole="button"accessibilityLabel="Open in Browser">
|
|
45
|
-
<Pe color={
|
|
45
|
+
<Pe color={e.grayTextWeak}size={12}/>
|
|
46
46
|
</A>
|
|
47
|
-
<Fe color={
|
|
47
|
+
<Fe color={e.grayTextWeak}size={13}/>
|
|
48
48
|
</C>
|
|
49
49
|
</C>
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
<C style={t.urlBox}>
|
|
53
|
+
|
|
53
54
|
<C style={t.urlMainRow}>
|
|
54
|
-
<
|
|
55
|
+
<C style={t.hostRow}>
|
|
56
|
+
<C style={[t.protoBadge,{backgroundColor:H.isHttps?`${e.emerald600}12`:`${e.amber600}12`,borderColor:H.isHttps?`${e.emerald600}2B`:`${e.amber600}2B`}]}>
|
|
57
|
+
<T style={[t.protoBadgeText,{color:H.isHttps?e.emerald600:e.amber700}]}>
|
|
58
|
+
{H.isHttps?"HTTPS":"HTTP"}
|
|
59
|
+
</T>
|
|
60
|
+
</C>
|
|
61
|
+
<G text={H.host||r.url}search={j}style={t.hostText}highlightStyle={t.highlight}numberOfLines={1}ellipsizeMode="tail"/>
|
|
62
|
+
</C>
|
|
55
63
|
<C style={t.urlBadgeRow}>
|
|
56
64
|
{Z&&<C style={t.jsonBadge}>
|
|
57
65
|
<T style={t.jsonBadgeText}>.json</T>
|
|
58
66
|
</C>}
|
|
59
|
-
{
|
|
60
|
-
<T style={t.dupBadgeText}>×{
|
|
67
|
+
{r.duplicateCount!=null&&r.duplicateCount>1&&<C style={t.dupBadge}>
|
|
68
|
+
<T style={t.dupBadgeText}>×{r.duplicateCount}</T>
|
|
61
69
|
</C>}
|
|
62
70
|
</C>
|
|
63
71
|
</C>
|
|
64
72
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
{H.isHttps?"HTTPS":"HTTP"}
|
|
69
|
-
</T>
|
|
70
|
-
</C>
|
|
71
|
-
<T style={t.hostText}numberOfLines={1}ellipsizeMode="tail">
|
|
72
|
-
{H.host||e.url}
|
|
73
|
-
</T>
|
|
73
|
+
|
|
74
|
+
<C style={t.slugRow}>
|
|
75
|
+
<G text={H.path}search={j}style={t.pathText}highlightStyle={t.highlight}numberOfLines={1}ellipsizeMode="middle"/>
|
|
74
76
|
</C>
|
|
75
77
|
</C>
|
|
76
78
|
|
|
@@ -78,23 +80,23 @@ ${e.url}`,[{text:z("common.cancel")||"Cancel",style:"cancel"},{text:z("common.op
|
|
|
78
80
|
<C style={t.cardFooterRow}>
|
|
79
81
|
<C style={t.footerLeft}>
|
|
80
82
|
<C style={t.cardDateRow}>
|
|
81
|
-
<Ie color={
|
|
83
|
+
<Ie color={e.grayTextWeak}size={10}/>
|
|
82
84
|
<T style={t.cardDateText}numberOfLines={1}>{Y}</T>
|
|
83
85
|
</C>
|
|
84
86
|
</C>
|
|
85
87
|
|
|
86
88
|
<C style={t.footerRight}>
|
|
87
|
-
{
|
|
88
|
-
<Le color={
|
|
89
|
+
{r.response!=null&&<C style={t.metaStatChip}>
|
|
90
|
+
<Le color={e.purple}size={9}/>
|
|
89
91
|
<T style={t.metaStatText}>
|
|
90
|
-
{He(
|
|
92
|
+
{He(r.response)}
|
|
91
93
|
</T>
|
|
92
94
|
</C>}
|
|
93
95
|
|
|
94
|
-
{
|
|
96
|
+
{r.duration!=null&&!R&&<C style={[t.metaStatChip,{backgroundColor:`${I}12`,borderColor:`${I}2E`}]}>
|
|
95
97
|
<N color={I}size={9}/>
|
|
96
98
|
<T style={[t.metaStatText,{color:I}]}>
|
|
97
|
-
{
|
|
99
|
+
{r.duration}ms
|
|
98
100
|
</T>
|
|
99
101
|
</C>}
|
|
100
102
|
</C>
|
|
@@ -102,10 +104,10 @@ ${e.url}`,[{text:z("common.cancel")||"Cancel",style:"cancel"},{text:z("common.op
|
|
|
102
104
|
|
|
103
105
|
|
|
104
106
|
<C style={t.waterfallContainer}>
|
|
105
|
-
{typeof
|
|
107
|
+
{typeof r.duration=="number"&&r.duration>0&&!R&&<C style={[t.waterfallBar,{width:`${Math.min(100,Math.max(6,r.duration/1200*100))}%`,backgroundColor:I}]}/>}
|
|
106
108
|
</C>
|
|
107
109
|
</C>
|
|
108
110
|
|
|
109
|
-
{$&&<
|
|
110
|
-
</
|
|
111
|
-
</C>}const t=E.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:
|
|
111
|
+
{$&&<W.View pointerEvents="none"style={[E.absoluteFill,{backgroundColor:M,opacity:O}]}/>}
|
|
112
|
+
</Me>
|
|
113
|
+
</C>}const t=E.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString},cardBody:{height:"100%",paddingHorizontal:8,paddingTop:8,paddingBottom:6,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:4,gap:4.5,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},smallCheckbox:{width:15,height:15,borderRadius:4,borderWidth:1.5,borderColor:e.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:e.white},smallCheckboxChecked:{backgroundColor:e.purple,borderColor:e.purple},serialNumber:{fontFamily:S.interBold,color:e.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:e.white},chip:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:S.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12},globeBtn:{padding:3,borderRadius:4,backgroundColor:`${e.grayTextWeak}12`,alignItems:"center",justifyContent:"center"},urlBox:{backgroundColor:e.grayBackground,borderRadius:7,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:7,paddingVertical:4.5,height:48,minHeight:48,maxHeight:48,justifyContent:"center",gap:2.5,overflow:"hidden"},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:4,minHeight:16},hostRow:{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0},protoBadge:{paddingHorizontal:4,paddingVertical:1,borderRadius:3.5,borderWidth:1},protoBadgeText:{fontFamily:S.interBold,fontSize:8,lineHeight:10},hostText:{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:e.primaryBlack,flex:1},urlBadgeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},jsonBadge:{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},jsonBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.darkOrange},dupBadge:{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.purple},slugRow:{flexDirection:"row",alignItems:"center",minHeight:15},pathText:{fontFamily:S.interMedium,fontSize:10.5,lineHeight:14,color:e.slate600||e.grayText,flex:1},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:4},footerLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:S.interRegular,fontSize:10,lineHeight:13,color:e.slate400},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.violetSoftBg,borderColor:e.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:S.interBold,color:e.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:e.graySurface,borderRadius:1.5,overflow:"hidden",marginTop:2},waterfallBar:{height:"100%",borderRadius:1.5}});function Ee(r,B){return r.item===B.item&&r.isSelected===B.isSelected&&r.isNew===B.isNew&&r.searchStr===B.searchStr&&r.timelineMinStart===B.timelineMinStart&&r.timelineTotalRange===B.timelineTotalRange&&r.onPress===B.onPress&&r.onToggleSelect===B.onToggleSelect}export default re.memo(Ae,Ee);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{Component as
|
|
1
|
+
import{Component as I}from"react";import{StyleSheet as O,Text as T,View as C,TouchableOpacity as E,Platform as k}from"react-native";import{AppFonts as S}from"../styles/AppFonts";import{AppColors as e}from"../styles/AppColors";import{copyToClipboard as V}from"../helpers";import{WarningTriangleIcon as D,RefreshCcwIcon as B,CopyIcon as F}from"./NetworkIcons";import{handleInterceptedCrash as W}from"../customHooks/crashHandler";import{CrashType as M}from"../types/enums";export class ModuleErrorBoundary extends I{constructor(){super(...arguments),this.state={hasError:!1,error:null,copied:!1},this.handleRetry=()=>{this.setState({hasError:!1,error:null,copied:!1}),this.props.onRetry&&this.props.onRetry()},this.handleCopy=()=>{if(!this.state.error)return;const t=`[Module Error: ${this.props.moduleName||"Micro-Feature"}]
|
|
2
2
|
Message: ${this.state.error.message}
|
|
3
|
-
Stack: ${this.state.error.stack||"N/A"}`;
|
|
3
|
+
Stack: ${this.state.error.stack||"N/A"}`;V(t),this.setState({copied:!0}),setTimeout(()=>{this.setState({copied:!1})},2e3)}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,R){try{W(t,t?.stack,!1,M.Js,R.componentStack||void 0)}catch{}this.props.onError&&this.props.onError(t,R)}render(){if(this.state.hasError&&this.state.error){const{fallback:t,moduleName:R="UI Module",containerStyle:z}=this.props;return typeof t=="function"?t(this.state.error,this.handleRetry):t||<C style={[r.card,z]}>
|
|
4
4
|
<C style={r.headerRow}>
|
|
5
5
|
<C style={r.titleRow}>
|
|
6
|
-
<
|
|
6
|
+
<D color={e.red600}size={16}/>
|
|
7
7
|
<T style={r.moduleName}numberOfLines={1}>
|
|
8
8
|
{R}
|
|
9
9
|
</T>
|
|
@@ -18,16 +18,16 @@ Stack: ${this.state.error.stack||"N/A"}`;I(t),this.setState({copied:!0}),setTime
|
|
|
18
18
|
</T>
|
|
19
19
|
|
|
20
20
|
<C style={r.actionsRow}>
|
|
21
|
-
<
|
|
22
|
-
<
|
|
21
|
+
<E style={r.retryButton}onPress={this.handleRetry}activeOpacity={.7}>
|
|
22
|
+
<B color={e.white}size={12}/>
|
|
23
23
|
<T style={r.retryText}>Retry Module</T>
|
|
24
|
-
</
|
|
24
|
+
</E>
|
|
25
25
|
|
|
26
|
-
<
|
|
27
|
-
<
|
|
26
|
+
<E style={r.copyButton}onPress={this.handleCopy}activeOpacity={.7}>
|
|
27
|
+
<F color={e.slate600}size={12}/>
|
|
28
28
|
<T style={r.copyText}>
|
|
29
29
|
{this.state.copied?"Copied":"Copy Error"}
|
|
30
30
|
</T>
|
|
31
|
-
</
|
|
31
|
+
</E>
|
|
32
32
|
</C>
|
|
33
|
-
</C>}return this.props.children}}export default ModuleErrorBoundary;const r=
|
|
33
|
+
</C>}return this.props.children}}export default ModuleErrorBoundary;const r=O.create({card:{backgroundColor:e.red50,borderColor:`${e.red500}33`,borderWidth:1.2,borderRadius:16,padding:14,marginVertical:6,gap:10,...k?.select?k.select({ios:{shadowColor:e.red600,shadowOffset:{width:0,height:2},shadowOpacity:.06,shadowRadius:6},android:{elevation:2}}):{elevation:2}},headerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},titleRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},moduleName:{fontSize:12.5,fontWeight:"800",color:e.redErrorText,fontFamily:S.interBold,flexShrink:1},badge:{backgroundColor:e.red100,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${e.red500}4D`},badgeText:{fontSize:8.5,fontWeight:"800",color:e.rose700,letterSpacing:.4},message:{fontSize:11.5,color:e.redErrorText,lineHeight:16,fontFamily:S.interRegular},actionsRow:{flexDirection:"row",alignItems:"center",gap:8,marginTop:2},retryButton:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:e.red600,paddingVertical:7,paddingHorizontal:12,borderRadius:9},retryText:{fontSize:11,fontWeight:"700",color:e.white,fontFamily:S.interBold},copyButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,backgroundColor:e.graySurface,paddingVertical:7,paddingHorizontal:12,borderRadius:9,borderWidth:1,borderColor:e.grayBorderSecondary},copyText:{fontSize:11,fontWeight:"600",color:e.grayText,fontFamily:S.interMedium}});
|
|
@@ -145,6 +145,9 @@ export declare const HelpCircleIcon: ({ color, size, }: IconProps) => React.JSX.
|
|
|
145
145
|
export declare const SendIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
146
146
|
export declare const LifeBuoyIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
147
147
|
export declare const CameraIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
148
|
+
export declare const ScreenshotCaptureIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
149
|
+
export declare const CameraLensIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
150
|
+
export declare const ScreenRecordIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
148
151
|
export declare const VideoCameraIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
149
152
|
export declare const MicrophoneIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
150
153
|
export declare const GifIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
@@ -183,3 +186,27 @@ export declare const SupportIcon: ({ color, size, }: IconProps) => React.JSX.Ele
|
|
|
183
186
|
export declare const HeartIcon: ({ color, size, fill, }: IconProps & {
|
|
184
187
|
fill?: string;
|
|
185
188
|
}) => React.JSX.Element;
|
|
189
|
+
export declare const CropIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
190
|
+
export declare const RotateIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
191
|
+
export declare const RedactIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
192
|
+
export declare const AnnotateIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
193
|
+
export declare const ScissorsIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
194
|
+
export declare const VolumeXIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
195
|
+
export declare const MailIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
196
|
+
export declare const ActivityIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
197
|
+
export declare const SpeedIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
198
|
+
export declare const BatteryChargingIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
199
|
+
export declare const BatteryFullIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
200
|
+
export declare const PenIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
201
|
+
export declare const ShapesIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
202
|
+
export declare const RectangleIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
203
|
+
export declare const CircleIconOutline: ({ color, size }: IconProps) => React.JSX.Element;
|
|
204
|
+
export declare const EllipseIconOutline: ({ color, size }: IconProps) => React.JSX.Element;
|
|
205
|
+
export declare const TypeIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
206
|
+
export declare const BlurIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
207
|
+
export declare const ZoomInIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
208
|
+
export declare const ZoomOutIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
209
|
+
export declare const UndoIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
210
|
+
export declare const ResizeIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
211
|
+
export declare const AspectRatioIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
212
|
+
export declare const GripVerticalIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}from"react-native-svg";import{AppColors as p}from"../styles/AppColors";export const EmptyRadarIcon=({color:e=p.purple,size:t=32})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
1
|
+
import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Polygon as V,Polyline as C,Rect as B}from"react-native-svg";import{AppColors as p}from"../styles/AppColors";export const EmptyRadarIcon=({color:e=p.purple,size:t=32})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
2
2
|
<L d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"stroke={e}strokeWidth="1.5"strokeLinecap="round"strokeLinejoin="round"/>
|
|
3
3
|
<M cx="12"cy="11"r="3"stroke={e}strokeWidth="1.5"/>
|
|
4
4
|
<L d="M12 14v3"stroke={e}strokeWidth="1.5"strokeLinecap="round"/>
|
|
@@ -260,7 +260,7 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
|
|
|
260
260
|
</W>,PackageBoxIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
261
261
|
<L d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"stroke={e}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
|
|
262
262
|
<L d="M3.27 6.96L12 12.01l8.73-5.05M12 22.08V12"stroke={e}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
|
|
263
|
-
</W>,StarIcon=({color:e=
|
|
263
|
+
</W>,StarIcon=({color:e=p.amber500,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill={e}>
|
|
264
264
|
<L d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"stroke={e}strokeWidth="1.5"strokeLinecap="round"strokeLinejoin="round"/>
|
|
265
265
|
</W>,GitHubIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
266
266
|
<L d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"stroke={e}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
|
|
@@ -336,7 +336,7 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
|
|
|
336
336
|
<L d="M8 3c-2 1-3 2.5-3 5 0 2-1 3.5-2 4 1 .5 2 2 2 4 0 2.5 1 4 3 5M16 3c2 1 3 2.5 3 5 0 2 1 3.5 2 4-1 .5-2 2-2 4 0 2.5-1 4-3 5"stroke={e}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
|
|
337
337
|
</W>,AppFramesIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
338
338
|
<L d="M4 6h16M4 10h11M4 14h16M4 18h9"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
339
|
-
<L d="M18 12.5l2 2 3-3.5"stroke=
|
|
339
|
+
<L d="M18 12.5l2 2 3-3.5"stroke={p.emerald600}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
|
|
340
340
|
</W>,AllFramesIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
341
341
|
<L d="M4 4h16M4 8h16M4 12h16M4 16h16M4 20h10"stroke={e}strokeWidth="1.8"strokeLinecap="round"/>
|
|
342
342
|
<B x="16"y="16"width="4"height="4"rx="1"fill={e}/>
|
|
@@ -441,6 +441,19 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
|
|
|
441
441
|
</W>,CameraIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
442
442
|
<L d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
443
443
|
<M cx="12"cy="13"r="4"stroke={e}strokeWidth="2"/>
|
|
444
|
+
</W>,ScreenshotCaptureIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
445
|
+
<L d="M3 7V4a1 1 0 0 1 1-1h3M17 3h3a1 1 0 0 1 1 1v3M21 17v3a1 1 0 0 1-1 1h-3M7 21H4a1 1 0 0 1-1-1v-3"stroke={e}strokeWidth="2.2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
446
|
+
<M cx="12"cy="12"r="4.2"stroke={e}strokeWidth="2"/>
|
|
447
|
+
<M cx="12"cy="12"r="1.8"fill={e}/>
|
|
448
|
+
</W>,CameraLensIcon=({color:e=p.white,size:t=20})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
449
|
+
<M cx="12"cy="12"r="9"stroke={e}strokeWidth="1.8"/>
|
|
450
|
+
<M cx="12"cy="12"r="6"stroke={e}strokeWidth="1.4"strokeDasharray="3 2"/>
|
|
451
|
+
<M cx="12"cy="12"r="3"fill={e}/>
|
|
452
|
+
<L d="M12 3v2M12 19v2M3 12h2M19 12h2"stroke={e}strokeWidth="1.8"strokeLinecap="round"/>
|
|
453
|
+
</W>,ScreenRecordIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
454
|
+
<B x="2"y="4"width="14"height="16"rx="3"stroke={e}strokeWidth="2"/>
|
|
455
|
+
<L d="M16 10l5-3.5v11L16 14v-4z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
456
|
+
<M cx="9"cy="12"r="2.5"fill={e}/>
|
|
444
457
|
</W>,VideoCameraIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
445
458
|
<L d="M23 7l-7 5 7 5V7z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
446
459
|
<B x="1"y="5"width="15"height="14"rx="2"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
@@ -572,4 +585,89 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
|
|
|
572
585
|
<S x1="4.93"y1="19.07"x2="9.17"y2="14.83"stroke={e}strokeWidth="1.8"strokeLinecap="round"/>
|
|
573
586
|
</W>,HeartIcon=({color:e=p.red500,size:t=20,fill:I=e})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
574
587
|
<L d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"fill={I}/>
|
|
588
|
+
</W>,CropIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
589
|
+
<L d="M6.13 1L6 16a2 2 0 0 0 2 2h15"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
590
|
+
<L d="M1 6.13L16 6a2 2 0 0 1 2 2v15"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
591
|
+
</W>,RotateIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
592
|
+
<L d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
593
|
+
</W>,RedactIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
594
|
+
<L d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
595
|
+
<S x1="1"y1="1"x2="23"y2="23"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
596
|
+
</W>,AnnotateIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
597
|
+
<L d="M12 20h9"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
598
|
+
<L d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
599
|
+
</W>,ScissorsIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
600
|
+
<M cx="6"cy="6"r="3"stroke={e}strokeWidth="2"/>
|
|
601
|
+
<M cx="6"cy="18"r="3"stroke={e}strokeWidth="2"/>
|
|
602
|
+
<S x1="20"y1="4"x2="8.12"y2="15.88"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
603
|
+
<S x1="14.47"y1="14.48"x2="20"y2="20"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
604
|
+
<S x1="8.12"y1="8.12"x2="12"y2="12"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
605
|
+
</W>,VolumeXIcon=({color:e=p.white,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
606
|
+
<V points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
607
|
+
<S x1="23"y1="9"x2="17"y2="15"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
608
|
+
<S x1="17"y1="9"x2="23"y2="15"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
609
|
+
</W>,MailIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
610
|
+
<L d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
611
|
+
<L d="M22 6l-10 7L2 6"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
612
|
+
</W>,ActivityIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
613
|
+
<L d="M22 12h-4l-3 9L9 3l-3 9H2"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
614
|
+
</W>,SpeedIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
615
|
+
<L d="M12 2v4M4.93 4.93l2.83 2.83M2 12h4M4.93 19.07l2.83-2.83M12 22v-4M19.07 19.07l-2.83-2.83M22 12h-4M19.07 4.93l-2.83 2.83"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
616
|
+
</W>,BatteryChargingIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
617
|
+
<L d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2M19 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2M23 13v-2"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
618
|
+
<L d="M11 6l-4 7h6l-4 7"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
619
|
+
</W>,BatteryFullIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
620
|
+
<B x="1"y="6"width="18"height="12"rx="2"stroke={e}strokeWidth="2"/>
|
|
621
|
+
<S x1="23"y1="13"x2="23"y2="11"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
622
|
+
<B x="4"y="9"width="12"height="6"fill={e}rx="1"/>
|
|
623
|
+
</W>,PenIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
624
|
+
<L d="M12 19l7-7 3 3-7 7-3-3z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
625
|
+
<L d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
626
|
+
<L d="M2 2l7.586 7.586"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
627
|
+
<M cx="11"cy="11"r="2"stroke={e}strokeWidth="2"/>
|
|
628
|
+
</W>,ShapesIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
629
|
+
<B x="3"y="3"width="8"height="8"rx="1.5"stroke={e}strokeWidth="2"/>
|
|
630
|
+
<M cx="17.5"cy="17.5"r="4.5"stroke={e}strokeWidth="2"/>
|
|
631
|
+
<V points="18,3 22,11 14,11"stroke={e}strokeWidth="2"strokeLinejoin="round"/>
|
|
632
|
+
</W>,RectangleIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
633
|
+
<B x="3"y="5"width="18"height="14"rx="2"stroke={e}strokeWidth="2"/>
|
|
634
|
+
</W>,CircleIconOutline=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
635
|
+
<M cx="12"cy="12"r="9"stroke={e}strokeWidth="2"/>
|
|
636
|
+
</W>,EllipseIconOutline=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
637
|
+
<T cx="12"cy="12"rx="10"ry="6"stroke={e}strokeWidth="2"/>
|
|
638
|
+
</W>,TypeIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
639
|
+
<C points="4 7 4 4 20 4 20 7"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
640
|
+
<S x1="9"y1="20"x2="15"y2="20"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
641
|
+
<S x1="12"y1="4"x2="12"y2="20"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
642
|
+
</W>,BlurIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
643
|
+
<M cx="12"cy="12"r="10"stroke={e}strokeWidth="2"/>
|
|
644
|
+
<L d="M12 2a10 10 0 0 1 0 20V2z"fill={e}opacity={.4}/>
|
|
645
|
+
<S x1="12"y1="2"x2="12"y2="22"stroke={e}strokeWidth="2"/>
|
|
646
|
+
</W>,ZoomInIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
647
|
+
<M cx="11"cy="11"r="8"stroke={e}strokeWidth="2"/>
|
|
648
|
+
<S x1="21"y1="21"x2="16.65"y2="16.65"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
649
|
+
<S x1="11"y1="8"x2="11"y2="14"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
650
|
+
<S x1="8"y1="11"x2="14"y2="11"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
651
|
+
</W>,ZoomOutIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
652
|
+
<M cx="11"cy="11"r="8"stroke={e}strokeWidth="2"/>
|
|
653
|
+
<S x1="21"y1="21"x2="16.65"y2="16.65"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
654
|
+
<S x1="8"y1="11"x2="14"y2="11"stroke={e}strokeWidth="2"strokeLinecap="round"/>
|
|
655
|
+
</W>,UndoIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
656
|
+
<L d="M3 7v6h6"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
657
|
+
<L d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
658
|
+
</W>,ResizeIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
659
|
+
<C points="15 3 21 3 21 9"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
660
|
+
<C points="9 21 3 21 3 15"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
661
|
+
<S x1="21"y1="3"x2="14"y2="10"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
662
|
+
<S x1="3"y1="21"x2="10"y2="14"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
663
|
+
</W>,AspectRatioIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
664
|
+
<B x="2"y="4"width="20"height="16"rx="2"stroke={e}strokeWidth="2"/>
|
|
665
|
+
<L d="M8 8H5v3M16 16h3v-3"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
|
|
666
|
+
</W>,GripVerticalIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
|
|
667
|
+
<M cx="9"cy="5"r="1.5"fill={e}/>
|
|
668
|
+
<M cx="9"cy="12"r="1.5"fill={e}/>
|
|
669
|
+
<M cx="9"cy="19"r="1.5"fill={e}/>
|
|
670
|
+
<M cx="15"cy="5"r="1.5"fill={e}/>
|
|
671
|
+
<M cx="15"cy="12"r="1.5"fill={e}/>
|
|
672
|
+
<M cx="15"cy="19"r="1.5"fill={e}/>
|
|
575
673
|
</W>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const ENC_MID = "";
|
|
2
|
-
export declare const ENC_SEC = "";
|
|
3
|
-
export declare const TELEMETRY_SALT = "";
|
|
1
|
+
export declare const ENC_MID = "df8ace0290a695bd05986213";
|
|
2
|
+
export declare const ENC_SEC = "db93cb0186b1f7bb0ba63a0d0a64997586849455ce37";
|
|
3
|
+
export declare const TELEMETRY_SALT = "rn-inapp-inspector-telemetry-v1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const ENC_MID="",ENC_SEC="",TELEMETRY_SALT="";
|
|
1
|
+
export const ENC_MID="df8ace0290a695bd05986213",ENC_SEC="db93cb0186b1f7bb0ba63a0d0a64997586849455ce37",TELEMETRY_SALT="rn-inapp-inspector-telemetry-v1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "2.
|
|
1
|
+
export declare const LIB_VERSION = "2.5.1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const LIB_VERSION="2.
|
|
1
|
+
export const LIB_VERSION="2.5.1";
|
package/dist/esm/crash.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { setupGlobalCrashHandler, subscribeCrashEvents, emitCrashEvent, getCrashRecords, clearCrashRecords, simulateTestCrash, exportCrashReport, parseCrashStackTrace, setMaxCrashLogsLimit, getMaxCrashLogsLimit, pruneCrashRecords, setCrashModuleEnabled, getCrashModuleEnabled, } from './customHooks/crashHandler';
|
|
1
|
+
export { setupGlobalCrashHandler, subscribeCrashEvents, emitCrashEvent, getCrashRecords, clearCrashRecords, simulateTestCrash, exportCrashReport, parseCrashStackTrace, triggerGlobalCrashScreen, setMaxCrashLogsLimit, getMaxCrashLogsLimit, pruneCrashRecords, setCrashModuleEnabled, getCrashModuleEnabled, } from './customHooks/crashHandler';
|
|
2
2
|
export type { CrashRecord, CrashBreadcrumb, } from './types';
|
|
3
3
|
export { CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
|
package/dist/esm/crash.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{setupGlobalCrashHandler,subscribeCrashEvents,emitCrashEvent,getCrashRecords,clearCrashRecords,simulateTestCrash,exportCrashReport,parseCrashStackTrace,setMaxCrashLogsLimit,getMaxCrashLogsLimit,pruneCrashRecords,setCrashModuleEnabled,getCrashModuleEnabled}from"./customHooks/crashHandler";export{CrashType,CrashExportFormat,CrashDetailSubTab,CrashFilterType,BreadcrumbType}from"./types";
|
|
1
|
+
export{setupGlobalCrashHandler,subscribeCrashEvents,emitCrashEvent,getCrashRecords,clearCrashRecords,simulateTestCrash,exportCrashReport,parseCrashStackTrace,triggerGlobalCrashScreen,setMaxCrashLogsLimit,getMaxCrashLogsLimit,pruneCrashRecords,setCrashModuleEnabled,getCrashModuleEnabled}from"./customHooks/crashHandler";export{CrashType,CrashExportFormat,CrashDetailSubTab,CrashFilterType,BreadcrumbType}from"./types";
|
|
@@ -35,6 +35,7 @@ export declare const recordCustomCrash: (error: Error | string, options?: {
|
|
|
35
35
|
type?: CrashType;
|
|
36
36
|
componentStack?: string;
|
|
37
37
|
}) => CrashRecord;
|
|
38
|
-
export declare const
|
|
38
|
+
export declare const triggerGlobalCrashScreen: (crashRecord: CrashRecord) => void;
|
|
39
|
+
export declare const simulateTestCrash: (type?: CrashType, customMessage?: string, customStack?: string, isFatal?: boolean) => CrashRecord;
|
|
39
40
|
export declare const exportCrashReport: (crash: CrashRecord, format?: CrashExportFormat) => string;
|
|
40
41
|
export declare const setupGlobalCrashHandler: () => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{LogBox as M,NativeModules as v,TurboModuleRegistry as D,NativeEventEmitter as F,Platform as y,AppState as L,Dimensions as B}from"react-native";import{CrashExportFormat as A,CrashType as
|
|
2
|
-
`),n=[];for(const o of
|
|
3
|
-
`):
|
|
4
|
-
`).slice(1,6).map(
|
|
5
|
-
`)}catch{}};export const exportCrashReport=(e,
|
|
6
|
-
`)}const o=[];return o.push("===================================================="),o.push(` ${s("crash.reportTitle")} `),o.push("===================================================="),o.push(`${s("crash.reportErrorName")} ${e.name||"Error"}`),o.push(`${s("crash.reportMessage")} ${e.message}`),o.push(`${s("crash.reportType")} ${e.type.toUpperCase()}`),o.push(`${s("crash.reportFatal")} ${e.isFatal?s("crash.reportFatalYes"):s("crash.reportFatalNo")}`),o.push(`${s("crash.reportTimestamp")} ${e.dateStr} ${e.timeStr} (${e.timestamp})`),o.push(`${s("crash.reportUptime")} ${s("crash.reportUptimeValue",{seconds:n})}`),o.push(`${s("crash.reportPlatform")} ${e.deviceInfo?.platform?.toUpperCase()} (v${e.deviceInfo?.osVersion})`),o.push(`${s("crash.reportReactNative")} ${e.deviceInfo?.rnVersion||"N/A"}`),o.push(`${s("crash.reportHermes")} ${e.deviceInfo?.isHermes?s("crash.reportEnabled"):s("crash.reportDisabled")}`),o.push(`${s("crash.reportArchitecture")} ${e.deviceInfo?.isFabric?s("crash.reportFabricNew"):s("crash.reportPaperLegacy")}`),o.push(`${s("crash.reportScreenSize")} ${z()}`),o.push(`${s("crash.reportAppState")} ${e.deviceInfo?.appState||"active"}`),e.memoryInfo&&o.push(`${s("crash.reportJsMemory")} ${e.memoryInfo.usedJSHeapSize} MB / ${e.memoryInfo.totalJSHeapSize} MB`),o.push("----------------------------------------------------"),o.push(`${s("crash.reportStackTrace")}`),o.push(e.stack||s("crash.reportNoStackTrace")),e.componentStack&&(o.push("----------------------------------------------------"),o.push(`${s("crash.reportComponentHierarchy")}`),o.push(e.componentStack)),e.breadcrumbs&&e.breadcrumbs.length>0&&(o.push("----------------------------------------------------"),o.push(`${s("crash.reportRecentBreadcrumbs")}`),e.breadcrumbs.forEach(
|
|
7
|
-
`)},setupGlobalCrashHandler=()=>{if(!
|
|
1
|
+
import{LogBox as M,NativeModules as v,TurboModuleRegistry as D,NativeEventEmitter as F,Platform as y,AppState as L,Dimensions as B}from"react-native";import{CrashExportFormat as A,CrashType as h}from"../types/enums";import{addLogFromCrash as H}from"./consoleLogger";import{showNativeFloatingButton as U,setNativeFloatingButtonBadge as _}from"../native/NativeInspector";import{t as s}from"../i18n";export{A as CrashExportFormat};let E=[],N=!1,I=0,l=[],f=[];const R=50;let S=100;const T=Date.now();let k=!1;export const setCrashModuleEnabled=e=>{k=e},getCrashModuleEnabled=()=>k,setMaxCrashLogsLimit=e=>{S=Math.max(10,e),l.length>S&&(l=l.slice(0,S))},getMaxCrashLogsLimit=()=>S,pruneCrashRecords=e=>{const r=e!==void 0?Math.max(0,e):Math.floor(l.length/2),n=l.length-r;return n>0&&(l=l.slice(0,r)),f.length>20&&(f=f.slice(0,20)),Math.max(0,n)},addCrashBreadcrumb=(e,r,n)=>{if(k)try{const o={type:e,message:r,timestamp:Date.now(),data:n};f.unshift(o),f.length>R&&(f=f.slice(0,R))}catch{}},recordNavigationBreadcrumb=(e,r)=>{addCrashBreadcrumb("navigation",s("crash.breadcrumbNavigation",{from:e||"/",to:r||"/"}),{from:e,to:r})},recordNetworkBreadcrumb=(e,r,n,o)=>{const t=n!=null?` [${n}]`:"",a=o!=null?` (${Math.round(o)}ms)`:"";addCrashBreadcrumb("network",`${r.toUpperCase()} ${e}${t}${a}`,{url:e,method:r,status:n,duration:o})},recordReduxBreadcrumb=(e,r)=>{addCrashBreadcrumb("redux",s("crash.breadcrumbAction",{actionType:e}),{type:e,payloadSummary:typeof r=="object"&&r!==null?Object.keys(r):typeof r})},recordUserActionBreadcrumb=(e,r)=>{addCrashBreadcrumb("user",e,r)},clearCrashBreadcrumbs=()=>{f=[]},getCrashBreadcrumbs=()=>[...f],parseCrashStackTrace=e=>{if(!e||typeof e!="string")return[];const r=e.split(`
|
|
2
|
+
`),n=[];for(const o of r){const t=o.trim();if(!t||t.includes("crashHandler.ts")||t.includes("handleInterceptedCrash")||t.includes("addLogFromCrash")||t.includes("setupGlobalCrashHandler"))continue;const a=t.match(/^([^@]+)@(.*):(\d+):(\d+)$/);if(a){const[,c,i,m,g]=a,b=i.split("?")[0].split("/").pop()||i,x=!i.includes("node_modules")&&!i.includes("react-native")&&!i.includes("react-dom")&&!i.includes("hermes")&&!i.includes("internal");n.push({method:c.trim(),file:b,lineNumber:parseInt(m,10),column:parseInt(g,10),raw:t,isAppCode:x});continue}const u=t.match(/^at\s+(.+)\s+\((.+):(\d+):(\d+)\)$/);if(u){const[,c,i,m,g]=u,b=i.split("?")[0].split("/").pop()||i,x=!i.includes("node_modules")&&!i.includes("react-native")&&!i.includes("react-dom")&&!i.includes("internal");n.push({method:c.trim(),file:b,lineNumber:parseInt(m,10),column:parseInt(g,10),raw:t,isAppCode:x});continue}const d=t.match(/^at\s+(.+):(\d+):(\d+)$/);if(d){const[,c,i,m]=d,g=c.split("?")[0].split("/").pop()||c,b=!c.includes("node_modules")&&!c.includes("react-native");n.push({method:"<anonymous>",file:g,lineNumber:parseInt(i,10),column:parseInt(m,10),raw:t,isAppCode:b});continue}const $=t.match(/^at\s+([a-zA-Z0-9_$.]+)\(([a-zA-Z0-9_$]+\.java):(\d+)\)$/);if($){const[,c,i,m]=$,g=!c.startsWith("com.facebook.react")&&!c.startsWith("android.");n.push({method:c,file:i,lineNumber:parseInt(m,10),column:0,raw:t,isAppCode:g});continue}const p=t.match(/^\d+\s+([^\s]+)\s+(0x[0-9a-fA-F]+)\s+(.+)$/);if(p){const[,c,,i]=p,m=!c.startsWith("lib")&&!c.startsWith("Core")&&!c.startsWith("React");n.push({method:i,file:c,lineNumber:0,column:0,raw:t,isAppCode:m});continue}n.push({method:t.startsWith("at ")?t.slice(3):t,file:"runtime",lineNumber:0,column:0,raw:t,isAppCode:!1})}return n};const J=()=>{try{const e=globalThis.performance;if(e&&e.memory)return{usedJSHeapSize:Math.round(e.memory.usedJSHeapSize/(1024*1024)),totalJSHeapSize:Math.round(e.memory.totalJSHeapSize/(1024*1024))}}catch{}},z=()=>{try{const e=B.get("window");return`${Math.round(e.width)}x${Math.round(e.height)} (${e.scale}x)`}catch{return s("crash.unknown")}};export const computeCrashFingerprint=e=>{const r=e.type||"js",n=e.name||"Error",o=e.parsedStack&&e.parsedStack.length>0?e.parsedStack[0]:null,t=o?`${o.file}:${o.lineNumber}`:"unknown";return`${r}_${n}_${t}`},getCrashRecords=()=>[...l],clearCrashRecords=()=>{l=[],emitCrashEvent({error:null,message:"__CLEARED__",timestamp:Date.now()})},subscribeCrashEvents=e=>(E.push(e),()=>{E=E.filter(r=>r!==e)}),emitCrashEvent=e=>{if(e.message!=="__CLEARED__"){const r=Date.now();if(r-I<250)return;I=r}E.forEach(r=>{try{r(e)}catch{}})},handleInterceptedCrash=(e,r,n=!1,o,t)=>{try{const a=e instanceof Error||typeof e=="object"&&e!==null?e:new Error(String(e||s("crash.runtimeException"))),u=a.message||(typeof e=="string"?e:s("crash.runtimeException"));let d="";typeof r=="string"?d=r:Array.isArray(r)?d=r.map(C=>`at ${C.methodName||"<anonymous>"} (${C.file||"unknown"}:${C.lineNumber||0}:${C.column||0})`).join(`
|
|
3
|
+
`):d=a.stack||new Error().stack||"";let $=o||h.Js;const p=u.toLowerCase();o||(p.includes("native")||p.includes("sigsegv")||p.includes("nsrange")||p.includes("nullpointerexception")||p.includes("fatal signal")?$=h.Native:p.includes("promise")||p.includes("unhandled rejection")||p.includes("unhandledrejection")?$=h.Promise:p.includes("render")||p.includes("errorboundary")||t?$=h.Render:$=h.Js);const c=new Date,i=c.toLocaleDateString(),m=c.toLocaleTimeString(),g=parseCrashStackTrace(d),b=H(a,`[${n?s("crash.logFatalCrash"):s("crash.logUnhandledError")}] ${u}`,d,n),x=typeof globalThis.HermesInternal<"u",j=typeof globalThis.nativeFabricUIManager<"u",w={id:`crash_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,error:a,isFatal:n,type:$,message:u,name:a.name||(n?s("crash.errorNameFatal"):s("crash.errorNameUnhandled")),stack:d,parsedStack:g,componentStack:t||void 0,timestamp:Date.now(),dateStr:i,timeStr:m,deviceInfo:{platform:y.OS,osVersion:String(y.Version),rnVersion:y.constants?.reactNativeVersion?`${y.constants.reactNativeVersion.major}.${y.constants.reactNativeVersion.minor}.${y.constants.reactNativeVersion.patch}`:s("crash.unknown"),isHermes:x,isFabric:j,appState:L.currentState||"active"},memoryInfo:J(),breadcrumbs:[...f],logId:b?.id};l.unshift(w),l.length>S&&(l=l.slice(0,S)),emitCrashEvent({error:a,isFatal:n,message:`[${n?s("crash.logFatalCrash"):s("crash.logUnhandledError")}] ${u}`,stack:d,timestamp:Date.now(),logId:b?.id,crashRecord:w});try{U(),_(!0)}catch{}return w}catch{return{id:`crash_${Date.now()}`,isFatal:!0,type:h.Js,message:String(e||s("crash.unknownException")),timestamp:Date.now(),dateStr:new Date().toLocaleDateString(),timeStr:new Date().toLocaleTimeString()}}},recordCustomCrash=(e,r)=>handleInterceptedCrash(e,typeof e=="object"?e.stack:void 0,r?.isFatal??!1,r?.type||h.Custom,r?.componentStack),triggerGlobalCrashScreen=e=>{emitCrashEvent({error:e.error||new Error(e.message),isFatal:!0,message:e.message,stack:e.stack,timestamp:e.timestamp||Date.now(),logId:e.logId,crashRecord:e})},simulateTestCrash=(e=h.Js,r,n,o=!0)=>{const t=new Error(r||P(e));return handleInterceptedCrash(e===h.Native?t.message:t,n||t.stack,o,e,e===h.Render?V():void 0)};const P=e=>{switch(e){case"native":return s("crash.simNativeMessage");case"promise":return s("crash.simPromiseMessage");case"render":return s("crash.simRenderMessage");default:return s("crash.simJsMessage")}},V=()=>{try{const e=new Error;if(e.stack)return e.stack.split(`
|
|
4
|
+
`).slice(1,6).map(r=>` ${r.trim()}`).join(`
|
|
5
|
+
`)}catch{}};export const exportCrashReport=(e,r="text")=>{if(r==="json")return JSON.stringify(e,null,2);const n=Math.round((e.timestamp-T)/1e3);if(r==="markdown"){const t=[];return t.push(`## ${s("crash.mdReportTitle",{name:e.name||"Error"})}`),t.push(`> **${e.message}**`),t.push(""),t.push(`- **${s("crash.reportType")}** \`${e.type.toUpperCase()}\``),t.push(`- **${s("crash.reportFatal")}** \`${e.isFatal?s("crash.mdSeverityFatal"):s("crash.mdSeverityHandled")}\``),t.push(`- **${s("crash.reportTimestamp")}** ${e.dateStr} ${e.timeStr}`),t.push(`- **${s("crash.reportUptime")}** ${n}s`),t.push(`- **${s("crash.reportPlatform")}** ${e.deviceInfo?.platform?.toUpperCase()} (v${e.deviceInfo?.osVersion})`),t.push(`- **${s("crash.reportReactNative")}** v${e.deviceInfo?.rnVersion||"N/A"}`),t.push(`- **${s("crash.jsEngine")}** ${e.deviceInfo?.isHermes?s("crash.hermesEngine"):s("crash.jsc")}`),t.push(`- **${s("crash.reportArchitecture")}** ${e.deviceInfo?.isFabric?s("crash.reportFabricNew"):s("crash.reportPaperLegacy")}`),e.memoryInfo&&t.push(`- **${s("crash.reportJsMemory")}** ${e.memoryInfo.usedJSHeapSize} MB / ${e.memoryInfo.totalJSHeapSize} MB`),t.push(""),t.push(`### ${s("crash.mdStackTrace")}`),t.push("```"),t.push(e.stack||s("crash.reportNoStackTrace")),t.push("```"),e.componentStack&&(t.push(""),t.push(`### ${s("crash.mdComponentHierarchy")}`),t.push("```"),t.push(e.componentStack),t.push("```")),e.breadcrumbs&&e.breadcrumbs.length>0&&(t.push(""),t.push(`### ${s("crash.mdRecentBreadcrumbs")}`),e.breadcrumbs.forEach(a=>{const u=new Date(a.timestamp).toLocaleTimeString();t.push(`- \`[${u}]\` **[${a.type.toUpperCase()}]** ${a.message}`)})),t.join(`
|
|
6
|
+
`)}const o=[];return o.push("===================================================="),o.push(` ${s("crash.reportTitle")} `),o.push("===================================================="),o.push(`${s("crash.reportErrorName")} ${e.name||"Error"}`),o.push(`${s("crash.reportMessage")} ${e.message}`),o.push(`${s("crash.reportType")} ${e.type.toUpperCase()}`),o.push(`${s("crash.reportFatal")} ${e.isFatal?s("crash.reportFatalYes"):s("crash.reportFatalNo")}`),o.push(`${s("crash.reportTimestamp")} ${e.dateStr} ${e.timeStr} (${e.timestamp})`),o.push(`${s("crash.reportUptime")} ${s("crash.reportUptimeValue",{seconds:n})}`),o.push(`${s("crash.reportPlatform")} ${e.deviceInfo?.platform?.toUpperCase()} (v${e.deviceInfo?.osVersion})`),o.push(`${s("crash.reportReactNative")} ${e.deviceInfo?.rnVersion||"N/A"}`),o.push(`${s("crash.reportHermes")} ${e.deviceInfo?.isHermes?s("crash.reportEnabled"):s("crash.reportDisabled")}`),o.push(`${s("crash.reportArchitecture")} ${e.deviceInfo?.isFabric?s("crash.reportFabricNew"):s("crash.reportPaperLegacy")}`),o.push(`${s("crash.reportScreenSize")} ${z()}`),o.push(`${s("crash.reportAppState")} ${e.deviceInfo?.appState||"active"}`),e.memoryInfo&&o.push(`${s("crash.reportJsMemory")} ${e.memoryInfo.usedJSHeapSize} MB / ${e.memoryInfo.totalJSHeapSize} MB`),o.push("----------------------------------------------------"),o.push(`${s("crash.reportStackTrace")}`),o.push(e.stack||s("crash.reportNoStackTrace")),e.componentStack&&(o.push("----------------------------------------------------"),o.push(`${s("crash.reportComponentHierarchy")}`),o.push(e.componentStack)),e.breadcrumbs&&e.breadcrumbs.length>0&&(o.push("----------------------------------------------------"),o.push(`${s("crash.reportRecentBreadcrumbs")}`),e.breadcrumbs.forEach(t=>{const a=new Date(t.timestamp).toLocaleTimeString();o.push(` [${a}] [${t.type.toUpperCase()}] ${t.message}`)})),o.push("===================================================="),o.join(`
|
|
7
|
+
`)},setupGlobalCrashHandler=()=>{if(!N){N=!0;try{M&&typeof M.ignoreAllLogs=="function"&&M.ignoreAllLogs(!0)}catch{}try{const e=require("react-native/Libraries/LogBox/Data/LogBoxData");e&&typeof e.setDisabled=="function"&&e.setDisabled(!0)}catch{}try{const e=v?.NetworkInspectorModule;e&&(typeof e.enableNativeCrashProtection=="function"&&e.enableNativeCrashProtection(),new F(e).addListener("onNativeCrash",n=>{const t=`[${(n?.platform||y.OS).toUpperCase()} ${s("crash.nativeCrashTitle")}] ${n?.message||s("crash.nativeUncaughtException")}`,a=n?.stack||"";handleInterceptedCrash(t,a,!0,"native")}))}catch{}try{const e=D||globalThis.__turboModuleProxy,r=v?.ExceptionsManager||(e?.get?e.get("ExceptionsManager"):null);if(r){r.reportFatalException=(o,t,a)=>{handleInterceptedCrash(o,t,!0,"native");try{typeof r.dismissRedbox=="function"&&r.dismissRedbox()}catch{}},r.reportSoftException=(o,t,a)=>{handleInterceptedCrash(o,t,!1,"js");try{typeof r.dismissRedbox=="function"&&r.dismissRedbox()}catch{}},r.reportException=o=>{const t=o?.message||o?.title||s("crash.nativeException"),a=o?.stack||o?.rawStack;handleInterceptedCrash(t,a,o?.isFatal??!0,"js");try{typeof r.dismissRedbox=="function"&&r.dismissRedbox()}catch{}},r.updateExceptionMessage=()=>{};try{typeof r.dismissRedbox=="function"&&r.dismissRedbox()}catch{}}const n=v?.RedBox||v?.RCTRedBox||(e?.get?e.get("RedBox")||e.get("RCTRedBox"):null);n&&(typeof n.showErrorMessage=="function"&&(n.showErrorMessage=()=>{}),typeof n.showUserError=="function"&&(n.showUserError=()=>{}),typeof n.dismiss=="function"&&n.dismiss())}catch{}try{const r=globalThis.ErrorUtils;r&&(typeof r.setGlobalHandler=="function"&&r.setGlobalHandler((n,o)=>{handleInterceptedCrash(n,n?.stack,o??!1,"js")}),typeof r.reportFatalError=="function"&&(r.reportFatalError=n=>{handleInterceptedCrash(n,n?.stack,!0,"js")}),typeof r.reportError=="function"&&(r.reportError=n=>{handleInterceptedCrash(n,n?.stack,!1,"js")}))}catch{}try{const e=globalThis,r=n=>{try{const o=n?.reason||n?.detail?.reason||n,t=o?.stack||(n?.stack??new Error().stack);handleInterceptedCrash(o,t,!1,"promise")}catch{}};typeof e.addEventListener=="function"&&e.addEventListener("unhandledrejection",r),typeof e.onunhandledrejection<"u"&&(e.onunhandledrejection=r)}catch{}}};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PhotoEditOptions, PhotoEditResult, VideoTrimOptions, VideoTrimResult, FilmstripOptions, FilmstripResult } from './types/editor';
|
|
2
|
+
export * from './types/editor';
|
|
3
|
+
export declare const MediaEditor: {
|
|
4
|
+
editPhoto: (options: PhotoEditOptions) => Promise<PhotoEditResult | null>;
|
|
5
|
+
trimVideo: (options: VideoTrimOptions) => Promise<VideoTrimResult | null>;
|
|
6
|
+
generateFilmstrip: (options: FilmstripOptions) => Promise<FilmstripResult | null>;
|
|
7
|
+
cropToDefect: (uri: string, crop: import("./types/editor").CropRect, options?: Partial<PhotoEditOptions>) => Promise<PhotoEditResult | null>;
|
|
8
|
+
redactSensitiveData: (uri: string, redactions: import("./types/editor").RedactionBox[], options?: Partial<PhotoEditOptions>) => Promise<PhotoEditResult | null>;
|
|
9
|
+
annotateDefect: (uri: string, annotations: import("./types/editor").AnnotationBox[], options?: Partial<PhotoEditOptions>) => Promise<PhotoEditResult | null>;
|
|
10
|
+
trimReproClip: (uri: string, startTimeMs: number, endTimeMs: number, options?: Partial<VideoTrimOptions>) => Promise<VideoTrimResult | null>;
|
|
11
|
+
muteVideo: (uri: string, options?: Partial<VideoTrimOptions>) => Promise<VideoTrimResult | null>;
|
|
12
|
+
};
|
|
13
|
+
export default MediaEditor;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{editNativePhoto as n,trimNativeVideo as d,generateNativeFilmstrip as h}from"./native/NativeInspector";export*from"./types/editor";export const MediaEditor={editPhoto:async t=>{if(!t||typeof t.uri!="string"||!t.uri.trim())return null;const e={...t,uri:t.uri.trim(),quality:typeof t.quality=="number"?Math.max(.01,Math.min(1,t.quality)):.9};return n(e)},trimVideo:async t=>{if(!t||typeof t.uri!="string"||!t.uri.trim())return null;const e=Math.max(0,Number(t.startTimeMs)||0),r=Number(t.endTimeMs)||0;if(r>0&&r<=e)return null;const i=!!(t.mute||t.muteAudio),a={...t,uri:t.uri.trim(),startTimeMs:e,endTimeMs:r,mute:i,muteAudio:i};return d(a)},generateFilmstrip:async t=>{if(!t||typeof t.uri!="string"||!t.uri.trim())return null;const e=Math.max(1,Math.min(50,Math.floor(Number(t.count)||8))),r=t.maxWidth||t.targetWidth,i=t.maxHeight||t.targetHeight,a=r?Math.max(32,Math.min(1920,Math.floor(r))):160,u=i?Math.max(32,Math.min(1080,Math.floor(i))):160,m={...t,uri:t.uri.trim(),count:e,maxWidth:a,targetWidth:a,maxHeight:u,targetHeight:u};return h(m)},cropToDefect:async(t,e,r)=>MediaEditor.editPhoto({uri:t,crop:e,...r}),redactSensitiveData:async(t,e,r)=>MediaEditor.editPhoto({uri:t,redactions:e,...r}),annotateDefect:async(t,e,r)=>MediaEditor.editPhoto({uri:t,annotations:e,...r}),trimReproClip:async(t,e,r,i)=>MediaEditor.trimVideo({uri:t,startTimeMs:e,endTimeMs:r,...i}),muteVideo:async(t,e)=>MediaEditor.trimVideo({uri:t,startTimeMs:0,endTimeMs:0,muteAudio:!0,...e})};export default MediaEditor;
|