react-native-prod-debugger 1.0.0

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 (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +350 -0
  3. package/lib/commonjs/core/DebugBubble.js +139 -0
  4. package/lib/commonjs/core/DebugBubble.js.map +1 -0
  5. package/lib/commonjs/core/DebugOverlay.js +184 -0
  6. package/lib/commonjs/core/DebugOverlay.js.map +1 -0
  7. package/lib/commonjs/core/DebuggerProvider.js +174 -0
  8. package/lib/commonjs/core/DebuggerProvider.js.map +1 -0
  9. package/lib/commonjs/core/GestureDetector.js +83 -0
  10. package/lib/commonjs/core/GestureDetector.js.map +1 -0
  11. package/lib/commonjs/core/PluginRegistry.js +124 -0
  12. package/lib/commonjs/core/PluginRegistry.js.map +1 -0
  13. package/lib/commonjs/core/theme.js +50 -0
  14. package/lib/commonjs/core/theme.js.map +1 -0
  15. package/lib/commonjs/core/types.js +6 -0
  16. package/lib/commonjs/core/types.js.map +1 -0
  17. package/lib/commonjs/core/useDebugger.js +27 -0
  18. package/lib/commonjs/core/useDebugger.js.map +1 -0
  19. package/lib/commonjs/core/utils.js +239 -0
  20. package/lib/commonjs/core/utils.js.map +1 -0
  21. package/lib/commonjs/index.js +132 -0
  22. package/lib/commonjs/index.js.map +1 -0
  23. package/lib/commonjs/plugins/console/ConsoleInterceptor.js +103 -0
  24. package/lib/commonjs/plugins/console/ConsoleInterceptor.js.map +1 -0
  25. package/lib/commonjs/plugins/console/ConsoleViewerPlugin.js +269 -0
  26. package/lib/commonjs/plugins/console/ConsoleViewerPlugin.js.map +1 -0
  27. package/lib/commonjs/plugins/crashReporter/CrashReporterPlugin.js +363 -0
  28. package/lib/commonjs/plugins/crashReporter/CrashReporterPlugin.js.map +1 -0
  29. package/lib/commonjs/plugins/customActions/CustomActionsPlugin.js +218 -0
  30. package/lib/commonjs/plugins/customActions/CustomActionsPlugin.js.map +1 -0
  31. package/lib/commonjs/plugins/customActions/actionStore.js +46 -0
  32. package/lib/commonjs/plugins/customActions/actionStore.js.map +1 -0
  33. package/lib/commonjs/plugins/deepLinkTester/DeepLinkTesterPlugin.js +268 -0
  34. package/lib/commonjs/plugins/deepLinkTester/DeepLinkTesterPlugin.js.map +1 -0
  35. package/lib/commonjs/plugins/deviceInfo/DeviceInfoPlugin.js +184 -0
  36. package/lib/commonjs/plugins/deviceInfo/DeviceInfoPlugin.js.map +1 -0
  37. package/lib/commonjs/plugins/featureFlags/FeatureFlagsPlugin.js +381 -0
  38. package/lib/commonjs/plugins/featureFlags/FeatureFlagsPlugin.js.map +1 -0
  39. package/lib/commonjs/plugins/featureFlags/flagStore.js +125 -0
  40. package/lib/commonjs/plugins/featureFlags/flagStore.js.map +1 -0
  41. package/lib/commonjs/plugins/navigationInspector/NavigationInspectorPlugin.js +250 -0
  42. package/lib/commonjs/plugins/navigationInspector/NavigationInspectorPlugin.js.map +1 -0
  43. package/lib/commonjs/plugins/navigationInspector/navigationStore.js +65 -0
  44. package/lib/commonjs/plugins/navigationInspector/navigationStore.js.map +1 -0
  45. package/lib/commonjs/plugins/network/NetworkInspectorPlugin.js +709 -0
  46. package/lib/commonjs/plugins/network/NetworkInspectorPlugin.js.map +1 -0
  47. package/lib/commonjs/plugins/network/NetworkInterceptor.js +305 -0
  48. package/lib/commonjs/plugins/network/NetworkInterceptor.js.map +1 -0
  49. package/lib/commonjs/plugins/performance/PerformanceMonitorPlugin.js +261 -0
  50. package/lib/commonjs/plugins/performance/PerformanceMonitorPlugin.js.map +1 -0
  51. package/lib/commonjs/plugins/remoteConfig/RemoteConfigPlugin.js +265 -0
  52. package/lib/commonjs/plugins/remoteConfig/RemoteConfigPlugin.js.map +1 -0
  53. package/lib/commonjs/plugins/remoteConfig/remoteConfigStore.js +50 -0
  54. package/lib/commonjs/plugins/remoteConfig/remoteConfigStore.js.map +1 -0
  55. package/lib/commonjs/plugins/stateInspector/StateInspectorPlugin.js +378 -0
  56. package/lib/commonjs/plugins/stateInspector/StateInspectorPlugin.js.map +1 -0
  57. package/lib/commonjs/plugins/stateInspector/stateAdapterRegistry.js +62 -0
  58. package/lib/commonjs/plugins/stateInspector/stateAdapterRegistry.js.map +1 -0
  59. package/lib/commonjs/plugins/storageBrowser/StorageBrowserPlugin.js +496 -0
  60. package/lib/commonjs/plugins/storageBrowser/StorageBrowserPlugin.js.map +1 -0
  61. package/lib/commonjs/plugins/storageBrowser/storageAdapterRegistry.js +44 -0
  62. package/lib/commonjs/plugins/storageBrowser/storageAdapterRegistry.js.map +1 -0
  63. package/lib/commonjs/plugins/timeline/TimelinePlugin.js +294 -0
  64. package/lib/commonjs/plugins/timeline/TimelinePlugin.js.map +1 -0
  65. package/lib/commonjs/plugins/timeline/timelineStore.js +61 -0
  66. package/lib/commonjs/plugins/timeline/timelineStore.js.map +1 -0
  67. package/lib/module/core/DebugBubble.js +131 -0
  68. package/lib/module/core/DebugBubble.js.map +1 -0
  69. package/lib/module/core/DebugOverlay.js +176 -0
  70. package/lib/module/core/DebugOverlay.js.map +1 -0
  71. package/lib/module/core/DebuggerProvider.js +167 -0
  72. package/lib/module/core/DebuggerProvider.js.map +1 -0
  73. package/lib/module/core/GestureDetector.js +75 -0
  74. package/lib/module/core/GestureDetector.js.map +1 -0
  75. package/lib/module/core/PluginRegistry.js +116 -0
  76. package/lib/module/core/PluginRegistry.js.map +1 -0
  77. package/lib/module/core/theme.js +43 -0
  78. package/lib/module/core/theme.js.map +1 -0
  79. package/lib/module/core/types.js +2 -0
  80. package/lib/module/core/types.js.map +1 -0
  81. package/lib/module/core/useDebugger.js +21 -0
  82. package/lib/module/core/useDebugger.js.map +1 -0
  83. package/lib/module/core/utils.js +219 -0
  84. package/lib/module/core/utils.js.map +1 -0
  85. package/lib/module/index.js +44 -0
  86. package/lib/module/index.js.map +1 -0
  87. package/lib/module/plugins/console/ConsoleInterceptor.js +97 -0
  88. package/lib/module/plugins/console/ConsoleInterceptor.js.map +1 -0
  89. package/lib/module/plugins/console/ConsoleViewerPlugin.js +262 -0
  90. package/lib/module/plugins/console/ConsoleViewerPlugin.js.map +1 -0
  91. package/lib/module/plugins/crashReporter/CrashReporterPlugin.js +357 -0
  92. package/lib/module/plugins/crashReporter/CrashReporterPlugin.js.map +1 -0
  93. package/lib/module/plugins/customActions/CustomActionsPlugin.js +211 -0
  94. package/lib/module/plugins/customActions/CustomActionsPlugin.js.map +1 -0
  95. package/lib/module/plugins/customActions/actionStore.js +38 -0
  96. package/lib/module/plugins/customActions/actionStore.js.map +1 -0
  97. package/lib/module/plugins/deepLinkTester/DeepLinkTesterPlugin.js +261 -0
  98. package/lib/module/plugins/deepLinkTester/DeepLinkTesterPlugin.js.map +1 -0
  99. package/lib/module/plugins/deviceInfo/DeviceInfoPlugin.js +177 -0
  100. package/lib/module/plugins/deviceInfo/DeviceInfoPlugin.js.map +1 -0
  101. package/lib/module/plugins/featureFlags/FeatureFlagsPlugin.js +374 -0
  102. package/lib/module/plugins/featureFlags/FeatureFlagsPlugin.js.map +1 -0
  103. package/lib/module/plugins/featureFlags/flagStore.js +117 -0
  104. package/lib/module/plugins/featureFlags/flagStore.js.map +1 -0
  105. package/lib/module/plugins/navigationInspector/NavigationInspectorPlugin.js +243 -0
  106. package/lib/module/plugins/navigationInspector/NavigationInspectorPlugin.js.map +1 -0
  107. package/lib/module/plugins/navigationInspector/navigationStore.js +58 -0
  108. package/lib/module/plugins/navigationInspector/navigationStore.js.map +1 -0
  109. package/lib/module/plugins/network/NetworkInspectorPlugin.js +703 -0
  110. package/lib/module/plugins/network/NetworkInspectorPlugin.js.map +1 -0
  111. package/lib/module/plugins/network/NetworkInterceptor.js +299 -0
  112. package/lib/module/plugins/network/NetworkInterceptor.js.map +1 -0
  113. package/lib/module/plugins/performance/PerformanceMonitorPlugin.js +254 -0
  114. package/lib/module/plugins/performance/PerformanceMonitorPlugin.js.map +1 -0
  115. package/lib/module/plugins/remoteConfig/RemoteConfigPlugin.js +258 -0
  116. package/lib/module/plugins/remoteConfig/RemoteConfigPlugin.js.map +1 -0
  117. package/lib/module/plugins/remoteConfig/remoteConfigStore.js +43 -0
  118. package/lib/module/plugins/remoteConfig/remoteConfigStore.js.map +1 -0
  119. package/lib/module/plugins/stateInspector/StateInspectorPlugin.js +372 -0
  120. package/lib/module/plugins/stateInspector/StateInspectorPlugin.js.map +1 -0
  121. package/lib/module/plugins/stateInspector/stateAdapterRegistry.js +54 -0
  122. package/lib/module/plugins/stateInspector/stateAdapterRegistry.js.map +1 -0
  123. package/lib/module/plugins/storageBrowser/StorageBrowserPlugin.js +489 -0
  124. package/lib/module/plugins/storageBrowser/StorageBrowserPlugin.js.map +1 -0
  125. package/lib/module/plugins/storageBrowser/storageAdapterRegistry.js +36 -0
  126. package/lib/module/plugins/storageBrowser/storageAdapterRegistry.js.map +1 -0
  127. package/lib/module/plugins/timeline/TimelinePlugin.js +287 -0
  128. package/lib/module/plugins/timeline/TimelinePlugin.js.map +1 -0
  129. package/lib/module/plugins/timeline/timelineStore.js +54 -0
  130. package/lib/module/plugins/timeline/timelineStore.js.map +1 -0
  131. package/lib/typescript/core/DebugBubble.d.ts +22 -0
  132. package/lib/typescript/core/DebugBubble.d.ts.map +1 -0
  133. package/lib/typescript/core/DebugOverlay.d.ts +18 -0
  134. package/lib/typescript/core/DebugOverlay.d.ts.map +1 -0
  135. package/lib/typescript/core/DebuggerProvider.d.ts +25 -0
  136. package/lib/typescript/core/DebuggerProvider.d.ts.map +1 -0
  137. package/lib/typescript/core/GestureDetector.d.ts +20 -0
  138. package/lib/typescript/core/GestureDetector.d.ts.map +1 -0
  139. package/lib/typescript/core/PluginRegistry.d.ts +41 -0
  140. package/lib/typescript/core/PluginRegistry.d.ts.map +1 -0
  141. package/lib/typescript/core/theme.d.ts +11 -0
  142. package/lib/typescript/core/theme.d.ts.map +1 -0
  143. package/lib/typescript/core/types.d.ts +269 -0
  144. package/lib/typescript/core/types.d.ts.map +1 -0
  145. package/lib/typescript/core/useDebugger.d.ts +14 -0
  146. package/lib/typescript/core/useDebugger.d.ts.map +1 -0
  147. package/lib/typescript/core/utils.d.ts +46 -0
  148. package/lib/typescript/core/utils.d.ts.map +1 -0
  149. package/lib/typescript/index.d.ts +23 -0
  150. package/lib/typescript/index.d.ts.map +1 -0
  151. package/lib/typescript/plugins/console/ConsoleInterceptor.d.ts +32 -0
  152. package/lib/typescript/plugins/console/ConsoleInterceptor.d.ts.map +1 -0
  153. package/lib/typescript/plugins/console/ConsoleViewerPlugin.d.ts +3 -0
  154. package/lib/typescript/plugins/console/ConsoleViewerPlugin.d.ts.map +1 -0
  155. package/lib/typescript/plugins/crashReporter/CrashReporterPlugin.d.ts +3 -0
  156. package/lib/typescript/plugins/crashReporter/CrashReporterPlugin.d.ts.map +1 -0
  157. package/lib/typescript/plugins/customActions/CustomActionsPlugin.d.ts +3 -0
  158. package/lib/typescript/plugins/customActions/CustomActionsPlugin.d.ts.map +1 -0
  159. package/lib/typescript/plugins/customActions/actionStore.d.ts +16 -0
  160. package/lib/typescript/plugins/customActions/actionStore.d.ts.map +1 -0
  161. package/lib/typescript/plugins/deepLinkTester/DeepLinkTesterPlugin.d.ts +3 -0
  162. package/lib/typescript/plugins/deepLinkTester/DeepLinkTesterPlugin.d.ts.map +1 -0
  163. package/lib/typescript/plugins/deviceInfo/DeviceInfoPlugin.d.ts +3 -0
  164. package/lib/typescript/plugins/deviceInfo/DeviceInfoPlugin.d.ts.map +1 -0
  165. package/lib/typescript/plugins/featureFlags/FeatureFlagsPlugin.d.ts +3 -0
  166. package/lib/typescript/plugins/featureFlags/FeatureFlagsPlugin.d.ts.map +1 -0
  167. package/lib/typescript/plugins/featureFlags/flagStore.d.ts +45 -0
  168. package/lib/typescript/plugins/featureFlags/flagStore.d.ts.map +1 -0
  169. package/lib/typescript/plugins/navigationInspector/NavigationInspectorPlugin.d.ts +3 -0
  170. package/lib/typescript/plugins/navigationInspector/NavigationInspectorPlugin.d.ts.map +1 -0
  171. package/lib/typescript/plugins/navigationInspector/navigationStore.d.ts +30 -0
  172. package/lib/typescript/plugins/navigationInspector/navigationStore.d.ts.map +1 -0
  173. package/lib/typescript/plugins/network/NetworkInspectorPlugin.d.ts +3 -0
  174. package/lib/typescript/plugins/network/NetworkInspectorPlugin.d.ts.map +1 -0
  175. package/lib/typescript/plugins/network/NetworkInterceptor.d.ts +42 -0
  176. package/lib/typescript/plugins/network/NetworkInterceptor.d.ts.map +1 -0
  177. package/lib/typescript/plugins/performance/PerformanceMonitorPlugin.d.ts +3 -0
  178. package/lib/typescript/plugins/performance/PerformanceMonitorPlugin.d.ts.map +1 -0
  179. package/lib/typescript/plugins/remoteConfig/RemoteConfigPlugin.d.ts +3 -0
  180. package/lib/typescript/plugins/remoteConfig/RemoteConfigPlugin.d.ts.map +1 -0
  181. package/lib/typescript/plugins/remoteConfig/remoteConfigStore.d.ts +20 -0
  182. package/lib/typescript/plugins/remoteConfig/remoteConfigStore.d.ts.map +1 -0
  183. package/lib/typescript/plugins/stateInspector/StateInspectorPlugin.d.ts +3 -0
  184. package/lib/typescript/plugins/stateInspector/StateInspectorPlugin.d.ts.map +1 -0
  185. package/lib/typescript/plugins/stateInspector/stateAdapterRegistry.d.ts +34 -0
  186. package/lib/typescript/plugins/stateInspector/stateAdapterRegistry.d.ts.map +1 -0
  187. package/lib/typescript/plugins/storageBrowser/StorageBrowserPlugin.d.ts +3 -0
  188. package/lib/typescript/plugins/storageBrowser/StorageBrowserPlugin.d.ts.map +1 -0
  189. package/lib/typescript/plugins/storageBrowser/storageAdapterRegistry.d.ts +16 -0
  190. package/lib/typescript/plugins/storageBrowser/storageAdapterRegistry.d.ts.map +1 -0
  191. package/lib/typescript/plugins/timeline/TimelinePlugin.d.ts +3 -0
  192. package/lib/typescript/plugins/timeline/TimelinePlugin.d.ts.map +1 -0
  193. package/lib/typescript/plugins/timeline/timelineStore.d.ts +24 -0
  194. package/lib/typescript/plugins/timeline/timelineStore.d.ts.map +1 -0
  195. package/package.json +131 -0
  196. package/src/core/DebugBubble.tsx +149 -0
  197. package/src/core/DebugOverlay.tsx +211 -0
  198. package/src/core/DebuggerProvider.tsx +211 -0
  199. package/src/core/GestureDetector.tsx +95 -0
  200. package/src/core/PluginRegistry.ts +118 -0
  201. package/src/core/theme.ts +41 -0
  202. package/src/core/types.ts +339 -0
  203. package/src/core/useDebugger.ts +24 -0
  204. package/src/core/utils.ts +221 -0
  205. package/src/index.ts +67 -0
  206. package/src/plugins/console/ConsoleInterceptor.ts +110 -0
  207. package/src/plugins/console/ConsoleViewerPlugin.tsx +241 -0
  208. package/src/plugins/crashReporter/CrashReporterPlugin.tsx +316 -0
  209. package/src/plugins/customActions/CustomActionsPlugin.tsx +199 -0
  210. package/src/plugins/customActions/actionStore.ts +49 -0
  211. package/src/plugins/deepLinkTester/DeepLinkTesterPlugin.tsx +213 -0
  212. package/src/plugins/deviceInfo/DeviceInfoPlugin.tsx +153 -0
  213. package/src/plugins/featureFlags/FeatureFlagsPlugin.tsx +338 -0
  214. package/src/plugins/featureFlags/flagStore.ts +118 -0
  215. package/src/plugins/navigationInspector/NavigationInspectorPlugin.tsx +170 -0
  216. package/src/plugins/navigationInspector/navigationStore.ts +70 -0
  217. package/src/plugins/network/NetworkInspectorPlugin.tsx +598 -0
  218. package/src/plugins/network/NetworkInterceptor.ts +344 -0
  219. package/src/plugins/performance/PerformanceMonitorPlugin.tsx +194 -0
  220. package/src/plugins/remoteConfig/RemoteConfigPlugin.tsx +205 -0
  221. package/src/plugins/remoteConfig/remoteConfigStore.ts +48 -0
  222. package/src/plugins/stateInspector/StateInspectorPlugin.tsx +342 -0
  223. package/src/plugins/stateInspector/stateAdapterRegistry.ts +66 -0
  224. package/src/plugins/storageBrowser/StorageBrowserPlugin.tsx +410 -0
  225. package/src/plugins/storageBrowser/storageAdapterRegistry.ts +47 -0
  226. package/src/plugins/timeline/TimelinePlugin.tsx +242 -0
  227. package/src/plugins/timeline/timelineStore.ts +65 -0
@@ -0,0 +1,357 @@
1
+ import React, { useState, useEffect, useCallback } from 'react';
2
+ import { View, Text, FlatList, TouchableOpacity, ScrollView, StyleSheet } from 'react-native';
3
+ import { generateId, formatTimestamp, copyToClipboard, shareText } from '../../core/utils';
4
+
5
+ // ─── Crash Store ────────────────────────────────────────────────────────────
6
+
7
+ class CrashStoreClass {
8
+ entries = [];
9
+ listeners = new Set();
10
+ isActive = false;
11
+ maxEntries = 100;
12
+ originalHandler = null;
13
+ start() {
14
+ if (this.isActive) return;
15
+ this.isActive = true;
16
+
17
+ // Capture unhandled JS errors
18
+ const ErrorUtils = globalThis.ErrorUtils;
19
+ if (ErrorUtils) {
20
+ this.originalHandler = ErrorUtils.getGlobalHandler();
21
+ ErrorUtils.setGlobalHandler((error, isFatal) => {
22
+ this.addEntry({
23
+ id: generateId(),
24
+ timestamp: Date.now(),
25
+ message: error.message,
26
+ stack: error.stack,
27
+ isFatal: isFatal ?? false
28
+ });
29
+ // Forward to original handler
30
+ if (this.originalHandler) {
31
+ this.originalHandler(error, isFatal);
32
+ }
33
+ });
34
+ }
35
+
36
+ // Capture unhandled promise rejections
37
+ const tracking = require('promise/setimmediate/rejection-tracking');
38
+ if (tracking) {
39
+ try {
40
+ tracking.enable({
41
+ allRejections: true,
42
+ onUnhandled: (_id, error) => {
43
+ this.addEntry({
44
+ id: generateId(),
45
+ timestamp: Date.now(),
46
+ message: error?.message || 'Unhandled Promise Rejection',
47
+ stack: error?.stack,
48
+ isFatal: false
49
+ });
50
+ }
51
+ });
52
+ } catch {
53
+ // Rejection tracking may not be available
54
+ }
55
+ }
56
+ }
57
+ stop() {
58
+ if (!this.isActive) return;
59
+ this.isActive = false;
60
+ const ErrorUtils = globalThis.ErrorUtils;
61
+ if (ErrorUtils && this.originalHandler) {
62
+ ErrorUtils.setGlobalHandler(this.originalHandler);
63
+ this.originalHandler = null;
64
+ }
65
+ }
66
+ addEntry(entry) {
67
+ this.entries = [entry, ...this.entries].slice(0, this.maxEntries);
68
+ this.notify();
69
+ }
70
+ getAll() {
71
+ return [...this.entries];
72
+ }
73
+ clear() {
74
+ this.entries = [];
75
+ this.notify();
76
+ }
77
+ subscribe(listener) {
78
+ this.listeners.add(listener);
79
+ listener(this.entries);
80
+ return () => this.listeners.delete(listener);
81
+ }
82
+ notify() {
83
+ const snapshot = this.entries;
84
+ for (const l of this.listeners) {
85
+ try {
86
+ l(snapshot);
87
+ } catch {
88
+ /* ignore */
89
+ }
90
+ }
91
+ }
92
+ }
93
+ const crashStore = new CrashStoreClass();
94
+
95
+ // ─── Crash Reporter Panel ───────────────────────────────────────────────────
96
+
97
+ const CrashReporterPanel = ({
98
+ theme
99
+ }) => {
100
+ const [entries, setEntries] = useState([]);
101
+ const [selectedEntry, setSelectedEntry] = useState(null);
102
+ useEffect(() => {
103
+ const unsub = crashStore.subscribe(setEntries);
104
+ return unsub;
105
+ }, []);
106
+ const handleClear = useCallback(() => {
107
+ crashStore.clear();
108
+ setSelectedEntry(null);
109
+ }, []);
110
+ if (selectedEntry) {
111
+ return /*#__PURE__*/React.createElement(View, {
112
+ style: styles.container
113
+ }, /*#__PURE__*/React.createElement(View, {
114
+ style: [styles.header, {
115
+ backgroundColor: theme.surface,
116
+ borderBottomColor: theme.border
117
+ }]
118
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
119
+ onPress: () => setSelectedEntry(null),
120
+ activeOpacity: 0.7
121
+ }, /*#__PURE__*/React.createElement(Text, {
122
+ style: [styles.backBtn, {
123
+ color: theme.accent
124
+ }]
125
+ }, "\u2190 Back")), /*#__PURE__*/React.createElement(View, {
126
+ style: styles.headerActions
127
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
128
+ onPress: () => copyToClipboard(`${selectedEntry.message}\n\n${selectedEntry.stack || ''}`),
129
+ activeOpacity: 0.7
130
+ }, /*#__PURE__*/React.createElement(Text, {
131
+ style: [styles.actionText, {
132
+ color: theme.accent
133
+ }]
134
+ }, "Copy")), /*#__PURE__*/React.createElement(TouchableOpacity, {
135
+ onPress: () => shareText(`${selectedEntry.message}\n\n${selectedEntry.stack || ''}`, 'Crash Report'),
136
+ activeOpacity: 0.7
137
+ }, /*#__PURE__*/React.createElement(Text, {
138
+ style: [styles.actionText, {
139
+ color: theme.accent
140
+ }]
141
+ }, "Share")))), /*#__PURE__*/React.createElement(ScrollView, {
142
+ style: styles.detailContent
143
+ }, /*#__PURE__*/React.createElement(View, {
144
+ style: [styles.crashBadge, {
145
+ backgroundColor: selectedEntry.isFatal ? theme.error : theme.warning
146
+ }]
147
+ }, /*#__PURE__*/React.createElement(Text, {
148
+ style: styles.crashBadgeText
149
+ }, selectedEntry.isFatal ? 'FATAL' : 'NON-FATAL')), /*#__PURE__*/React.createElement(Text, {
150
+ style: [styles.crashTime, {
151
+ color: theme.textMuted
152
+ }]
153
+ }, formatTimestamp(selectedEntry.timestamp)), /*#__PURE__*/React.createElement(Text, {
154
+ style: [styles.crashMessage, {
155
+ color: theme.text
156
+ }]
157
+ }, selectedEntry.message), selectedEntry.stack && /*#__PURE__*/React.createElement(View, {
158
+ style: [styles.stackBlock, {
159
+ backgroundColor: theme.codeBackground
160
+ }]
161
+ }, /*#__PURE__*/React.createElement(Text, {
162
+ style: [styles.stackText, {
163
+ color: theme.codeText
164
+ }],
165
+ selectable: true
166
+ }, selectedEntry.stack)), selectedEntry.componentStack && /*#__PURE__*/React.createElement(View, {
167
+ style: [styles.stackBlock, {
168
+ backgroundColor: theme.codeBackground,
169
+ marginTop: 12
170
+ }]
171
+ }, /*#__PURE__*/React.createElement(Text, {
172
+ style: [styles.stackLabel, {
173
+ color: theme.textSecondary
174
+ }]
175
+ }, "Component Stack"), /*#__PURE__*/React.createElement(Text, {
176
+ style: [styles.stackText, {
177
+ color: theme.codeText
178
+ }],
179
+ selectable: true
180
+ }, selectedEntry.componentStack))));
181
+ }
182
+ return /*#__PURE__*/React.createElement(View, {
183
+ style: styles.container
184
+ }, /*#__PURE__*/React.createElement(View, {
185
+ style: [styles.header, {
186
+ backgroundColor: theme.surface,
187
+ borderBottomColor: theme.border
188
+ }]
189
+ }, /*#__PURE__*/React.createElement(Text, {
190
+ style: [styles.headerTitle, {
191
+ color: theme.text
192
+ }]
193
+ }, entries.length > 0 ? `${entries.length} crashes` : 'No crashes 🎉'), entries.length > 0 && /*#__PURE__*/React.createElement(TouchableOpacity, {
194
+ onPress: handleClear,
195
+ activeOpacity: 0.7
196
+ }, /*#__PURE__*/React.createElement(Text, {
197
+ style: [styles.clearBtn, {
198
+ color: theme.error
199
+ }]
200
+ }, "Clear"))), /*#__PURE__*/React.createElement(FlatList, {
201
+ data: entries,
202
+ keyExtractor: item => item.id,
203
+ renderItem: ({
204
+ item
205
+ }) => /*#__PURE__*/React.createElement(TouchableOpacity, {
206
+ style: [styles.crashRow, {
207
+ borderBottomColor: theme.border,
208
+ backgroundColor: item.isFatal ? `${theme.error}10` : theme.surface
209
+ }],
210
+ onPress: () => setSelectedEntry(item),
211
+ activeOpacity: 0.7
212
+ }, /*#__PURE__*/React.createElement(View, {
213
+ style: [styles.fatalDot, {
214
+ backgroundColor: item.isFatal ? theme.error : theme.warning
215
+ }]
216
+ }), /*#__PURE__*/React.createElement(View, {
217
+ style: styles.crashInfo
218
+ }, /*#__PURE__*/React.createElement(Text, {
219
+ style: [styles.crashMsg, {
220
+ color: theme.text
221
+ }],
222
+ numberOfLines: 2
223
+ }, item.message), /*#__PURE__*/React.createElement(Text, {
224
+ style: [styles.crashTimestamp, {
225
+ color: theme.textMuted
226
+ }]
227
+ }, formatTimestamp(item.timestamp)))),
228
+ ListEmptyComponent: /*#__PURE__*/React.createElement(View, {
229
+ style: styles.emptyContainer
230
+ }, /*#__PURE__*/React.createElement(Text, {
231
+ style: styles.emptyIcon
232
+ }, "\u2705"), /*#__PURE__*/React.createElement(Text, {
233
+ style: [styles.emptyText, {
234
+ color: theme.textMuted
235
+ }]
236
+ }, "No crashes captured"))
237
+ }));
238
+ };
239
+ const styles = StyleSheet.create({
240
+ container: {
241
+ flex: 1
242
+ },
243
+ header: {
244
+ flexDirection: 'row',
245
+ justifyContent: 'space-between',
246
+ alignItems: 'center',
247
+ paddingHorizontal: 12,
248
+ paddingVertical: 10,
249
+ borderBottomWidth: StyleSheet.hairlineWidth
250
+ },
251
+ headerTitle: {
252
+ fontSize: 14,
253
+ fontWeight: '700'
254
+ },
255
+ clearBtn: {
256
+ fontSize: 13,
257
+ fontWeight: '700'
258
+ },
259
+ backBtn: {
260
+ fontSize: 14,
261
+ fontWeight: '600'
262
+ },
263
+ headerActions: {
264
+ flexDirection: 'row',
265
+ gap: 12
266
+ },
267
+ actionText: {
268
+ fontSize: 12,
269
+ fontWeight: '600'
270
+ },
271
+ crashRow: {
272
+ flexDirection: 'row',
273
+ alignItems: 'center',
274
+ paddingHorizontal: 12,
275
+ paddingVertical: 10,
276
+ borderBottomWidth: StyleSheet.hairlineWidth
277
+ },
278
+ fatalDot: {
279
+ width: 8,
280
+ height: 8,
281
+ borderRadius: 4,
282
+ marginRight: 10
283
+ },
284
+ crashInfo: {
285
+ flex: 1
286
+ },
287
+ crashMsg: {
288
+ fontSize: 13,
289
+ fontWeight: '500'
290
+ },
291
+ crashTimestamp: {
292
+ fontSize: 10,
293
+ marginTop: 2
294
+ },
295
+ emptyContainer: {
296
+ alignItems: 'center',
297
+ paddingVertical: 60
298
+ },
299
+ emptyIcon: {
300
+ fontSize: 48,
301
+ marginBottom: 12
302
+ },
303
+ emptyText: {
304
+ fontSize: 13
305
+ },
306
+ detailContent: {
307
+ flex: 1,
308
+ padding: 12
309
+ },
310
+ crashBadge: {
311
+ alignSelf: 'flex-start',
312
+ paddingHorizontal: 10,
313
+ paddingVertical: 3,
314
+ borderRadius: 6,
315
+ marginBottom: 8
316
+ },
317
+ crashBadgeText: {
318
+ fontSize: 10,
319
+ fontWeight: '800',
320
+ color: '#FFF',
321
+ letterSpacing: 1
322
+ },
323
+ crashTime: {
324
+ fontSize: 11,
325
+ marginBottom: 8
326
+ },
327
+ crashMessage: {
328
+ fontSize: 16,
329
+ fontWeight: '700',
330
+ marginBottom: 16
331
+ },
332
+ stackBlock: {
333
+ padding: 12,
334
+ borderRadius: 8
335
+ },
336
+ stackLabel: {
337
+ fontSize: 11,
338
+ fontWeight: '700',
339
+ marginBottom: 4,
340
+ textTransform: 'uppercase'
341
+ },
342
+ stackText: {
343
+ fontSize: 11,
344
+ fontFamily: 'monospace',
345
+ lineHeight: 18
346
+ }
347
+ });
348
+ export function createCrashReporterPlugin() {
349
+ return {
350
+ id: 'crash-reporter',
351
+ name: 'Crashes',
352
+ icon: '💥',
353
+ component: CrashReporterPanel,
354
+ order: 100
355
+ };
356
+ }
357
+ //# sourceMappingURL=CrashReporterPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","useCallback","View","Text","FlatList","TouchableOpacity","ScrollView","StyleSheet","generateId","formatTimestamp","copyToClipboard","shareText","CrashStoreClass","entries","listeners","Set","isActive","maxEntries","originalHandler","start","ErrorUtils","globalThis","getGlobalHandler","setGlobalHandler","error","isFatal","addEntry","id","timestamp","Date","now","message","stack","tracking","require","enable","allRejections","onUnhandled","_id","stop","entry","slice","notify","getAll","clear","subscribe","listener","add","delete","snapshot","l","crashStore","CrashReporterPanel","theme","setEntries","selectedEntry","setSelectedEntry","unsub","handleClear","createElement","style","styles","container","header","backgroundColor","surface","borderBottomColor","border","onPress","activeOpacity","backBtn","color","accent","headerActions","actionText","detailContent","crashBadge","warning","crashBadgeText","crashTime","textMuted","crashMessage","text","stackBlock","codeBackground","stackText","codeText","selectable","componentStack","marginTop","stackLabel","textSecondary","headerTitle","length","clearBtn","data","keyExtractor","item","renderItem","crashRow","fatalDot","crashInfo","crashMsg","numberOfLines","crashTimestamp","ListEmptyComponent","emptyContainer","emptyIcon","emptyText","create","flex","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","borderBottomWidth","hairlineWidth","fontSize","fontWeight","gap","width","height","borderRadius","marginRight","marginBottom","padding","alignSelf","letterSpacing","textTransform","fontFamily","lineHeight","createCrashReporterPlugin","name","icon","component","order"],"sourceRoot":"../../../../src","sources":["plugins/crashReporter/CrashReporterPlugin.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,211 @@
1
+ import React, { useState, useEffect, useCallback } from 'react';
2
+ import { View, Text, TouchableOpacity, ScrollView, StyleSheet, Alert, ActivityIndicator } from 'react-native';
3
+ import { actionStore } from './actionStore';
4
+ const CustomActionsPanel = ({
5
+ theme
6
+ }) => {
7
+ const [actions, setActions] = useState([]);
8
+ const [runningAction, setRunningAction] = useState(null);
9
+ const [lastResult, setLastResult] = useState(null);
10
+ useEffect(() => {
11
+ const unsub = actionStore.subscribe(setActions);
12
+ return unsub;
13
+ }, []);
14
+ const handleRun = useCallback(async action => {
15
+ const execute = async () => {
16
+ setRunningAction(action.id);
17
+ setLastResult(null);
18
+ try {
19
+ await action.handler();
20
+ setLastResult({
21
+ id: action.id,
22
+ success: true,
23
+ message: 'Completed'
24
+ });
25
+ } catch (err) {
26
+ setLastResult({
27
+ id: action.id,
28
+ success: false,
29
+ message: err instanceof Error ? err.message : 'Failed'
30
+ });
31
+ }
32
+ setRunningAction(null);
33
+ };
34
+ if (action.destructive) {
35
+ Alert.alert('⚠️ Confirm', `Run "${action.name}"? This action is marked as destructive.`, [{
36
+ text: 'Cancel',
37
+ style: 'cancel'
38
+ }, {
39
+ text: 'Run',
40
+ style: 'destructive',
41
+ onPress: execute
42
+ }]);
43
+ } else {
44
+ execute();
45
+ }
46
+ }, []);
47
+ const groups = React.useMemo(() => {
48
+ const groupMap = new Map();
49
+ for (const action of actions) {
50
+ const group = action.group || 'General';
51
+ const list = groupMap.get(group) || [];
52
+ list.push(action);
53
+ groupMap.set(group, list);
54
+ }
55
+ return groupMap;
56
+ }, [actions]);
57
+ if (actions.length === 0) {
58
+ return /*#__PURE__*/React.createElement(View, {
59
+ style: styles.emptyContainer
60
+ }, /*#__PURE__*/React.createElement(Text, {
61
+ style: styles.emptyIcon
62
+ }, "\uD83C\uDFAF"), /*#__PURE__*/React.createElement(Text, {
63
+ style: [styles.emptyTitle, {
64
+ color: theme.text
65
+ }]
66
+ }, "No Custom Actions"), /*#__PURE__*/React.createElement(Text, {
67
+ style: [styles.emptyDesc, {
68
+ color: theme.textMuted
69
+ }]
70
+ }, "Register actions:", '\n\n', /*#__PURE__*/React.createElement(Text, {
71
+ style: {
72
+ fontFamily: 'monospace',
73
+ color: theme.codeText
74
+ }
75
+ }, 'registerAction({\n id: "clear-cache",\n name: "Clear Cache",\n icon: "🗑️",\n handler: () => clearCache(),\n})')));
76
+ }
77
+ return /*#__PURE__*/React.createElement(ScrollView, {
78
+ style: styles.container
79
+ }, lastResult && /*#__PURE__*/React.createElement(View, {
80
+ style: [styles.resultBanner, {
81
+ backgroundColor: lastResult.success ? `${theme.success}20` : `${theme.error}20`
82
+ }]
83
+ }, /*#__PURE__*/React.createElement(Text, {
84
+ style: [styles.resultText, {
85
+ color: lastResult.success ? theme.success : theme.error
86
+ }]
87
+ }, lastResult.success ? '✅' : '❌', " ", lastResult.message)), Array.from(groups.entries()).map(([groupName, groupActions]) => /*#__PURE__*/React.createElement(View, {
88
+ key: groupName,
89
+ style: styles.group
90
+ }, /*#__PURE__*/React.createElement(Text, {
91
+ style: [styles.groupTitle, {
92
+ color: theme.textSecondary
93
+ }]
94
+ }, groupName), /*#__PURE__*/React.createElement(View, {
95
+ style: styles.grid
96
+ }, groupActions.map(action => /*#__PURE__*/React.createElement(TouchableOpacity, {
97
+ key: action.id,
98
+ style: [styles.actionCard, {
99
+ backgroundColor: theme.surface,
100
+ borderColor: action.destructive ? theme.error : theme.border
101
+ }],
102
+ onPress: () => handleRun(action),
103
+ activeOpacity: 0.7,
104
+ disabled: !!runningAction
105
+ }, runningAction === action.id ? /*#__PURE__*/React.createElement(ActivityIndicator, {
106
+ color: theme.accent,
107
+ size: "small"
108
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
109
+ style: styles.actionIcon
110
+ }, action.icon || '⚡'), /*#__PURE__*/React.createElement(Text, {
111
+ style: [styles.actionName, {
112
+ color: action.destructive ? theme.error : theme.text
113
+ }],
114
+ numberOfLines: 1
115
+ }, action.name), action.description && /*#__PURE__*/React.createElement(Text, {
116
+ style: [styles.actionDesc, {
117
+ color: theme.textMuted
118
+ }],
119
+ numberOfLines: 2
120
+ }, action.description))))))), /*#__PURE__*/React.createElement(View, {
121
+ style: {
122
+ height: 40
123
+ }
124
+ }));
125
+ };
126
+ const styles = StyleSheet.create({
127
+ container: {
128
+ flex: 1
129
+ },
130
+ emptyContainer: {
131
+ flex: 1,
132
+ alignItems: 'center',
133
+ justifyContent: 'center',
134
+ paddingHorizontal: 32
135
+ },
136
+ emptyIcon: {
137
+ fontSize: 48,
138
+ marginBottom: 16
139
+ },
140
+ emptyTitle: {
141
+ fontSize: 16,
142
+ fontWeight: '700',
143
+ marginBottom: 8
144
+ },
145
+ emptyDesc: {
146
+ fontSize: 13,
147
+ textAlign: 'center',
148
+ lineHeight: 20
149
+ },
150
+ resultBanner: {
151
+ padding: 10,
152
+ marginHorizontal: 12,
153
+ marginVertical: 8,
154
+ borderRadius: 8
155
+ },
156
+ resultText: {
157
+ fontSize: 13,
158
+ fontWeight: '600',
159
+ textAlign: 'center'
160
+ },
161
+ group: {
162
+ paddingHorizontal: 12,
163
+ marginBottom: 16
164
+ },
165
+ groupTitle: {
166
+ fontSize: 11,
167
+ fontWeight: '700',
168
+ textTransform: 'uppercase',
169
+ letterSpacing: 1,
170
+ marginBottom: 8,
171
+ marginTop: 12
172
+ },
173
+ grid: {
174
+ flexDirection: 'row',
175
+ flexWrap: 'wrap',
176
+ gap: 8
177
+ },
178
+ actionCard: {
179
+ width: '47%',
180
+ padding: 16,
181
+ borderRadius: 12,
182
+ borderWidth: 1,
183
+ alignItems: 'center',
184
+ justifyContent: 'center',
185
+ minHeight: 90
186
+ },
187
+ actionIcon: {
188
+ fontSize: 24,
189
+ marginBottom: 8
190
+ },
191
+ actionName: {
192
+ fontSize: 13,
193
+ fontWeight: '700',
194
+ textAlign: 'center'
195
+ },
196
+ actionDesc: {
197
+ fontSize: 10,
198
+ textAlign: 'center',
199
+ marginTop: 4
200
+ }
201
+ });
202
+ export function createCustomActionsPlugin() {
203
+ return {
204
+ id: 'custom-actions',
205
+ name: 'Actions',
206
+ icon: '🎯',
207
+ component: CustomActionsPanel,
208
+ order: 110
209
+ };
210
+ }
211
+ //# sourceMappingURL=CustomActionsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","useCallback","View","Text","TouchableOpacity","ScrollView","StyleSheet","Alert","ActivityIndicator","actionStore","CustomActionsPanel","theme","actions","setActions","runningAction","setRunningAction","lastResult","setLastResult","unsub","subscribe","handleRun","action","execute","id","handler","success","message","err","Error","destructive","alert","name","text","style","onPress","groups","useMemo","groupMap","Map","group","list","get","push","set","length","createElement","styles","emptyContainer","emptyIcon","emptyTitle","color","emptyDesc","textMuted","fontFamily","codeText","container","resultBanner","backgroundColor","error","resultText","Array","from","entries","map","groupName","groupActions","key","groupTitle","textSecondary","grid","actionCard","surface","borderColor","border","activeOpacity","disabled","accent","size","Fragment","actionIcon","icon","actionName","numberOfLines","description","actionDesc","height","create","flex","alignItems","justifyContent","paddingHorizontal","fontSize","marginBottom","fontWeight","textAlign","lineHeight","padding","marginHorizontal","marginVertical","borderRadius","textTransform","letterSpacing","marginTop","flexDirection","flexWrap","gap","width","borderWidth","minHeight","createCustomActionsPlugin","component","order"],"sourceRoot":"../../../../src","sources":["plugins/customActions/CustomActionsPlugin.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ class ActionStoreClass {
2
+ actions = new Map();
3
+ listeners = new Set();
4
+ register(action) {
5
+ this.actions.set(action.id, action);
6
+ this.notify();
7
+ }
8
+ remove(id) {
9
+ this.actions.delete(id);
10
+ this.notify();
11
+ }
12
+ getAll() {
13
+ return Array.from(this.actions.values());
14
+ }
15
+ subscribe(listener) {
16
+ this.listeners.add(listener);
17
+ listener(this.getAll());
18
+ return () => this.listeners.delete(listener);
19
+ }
20
+ notify() {
21
+ const snapshot = this.getAll();
22
+ for (const l of this.listeners) {
23
+ try {
24
+ l(snapshot);
25
+ } catch {
26
+ /* ignore */
27
+ }
28
+ }
29
+ }
30
+ }
31
+ export const actionStore = new ActionStoreClass();
32
+ export function registerAction(action) {
33
+ actionStore.register(action);
34
+ }
35
+ export function removeAction(id) {
36
+ actionStore.remove(id);
37
+ }
38
+ //# sourceMappingURL=actionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ActionStoreClass","actions","Map","listeners","Set","register","action","set","id","notify","remove","delete","getAll","Array","from","values","subscribe","listener","add","snapshot","l","actionStore","registerAction","removeAction"],"sourceRoot":"../../../../src","sources":["plugins/customActions/actionStore.ts"],"mappings":"AAIA,MAAMA,gBAAgB,CAAC;EACbC,OAAO,GAA8B,IAAIC,GAAG,CAAC,CAAC;EAC9CC,SAAS,GAAwB,IAAIC,GAAG,CAAC,CAAC;EAElDC,QAAQA,CAACC,MAAoB,EAAQ;IACnC,IAAI,CAACL,OAAO,CAACM,GAAG,CAACD,MAAM,CAACE,EAAE,EAAEF,MAAM,CAAC;IACnC,IAAI,CAACG,MAAM,CAAC,CAAC;EACf;EAEAC,MAAMA,CAACF,EAAU,EAAQ;IACvB,IAAI,CAACP,OAAO,CAACU,MAAM,CAACH,EAAE,CAAC;IACvB,IAAI,CAACC,MAAM,CAAC,CAAC;EACf;EAEAG,MAAMA,CAAA,EAAmB;IACvB,OAAOC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACb,OAAO,CAACc,MAAM,CAAC,CAAC,CAAC;EAC1C;EAEAC,SAASA,CAACC,QAAwB,EAAc;IAC9C,IAAI,CAACd,SAAS,CAACe,GAAG,CAACD,QAAQ,CAAC;IAC5BA,QAAQ,CAAC,IAAI,CAACL,MAAM,CAAC,CAAC,CAAC;IACvB,OAAO,MAAM,IAAI,CAACT,SAAS,CAACQ,MAAM,CAACM,QAAQ,CAAC;EAC9C;EAEQR,MAAMA,CAAA,EAAS;IACrB,MAAMU,QAAQ,GAAG,IAAI,CAACP,MAAM,CAAC,CAAC;IAC9B,KAAK,MAAMQ,CAAC,IAAI,IAAI,CAACjB,SAAS,EAAE;MAC9B,IAAI;QACFiB,CAAC,CAACD,QAAQ,CAAC;MACb,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;AACF;AAEA,OAAO,MAAME,WAAW,GAAG,IAAIrB,gBAAgB,CAAC,CAAC;AAEjD,OAAO,SAASsB,cAAcA,CAAChB,MAAoB,EAAQ;EACzDe,WAAW,CAAChB,QAAQ,CAACC,MAAM,CAAC;AAC9B;AAEA,OAAO,SAASiB,YAAYA,CAACf,EAAU,EAAQ;EAC7Ca,WAAW,CAACX,MAAM,CAACF,EAAE,CAAC;AACxB","ignoreList":[]}