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,374 @@
1
+ import React, { useState, useEffect, useCallback, useMemo } from 'react';
2
+ import { View, Text, FlatList, TouchableOpacity, Switch, TextInput, StyleSheet, ScrollView } from 'react-native';
3
+ import { flagStore } from './flagStore';
4
+ const FeatureFlagsPanel = ({
5
+ theme
6
+ }) => {
7
+ const [flags, setFlags] = useState([]);
8
+ const [searchQuery, setSearchQuery] = useState('');
9
+ const [groupFilter, setGroupFilter] = useState(null);
10
+ const [editingFlag, setEditingFlag] = useState(null);
11
+ const [editValue, setEditValue] = useState('');
12
+ useEffect(() => {
13
+ const unsubscribe = flagStore.subscribe(setFlags);
14
+ return unsubscribe;
15
+ }, []);
16
+ const groups = useMemo(() => {
17
+ const groupSet = new Set();
18
+ for (const flag of flags) {
19
+ if (flag.group) groupSet.add(flag.group);
20
+ }
21
+ return Array.from(groupSet).sort();
22
+ }, [flags]);
23
+ const filteredFlags = useMemo(() => {
24
+ let filtered = flags;
25
+ if (groupFilter) {
26
+ filtered = filtered.filter(f => f.group === groupFilter);
27
+ }
28
+ if (searchQuery) {
29
+ const q = searchQuery.toLowerCase();
30
+ filtered = filtered.filter(f => f.key.toLowerCase().includes(q) || f.label?.toLowerCase().includes(q) || f.description?.toLowerCase().includes(q));
31
+ }
32
+ return filtered;
33
+ }, [flags, searchQuery, groupFilter]);
34
+ const handleToggle = useCallback((key, currentValue) => {
35
+ flagStore.override(key, !currentValue);
36
+ }, []);
37
+ const handleSaveEdit = useCallback(flag => {
38
+ let parsed = editValue;
39
+ if (flag.type === 'number') {
40
+ parsed = Number(editValue);
41
+ if (isNaN(parsed)) return;
42
+ } else if (flag.type === 'json') {
43
+ try {
44
+ parsed = JSON.parse(editValue);
45
+ } catch {
46
+ return;
47
+ }
48
+ }
49
+ flagStore.override(flag.key, parsed);
50
+ setEditingFlag(null);
51
+ }, [editValue]);
52
+ const handleResetAll = useCallback(() => {
53
+ flagStore.resetAll();
54
+ }, []);
55
+ const isOverridden = useCallback(flag => {
56
+ return JSON.stringify(flag.currentValue) !== JSON.stringify(flag.defaultValue);
57
+ }, []);
58
+ if (flags.length === 0) {
59
+ return /*#__PURE__*/React.createElement(View, {
60
+ style: styles.emptyContainer
61
+ }, /*#__PURE__*/React.createElement(Text, {
62
+ style: styles.emptyIcon
63
+ }, "\uD83D\uDEA9"), /*#__PURE__*/React.createElement(Text, {
64
+ style: [styles.emptyTitle, {
65
+ color: theme.text
66
+ }]
67
+ }, "No Feature Flags"), /*#__PURE__*/React.createElement(Text, {
68
+ style: [styles.emptyDesc, {
69
+ color: theme.textMuted
70
+ }]
71
+ }, "Register flags using:", '\n\n', /*#__PURE__*/React.createElement(Text, {
72
+ style: {
73
+ fontFamily: 'monospace',
74
+ color: theme.codeText
75
+ }
76
+ }, 'registerFlag({\n key: "dark_mode",\n type: "boolean",\n defaultValue: false\n})')));
77
+ }
78
+ return /*#__PURE__*/React.createElement(View, {
79
+ style: styles.container
80
+ }, /*#__PURE__*/React.createElement(View, {
81
+ style: [styles.headerBar, {
82
+ backgroundColor: theme.surface,
83
+ borderBottomColor: theme.border
84
+ }]
85
+ }, /*#__PURE__*/React.createElement(Text, {
86
+ style: [styles.headerText, {
87
+ color: theme.text
88
+ }]
89
+ }, flags.length, " flags"), /*#__PURE__*/React.createElement(TouchableOpacity, {
90
+ onPress: handleResetAll,
91
+ activeOpacity: 0.7
92
+ }, /*#__PURE__*/React.createElement(Text, {
93
+ style: [styles.resetText, {
94
+ color: theme.warning
95
+ }]
96
+ }, "Reset All"))), groups.length > 0 && /*#__PURE__*/React.createElement(ScrollView, {
97
+ horizontal: true,
98
+ showsHorizontalScrollIndicator: false,
99
+ style: [styles.groupBar, {
100
+ backgroundColor: theme.surface
101
+ }],
102
+ contentContainerStyle: styles.groupBarContent
103
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
104
+ style: [styles.groupChip, {
105
+ backgroundColor: !groupFilter ? theme.accent : theme.surfaceAlt,
106
+ borderColor: theme.border
107
+ }],
108
+ onPress: () => setGroupFilter(null),
109
+ activeOpacity: 0.7
110
+ }, /*#__PURE__*/React.createElement(Text, {
111
+ style: [styles.groupChipText, {
112
+ color: !groupFilter ? '#FFF' : theme.textSecondary
113
+ }]
114
+ }, "All")), groups.map(group => /*#__PURE__*/React.createElement(TouchableOpacity, {
115
+ key: group,
116
+ style: [styles.groupChip, {
117
+ backgroundColor: groupFilter === group ? theme.accent : theme.surfaceAlt,
118
+ borderColor: theme.border
119
+ }],
120
+ onPress: () => setGroupFilter(groupFilter === group ? null : group),
121
+ activeOpacity: 0.7
122
+ }, /*#__PURE__*/React.createElement(Text, {
123
+ style: [styles.groupChipText, {
124
+ color: groupFilter === group ? '#FFF' : theme.textSecondary
125
+ }]
126
+ }, group)))), /*#__PURE__*/React.createElement(View, {
127
+ style: [styles.searchContainer, {
128
+ backgroundColor: theme.surface
129
+ }]
130
+ }, /*#__PURE__*/React.createElement(TextInput, {
131
+ style: [styles.searchInput, {
132
+ color: theme.text,
133
+ backgroundColor: theme.surfaceAlt,
134
+ borderColor: theme.border
135
+ }],
136
+ placeholder: "Search flags...",
137
+ placeholderTextColor: theme.textMuted,
138
+ value: searchQuery,
139
+ onChangeText: setSearchQuery,
140
+ autoCapitalize: "none"
141
+ })), /*#__PURE__*/React.createElement(FlatList, {
142
+ data: filteredFlags,
143
+ keyExtractor: item => item.key,
144
+ renderItem: ({
145
+ item
146
+ }) => /*#__PURE__*/React.createElement(View, {
147
+ style: [styles.flagRow, {
148
+ backgroundColor: isOverridden(item) ? `${theme.warning}10` : theme.surface,
149
+ borderBottomColor: theme.border
150
+ }]
151
+ }, /*#__PURE__*/React.createElement(View, {
152
+ style: styles.flagInfo
153
+ }, /*#__PURE__*/React.createElement(View, {
154
+ style: styles.flagNameRow
155
+ }, /*#__PURE__*/React.createElement(Text, {
156
+ style: [styles.flagKey, {
157
+ color: theme.text
158
+ }]
159
+ }, item.label || item.key), isOverridden(item) && /*#__PURE__*/React.createElement(TouchableOpacity, {
160
+ onPress: () => flagStore.reset(item.key),
161
+ activeOpacity: 0.7
162
+ }, /*#__PURE__*/React.createElement(Text, {
163
+ style: [styles.resetFlag, {
164
+ color: theme.warning
165
+ }]
166
+ }, "Reset"))), item.description && /*#__PURE__*/React.createElement(Text, {
167
+ style: [styles.flagDesc, {
168
+ color: theme.textMuted
169
+ }]
170
+ }, item.description), /*#__PURE__*/React.createElement(Text, {
171
+ style: [styles.flagMeta, {
172
+ color: theme.textMuted
173
+ }]
174
+ }, item.key, " \u2022 ", item.type, item.group ? ` • ${item.group}` : '')), /*#__PURE__*/React.createElement(View, {
175
+ style: styles.flagControl
176
+ }, item.type === 'boolean' ? /*#__PURE__*/React.createElement(Switch, {
177
+ value: item.currentValue,
178
+ onValueChange: () => handleToggle(item.key, item.currentValue),
179
+ trackColor: {
180
+ false: theme.border,
181
+ true: theme.accent
182
+ },
183
+ thumbColor: "#FFFFFF"
184
+ }) : editingFlag === item.key ? /*#__PURE__*/React.createElement(View, {
185
+ style: styles.editContainer
186
+ }, /*#__PURE__*/React.createElement(TextInput, {
187
+ style: [styles.editInput, {
188
+ color: theme.text,
189
+ borderColor: theme.accent,
190
+ backgroundColor: theme.surfaceAlt
191
+ }],
192
+ value: editValue,
193
+ onChangeText: setEditValue,
194
+ autoFocus: true,
195
+ autoCapitalize: "none"
196
+ }), /*#__PURE__*/React.createElement(View, {
197
+ style: styles.editButtons
198
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
199
+ onPress: () => handleSaveEdit(item),
200
+ activeOpacity: 0.7
201
+ }, /*#__PURE__*/React.createElement(Text, {
202
+ style: [styles.editSave, {
203
+ color: theme.success
204
+ }]
205
+ }, "Save")), /*#__PURE__*/React.createElement(TouchableOpacity, {
206
+ onPress: () => setEditingFlag(null),
207
+ activeOpacity: 0.7
208
+ }, /*#__PURE__*/React.createElement(Text, {
209
+ style: [styles.editCancel, {
210
+ color: theme.textMuted
211
+ }]
212
+ }, "Cancel")))) : /*#__PURE__*/React.createElement(TouchableOpacity, {
213
+ onPress: () => {
214
+ setEditingFlag(item.key);
215
+ setEditValue(typeof item.currentValue === 'object' ? JSON.stringify(item.currentValue, null, 2) : String(item.currentValue));
216
+ },
217
+ style: [styles.valueButton, {
218
+ backgroundColor: theme.surfaceAlt
219
+ }],
220
+ activeOpacity: 0.7
221
+ }, /*#__PURE__*/React.createElement(Text, {
222
+ style: [styles.valueText, {
223
+ color: theme.text
224
+ }],
225
+ numberOfLines: 1
226
+ }, typeof item.currentValue === 'object' ? JSON.stringify(item.currentValue) : String(item.currentValue)))))
227
+ }));
228
+ };
229
+ const styles = StyleSheet.create({
230
+ container: {
231
+ flex: 1
232
+ },
233
+ emptyContainer: {
234
+ flex: 1,
235
+ alignItems: 'center',
236
+ justifyContent: 'center',
237
+ paddingHorizontal: 32
238
+ },
239
+ emptyIcon: {
240
+ fontSize: 48,
241
+ marginBottom: 16
242
+ },
243
+ emptyTitle: {
244
+ fontSize: 16,
245
+ fontWeight: '700',
246
+ marginBottom: 8
247
+ },
248
+ emptyDesc: {
249
+ fontSize: 13,
250
+ textAlign: 'center',
251
+ lineHeight: 20
252
+ },
253
+ headerBar: {
254
+ flexDirection: 'row',
255
+ justifyContent: 'space-between',
256
+ alignItems: 'center',
257
+ paddingHorizontal: 12,
258
+ paddingVertical: 8,
259
+ borderBottomWidth: StyleSheet.hairlineWidth
260
+ },
261
+ headerText: {
262
+ fontSize: 13,
263
+ fontWeight: '600'
264
+ },
265
+ resetText: {
266
+ fontSize: 12,
267
+ fontWeight: '700'
268
+ },
269
+ groupBar: {
270
+ maxHeight: 44
271
+ },
272
+ groupBarContent: {
273
+ paddingHorizontal: 12,
274
+ paddingVertical: 8,
275
+ gap: 6
276
+ },
277
+ groupChip: {
278
+ paddingHorizontal: 10,
279
+ paddingVertical: 4,
280
+ borderRadius: 12,
281
+ borderWidth: 1
282
+ },
283
+ groupChipText: {
284
+ fontSize: 11,
285
+ fontWeight: '600'
286
+ },
287
+ searchContainer: {
288
+ paddingHorizontal: 12,
289
+ paddingBottom: 8
290
+ },
291
+ searchInput: {
292
+ height: 36,
293
+ borderRadius: 8,
294
+ paddingHorizontal: 12,
295
+ fontSize: 13,
296
+ borderWidth: 1
297
+ },
298
+ flagRow: {
299
+ paddingHorizontal: 12,
300
+ paddingVertical: 10,
301
+ borderBottomWidth: StyleSheet.hairlineWidth
302
+ },
303
+ flagInfo: {
304
+ marginBottom: 8
305
+ },
306
+ flagNameRow: {
307
+ flexDirection: 'row',
308
+ justifyContent: 'space-between',
309
+ alignItems: 'center'
310
+ },
311
+ flagKey: {
312
+ fontSize: 14,
313
+ fontWeight: '600'
314
+ },
315
+ resetFlag: {
316
+ fontSize: 11,
317
+ fontWeight: '600'
318
+ },
319
+ flagDesc: {
320
+ fontSize: 12,
321
+ marginTop: 2
322
+ },
323
+ flagMeta: {
324
+ fontSize: 10,
325
+ marginTop: 2,
326
+ fontFamily: 'monospace'
327
+ },
328
+ flagControl: {
329
+ alignItems: 'flex-end'
330
+ },
331
+ editContainer: {
332
+ width: '100%'
333
+ },
334
+ editInput: {
335
+ height: 36,
336
+ borderRadius: 8,
337
+ paddingHorizontal: 12,
338
+ fontSize: 13,
339
+ borderWidth: 1,
340
+ marginBottom: 8
341
+ },
342
+ editButtons: {
343
+ flexDirection: 'row',
344
+ gap: 12,
345
+ justifyContent: 'flex-end'
346
+ },
347
+ editSave: {
348
+ fontSize: 13,
349
+ fontWeight: '700'
350
+ },
351
+ editCancel: {
352
+ fontSize: 13
353
+ },
354
+ valueButton: {
355
+ paddingHorizontal: 12,
356
+ paddingVertical: 6,
357
+ borderRadius: 8,
358
+ maxWidth: 200
359
+ },
360
+ valueText: {
361
+ fontSize: 12,
362
+ fontFamily: 'monospace'
363
+ }
364
+ });
365
+ export function createFeatureFlagsPlugin() {
366
+ return {
367
+ id: 'feature-flags',
368
+ name: 'Flags',
369
+ icon: '🚩',
370
+ component: FeatureFlagsPanel,
371
+ order: 40
372
+ };
373
+ }
374
+ //# sourceMappingURL=FeatureFlagsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","useCallback","useMemo","View","Text","FlatList","TouchableOpacity","Switch","TextInput","StyleSheet","ScrollView","flagStore","FeatureFlagsPanel","theme","flags","setFlags","searchQuery","setSearchQuery","groupFilter","setGroupFilter","editingFlag","setEditingFlag","editValue","setEditValue","unsubscribe","subscribe","groups","groupSet","Set","flag","group","add","Array","from","sort","filteredFlags","filtered","filter","f","q","toLowerCase","key","includes","label","description","handleToggle","currentValue","override","handleSaveEdit","parsed","type","Number","isNaN","JSON","parse","handleResetAll","resetAll","isOverridden","stringify","defaultValue","length","createElement","style","styles","emptyContainer","emptyIcon","emptyTitle","color","text","emptyDesc","textMuted","fontFamily","codeText","container","headerBar","backgroundColor","surface","borderBottomColor","border","headerText","onPress","activeOpacity","resetText","warning","horizontal","showsHorizontalScrollIndicator","groupBar","contentContainerStyle","groupBarContent","groupChip","accent","surfaceAlt","borderColor","groupChipText","textSecondary","map","searchContainer","searchInput","placeholder","placeholderTextColor","value","onChangeText","autoCapitalize","data","keyExtractor","item","renderItem","flagRow","flagInfo","flagNameRow","flagKey","reset","resetFlag","flagDesc","flagMeta","flagControl","onValueChange","trackColor","false","true","thumbColor","editContainer","editInput","autoFocus","editButtons","editSave","success","editCancel","String","valueButton","valueText","numberOfLines","create","flex","alignItems","justifyContent","paddingHorizontal","fontSize","marginBottom","fontWeight","textAlign","lineHeight","flexDirection","paddingVertical","borderBottomWidth","hairlineWidth","maxHeight","gap","borderRadius","borderWidth","paddingBottom","height","marginTop","width","maxWidth","createFeatureFlagsPlugin","id","name","icon","component","order"],"sourceRoot":"../../../../src","sources":["plugins/featureFlags/FeatureFlagsPlugin.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Feature Flag Store — In-memory registry for feature flags.
3
+ *
4
+ * Flags can be registered by the consumer app and toggled at runtime
5
+ * via the debugger overlay. Overrides persist in-memory (optionally in AsyncStorage).
6
+ */
7
+ class FlagStoreClass {
8
+ flags = new Map();
9
+ listeners = new Set();
10
+ changeCallbacks = new Map();
11
+
12
+ /** Register a feature flag. */
13
+ register(flag) {
14
+ const existing = this.flags.get(flag.key);
15
+ this.flags.set(flag.key, {
16
+ ...flag,
17
+ currentValue: existing?.currentValue ?? flag.currentValue ?? flag.defaultValue
18
+ });
19
+ this.notify();
20
+ }
21
+
22
+ /** Get a flag value. Returns the overridden value if set, otherwise the default. */
23
+ get(key) {
24
+ return this.flags.get(key)?.currentValue;
25
+ }
26
+
27
+ /** Get a flag definition. */
28
+ getFlag(key) {
29
+ return this.flags.get(key);
30
+ }
31
+
32
+ /** Get all flags. */
33
+ getAll() {
34
+ return Array.from(this.flags.values());
35
+ }
36
+
37
+ /** Override a flag value. */
38
+ override(key, value) {
39
+ const flag = this.flags.get(key);
40
+ if (!flag) return;
41
+ this.flags.set(key, {
42
+ ...flag,
43
+ currentValue: value
44
+ });
45
+ // Fire change callback
46
+ const cb = this.changeCallbacks.get(key);
47
+ if (cb) cb(value);
48
+ this.notify();
49
+ }
50
+
51
+ /** Reset a single flag to its default value. */
52
+ reset(key) {
53
+ const flag = this.flags.get(key);
54
+ if (!flag) return;
55
+ this.flags.set(key, {
56
+ ...flag,
57
+ currentValue: flag.defaultValue
58
+ });
59
+ const cb = this.changeCallbacks.get(key);
60
+ if (cb) cb(flag.defaultValue);
61
+ this.notify();
62
+ }
63
+
64
+ /** Reset all flags to defaults. */
65
+ resetAll() {
66
+ for (const [key, flag] of this.flags) {
67
+ this.flags.set(key, {
68
+ ...flag,
69
+ currentValue: flag.defaultValue
70
+ });
71
+ const cb = this.changeCallbacks.get(key);
72
+ if (cb) cb(flag.defaultValue);
73
+ }
74
+ this.notify();
75
+ }
76
+
77
+ /** Register a callback when a specific flag changes. */
78
+ onChange(key, callback) {
79
+ this.changeCallbacks.set(key, callback);
80
+ return () => this.changeCallbacks.delete(key);
81
+ }
82
+
83
+ /** Subscribe to all flag changes. */
84
+ subscribe(listener) {
85
+ this.listeners.add(listener);
86
+ listener(this.getAll());
87
+ return () => this.listeners.delete(listener);
88
+ }
89
+ notify() {
90
+ const snapshot = this.getAll();
91
+ for (const listener of this.listeners) {
92
+ try {
93
+ listener(snapshot);
94
+ } catch {
95
+ /* ignore */
96
+ }
97
+ }
98
+ }
99
+ }
100
+ const flagStore = new FlagStoreClass();
101
+
102
+ /** Register a feature flag. */
103
+ export function registerFlag(flag) {
104
+ flagStore.register(flag);
105
+ }
106
+
107
+ /** Reset all flag overrides. */
108
+ export function resetFlags() {
109
+ flagStore.resetAll();
110
+ }
111
+
112
+ /** Get a flag's current value. */
113
+ export function getFlag(key) {
114
+ return flagStore.get(key);
115
+ }
116
+ export { flagStore };
117
+ //# sourceMappingURL=flagStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FlagStoreClass","flags","Map","listeners","Set","changeCallbacks","register","flag","existing","get","key","set","currentValue","defaultValue","notify","getFlag","getAll","Array","from","values","override","value","cb","reset","resetAll","onChange","callback","delete","subscribe","listener","add","snapshot","flagStore","registerFlag","resetFlags"],"sourceRoot":"../../../../src","sources":["plugins/featureFlags/flagStore.ts"],"mappings":"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","ignoreList":[]}