@novodip/expo-router-devtools 1.0.0 → 1.0.3

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/README.md CHANGED
@@ -29,7 +29,7 @@ yarn add expo-router-devtools
29
29
  ## Usage
30
30
 
31
31
  ```bash
32
- import { ExpoRouterDevTools } from 'expo-router-devtools';
32
+ import { ExpoRouterDevTools } from '@novodip/expo-router-devtools';
33
33
 
34
34
  export default function App() {
35
35
  return (
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoRouterDevTools.js","sourceRoot":"","sources":["../src/ExpoRouterDevTools.tsx"],"names":[],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,8 +1,195 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { usePathname, useGlobalSearchParams, useRouter } from 'expo-router';
3
- import * as SecureStore from 'expo-secure-store';
3
+ import { TurboModuleRegistry, View, Pressable, Text, ScrollView, StyleSheet, Platform } from 'react-native';
4
4
  import { useState, useEffect, useCallback } from 'react';
5
- import { View, Pressable, Text, ScrollView, StyleSheet, Platform } from 'react-native';
5
+
6
+ // We default to an empty object shim wherever we don't have an environment-specific implementation
7
+ /**
8
+ * @deprecated `NativeModulesProxy` is deprecated and might be removed in the future releases.
9
+ * Use `requireNativeModule` or `requireOptionalNativeModule` instead.
10
+ */
11
+ var NativeModulesProxy = {};
12
+
13
+ function createTurboModuleToExpoProxy(turboModule, name) {
14
+ return null;
15
+ }
16
+
17
+ /**
18
+ * Imports the native module registered with given name. In the first place it tries to load
19
+ * the module installed through the JSI host object and then falls back to the bridge proxy module.
20
+ * Notice that the modules loaded from the proxy may not support some features like synchronous functions.
21
+ *
22
+ * @param moduleName Name of the requested native module.
23
+ * @returns Object representing the native module.
24
+ * @throws Error when there is no native module with given name.
25
+ */
26
+ function requireNativeModule(moduleName) {
27
+ const nativeModule = requireOptionalNativeModule(moduleName);
28
+ if (!nativeModule) {
29
+ throw new Error(`Cannot find native module '${moduleName}'`);
30
+ }
31
+ return nativeModule;
32
+ }
33
+ /**
34
+ * Imports the native module registered with the given name. The same as `requireNativeModule`,
35
+ * but returns `null` when the module cannot be found instead of throwing an error.
36
+ *
37
+ * @param moduleName Name of the requested native module.
38
+ * @returns Object representing the native module or `null` when it cannot be found.
39
+ */
40
+ function requireOptionalNativeModule(moduleName) {
41
+ var _a, _b, _c, _d, _e;
42
+ try {
43
+ return ((_e = (_d = (_c = (_b = (_a = globalThis.expo) === null || _a === void 0 ? void 0 : _a.modules) === null || _b === void 0 ? void 0 : _b[moduleName]) !== null && _c !== void 0 ? _c : NativeModulesProxy[moduleName]) !== null && _d !== void 0 ? _d : createTurboModuleToExpoProxy(TurboModuleRegistry.get(moduleName), moduleName)) !== null && _e !== void 0 ? _e : null);
44
+ }
45
+ catch (e) {
46
+ const error = e;
47
+ console.warn(`An error occurred while requiring the '${moduleName}' module: ${error.message}`);
48
+ return null;
49
+ }
50
+ }
51
+
52
+ var ExpoSecureStore = requireNativeModule('ExpoSecureStore');
53
+
54
+ const VALUE_BYTES_LIMIT = 2048;
55
+ // note this probably could be JS-engine dependent
56
+ // inspired by https://stackoverflow.com/a/39488643
57
+ function byteCountOverLimit(value, limit) {
58
+ let bytes = 0;
59
+ for (let i = 0; i < value.length; i++) {
60
+ const codePoint = value.charCodeAt(i);
61
+ // Lone surrogates cannot be passed to encodeURI
62
+ if (codePoint >= 0xd800 && codePoint < 0xe000) {
63
+ if (codePoint < 0xdc00 && i + 1 < value.length) {
64
+ const next = value.charCodeAt(i + 1);
65
+ if (next >= 0xdc00 && next < 0xe000) {
66
+ bytes += 4;
67
+ if (bytes > limit) {
68
+ return true;
69
+ }
70
+ i++;
71
+ continue;
72
+ }
73
+ }
74
+ }
75
+ bytes += codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : 3;
76
+ if (bytes > limit) {
77
+ return true;
78
+ }
79
+ }
80
+ return bytes > limit;
81
+ }
82
+
83
+ // @needsAudit
84
+ /**
85
+ * The data in the keychain item cannot be accessed after a restart until the device has been
86
+ * unlocked once by the user. This may be useful if you need to access the item when the phone
87
+ * is locked.
88
+ */
89
+ ExpoSecureStore.AFTER_FIRST_UNLOCK;
90
+ // @needsAudit
91
+ /**
92
+ * Similar to `AFTER_FIRST_UNLOCK`, except the entry is not migrated to a new device when restoring
93
+ * from a backup.
94
+ */
95
+ ExpoSecureStore.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY;
96
+ // @needsAudit
97
+ /**
98
+ * The data in the keychain item can always be accessed regardless of whether the device is locked.
99
+ * This is the least secure option.
100
+ *
101
+ * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK`.
102
+ */
103
+ ExpoSecureStore.ALWAYS;
104
+ // @needsAudit
105
+ /**
106
+ * Similar to `WHEN_UNLOCKED_THIS_DEVICE_ONLY`, except the user must have set a passcode in order to
107
+ * store an entry. If the user removes their passcode, the entry will be deleted.
108
+ */
109
+ ExpoSecureStore.WHEN_PASSCODE_SET_THIS_DEVICE_ONLY;
110
+ // @needsAudit
111
+ /**
112
+ * Similar to `ALWAYS`, except the entry is not migrated to a new device when restoring from a backup.
113
+ *
114
+ * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY`.
115
+ */
116
+ ExpoSecureStore.ALWAYS_THIS_DEVICE_ONLY;
117
+ // @needsAudit
118
+ /**
119
+ * The data in the keychain item can be accessed only while the device is unlocked by the user.
120
+ */
121
+ ExpoSecureStore.WHEN_UNLOCKED;
122
+ // @needsAudit
123
+ /**
124
+ * Similar to `WHEN_UNLOCKED`, except the entry is not migrated to a new device when restoring from
125
+ * a backup.
126
+ */
127
+ ExpoSecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY;
128
+ // @needsAudit
129
+ /**
130
+ * Delete the value associated with the provided key.
131
+ *
132
+ * @param key The key that was used to store the associated value.
133
+ * @param options An [`SecureStoreOptions`](#securestoreoptions) object.
134
+ *
135
+ * @return A promise that rejects if the value can't be deleted.
136
+ */
137
+ async function deleteItemAsync(key, options = {}) {
138
+ ensureValidKey(key);
139
+ await ExpoSecureStore.deleteValueWithKeyAsync(key, options);
140
+ }
141
+ // @needsAudit
142
+ /**
143
+ * Reads the stored value associated with the provided key.
144
+ *
145
+ * @param key The key that was used to store the associated value.
146
+ * @param options An [`SecureStoreOptions`](#securestoreoptions) object.
147
+ *
148
+ * @return A promise that resolves to the previously stored value. It resolves with `null` if there is no entry
149
+ * for the given key or if the key has been invalidated. It rejects if an error occurs while retrieving the value.
150
+ *
151
+ * > Keys are invalidated by the system when biometrics change, such as adding a new fingerprint or changing the face profile used for face recognition.
152
+ * > After a key has been invalidated, it becomes impossible to read its value.
153
+ * > This only applies to values stored with `requireAuthentication` set to `true`.
154
+ */
155
+ async function getItemAsync(key, options = {}) {
156
+ ensureValidKey(key);
157
+ return await ExpoSecureStore.getValueWithKeyAsync(key, options);
158
+ }
159
+ // @needsAudit
160
+ /**
161
+ * Stores a key–value pair.
162
+ *
163
+ * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.
164
+ * @param value The value to store. Size limit is 2048 bytes.
165
+ * @param options An [`SecureStoreOptions`](#securestoreoptions) object.
166
+ *
167
+ * @return A promise that rejects if value cannot be stored on the device.
168
+ */
169
+ async function setItemAsync(key, value, options = {}) {
170
+ ensureValidKey(key);
171
+ if (!isValidValue(value)) {
172
+ throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);
173
+ }
174
+ await ExpoSecureStore.setValueWithKeyAsync(value, key, options);
175
+ }
176
+ function ensureValidKey(key) {
177
+ if (!isValidKey(key)) {
178
+ throw new Error(`Invalid key provided to SecureStore. Keys must not be empty and contain only alphanumeric characters, ".", "-", and "_".`);
179
+ }
180
+ }
181
+ function isValidKey(key) {
182
+ return typeof key === 'string' && /^[\w.-]+$/.test(key);
183
+ }
184
+ function isValidValue(value) {
185
+ if (typeof value !== 'string') {
186
+ return false;
187
+ }
188
+ if (byteCountOverLimit(value, VALUE_BYTES_LIMIT)) {
189
+ console.warn(`Value being stored in SecureStore is larger than ${VALUE_BYTES_LIMIT} bytes and it may not be stored successfully. In a future SDK version, this call may throw an error.`);
190
+ }
191
+ return true;
192
+ }
6
193
 
7
194
  const STORAGE_PREFIX = 'expo-router-devtools_';
8
195
  const MAX_HISTORY = 10;
@@ -33,12 +220,12 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
33
220
  useEffect(() => {
34
221
  const loadData = async () => {
35
222
  try {
36
- const savedRoutesData = await SecureStore.getItemAsync(SAVED_ROUTES_KEY);
223
+ const savedRoutesData = await getItemAsync(SAVED_ROUTES_KEY);
37
224
  if (savedRoutesData) {
38
225
  setSavedRoutes(JSON.parse(savedRoutesData));
39
226
  }
40
227
  if (enableHistory) {
41
- const historyData = await SecureStore.getItemAsync(HISTORY_KEY);
228
+ const historyData = await getItemAsync(HISTORY_KEY);
42
229
  if (historyData) {
43
230
  setRouteHistory(JSON.parse(historyData));
44
231
  }
@@ -58,7 +245,7 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
58
245
  try {
59
246
  const newHistory = [currentRoute, ...routeHistory.filter((r) => r !== currentRoute)].slice(0, maxHistory);
60
247
  setRouteHistory(newHistory);
61
- await SecureStore.setItemAsync(HISTORY_KEY, JSON.stringify(newHistory));
248
+ await setItemAsync(HISTORY_KEY, JSON.stringify(newHistory));
62
249
  }
63
250
  catch (error) {
64
251
  console.error('[ExpoRouterDevTools] Error updating history:', error);
@@ -77,7 +264,7 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
77
264
  const updated = [...savedRoutes, newRoute];
78
265
  setSavedRoutes(updated);
79
266
  try {
80
- await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
267
+ await setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
81
268
  }
82
269
  catch (error) {
83
270
  console.error('[ExpoRouterDevTools] Error saving route:', error);
@@ -97,7 +284,7 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
97
284
  const updated = savedRoutes.filter((_, i) => i !== index);
98
285
  setSavedRoutes(updated);
99
286
  try {
100
- await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
287
+ await setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
101
288
  }
102
289
  catch (error) {
103
290
  console.error('[ExpoRouterDevTools] Error deleting route:', error);
@@ -108,8 +295,8 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
108
295
  setSavedRoutes([]);
109
296
  setRouteHistory([]);
110
297
  try {
111
- await SecureStore.deleteItemAsync(SAVED_ROUTES_KEY);
112
- await SecureStore.deleteItemAsync(HISTORY_KEY);
298
+ await deleteItemAsync(SAVED_ROUTES_KEY);
299
+ await deleteItemAsync(HISTORY_KEY);
113
300
  }
114
301
  catch (error) {
115
302
  console.error('[ExpoRouterDevTools] Error clearing data:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/ExpoRouterDevTools.tsx"],"sourcesContent":["import { useGlobalSearchParams, usePathname, useRouter, type RelativePathString } from 'expo-router'\nimport * as SecureStore from 'expo-secure-store'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Platform, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native'\nimport { ExpoRouterDevToolsProps, SavedRoute } from './interfaces/base'\n\nconst STORAGE_PREFIX = 'expo-router-devtools_'\nconst MAX_HISTORY = 10\n\nconst ExpoRouterDevTools: React.FC<ExpoRouterDevToolsProps> = ({\n position = 'top',\n theme = 'light',\n hideInProduction = true,\n storageKeyPrefix = STORAGE_PREFIX,\n onRouteChange,\n enableHistory = true,\n maxHistory = MAX_HISTORY,\n maxNumOfLines = 3,\n}) => {\n const pathname = usePathname()\n const searchParams = useGlobalSearchParams()\n const router = useRouter()\n\n const [currentRoute, setCurrentRoute] = useState('')\n const [savedRoutes, setSavedRoutes] = useState<SavedRoute[]>([])\n const [routeHistory, setRouteHistory] = useState<string[]>([])\n const [isExpanded, setIsExpanded] = useState(false)\n const [showHistory, setShowHistory] = useState(false)\n\n const SAVED_ROUTES_KEY = `${storageKeyPrefix}saved-routes`\n const HISTORY_KEY = `${storageKeyPrefix}history`\n\n // Build current full route\n useEffect(() => {\n const query = Object.keys(searchParams).length\n ? '?' +\n Object.entries(searchParams)\n .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)\n .join('&')\n : ''\n\n const fullRoute = `${pathname}${query}`\n setCurrentRoute(fullRoute)\n onRouteChange?.(fullRoute)\n }, [pathname, searchParams, onRouteChange])\n\n // Load saved routes and history\n useEffect(() => {\n const loadData = async () => {\n try {\n const savedRoutesData = await SecureStore.getItemAsync(SAVED_ROUTES_KEY)\n if (savedRoutesData) {\n setSavedRoutes(JSON.parse(savedRoutesData))\n }\n\n if (enableHistory) {\n const historyData = await SecureStore.getItemAsync(HISTORY_KEY)\n if (historyData) {\n setRouteHistory(JSON.parse(historyData))\n }\n }\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error loading data:', error)\n }\n }\n\n loadData()\n }, [SAVED_ROUTES_KEY, HISTORY_KEY, enableHistory])\n\n // Update history when route changes\n useEffect(() => {\n if (!enableHistory || !currentRoute) return\n\n const updateHistory = async () => {\n try {\n const newHistory = [currentRoute, ...routeHistory.filter((r) => r !== currentRoute)].slice(0, maxHistory)\n setRouteHistory(newHistory)\n await SecureStore.setItemAsync(HISTORY_KEY, JSON.stringify(newHistory))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error updating history:', error)\n }\n }\n\n updateHistory()\n }, [currentRoute, enableHistory, maxHistory, HISTORY_KEY])\n\n // Save current route\n const saveRoute = useCallback(async () => {\n const label = `Route ${savedRoutes.length + 1}`\n const newRoute: SavedRoute = {\n route: currentRoute,\n label,\n timestamp: Date.now(),\n }\n\n const updated = [...savedRoutes, newRoute]\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error saving route:', error)\n }\n }, [currentRoute, savedRoutes, SAVED_ROUTES_KEY])\n\n // Navigate to route\n const navigateToRoute = useCallback(\n (route: string) => {\n try {\n router.push(route as RelativePathString)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Navigation error:', error)\n }\n },\n [router]\n )\n\n // Delete saved route\n const deleteSavedRoute = useCallback(\n async (index: number) => {\n const updated = savedRoutes.filter((_, i) => i !== index)\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error deleting route:', error)\n }\n },\n [savedRoutes, SAVED_ROUTES_KEY]\n )\n\n // Clear all data\n const clearAll = useCallback(async () => {\n setSavedRoutes([])\n setRouteHistory([])\n\n try {\n await SecureStore.deleteItemAsync(SAVED_ROUTES_KEY)\n await SecureStore.deleteItemAsync(HISTORY_KEY)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error clearing data:', error)\n }\n }, [SAVED_ROUTES_KEY, HISTORY_KEY])\n\n const isDark = theme === 'dark'\n const styles = createStyles(isDark, position)\n\n // Check if we should render in production\n if (hideInProduction && !__DEV__) {\n return null\n }\n\n return (\n <View style={styles.container}>\n {/* Current route bar */}\n <Pressable onPress={() => setIsExpanded(!isExpanded)} style={styles.routeBar}>\n <Text style={styles.routeText} numberOfLines={maxNumOfLines}>\n 🛣️ {currentRoute || '/'}\n </Text>\n <Text style={styles.expandIcon}>{isExpanded ? '▼' : '▶'}</Text>\n </Pressable>\n\n {/* Expanded controls */}\n {isExpanded && (\n <View style={styles.controls}>\n {/* Action buttons */}\n <View style={styles.buttonRow}>\n <Pressable onPress={saveRoute} style={styles.button}>\n <Text style={styles.buttonText}>Save</Text>\n </Pressable>\n\n {enableHistory && (\n <Pressable onPress={() => setShowHistory(!showHistory)} style={styles.button}>\n <Text style={styles.buttonText}>History</Text>\n </Pressable>\n )}\n\n <Pressable onPress={clearAll} style={[styles.button, styles.dangerButton]}>\n <Text style={styles.buttonText}>Clear</Text>\n </Pressable>\n </View>\n\n {/* History section */}\n {showHistory && enableHistory && routeHistory.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Recent Routes</Text>\n <ScrollView style={styles.listContainer}>\n {routeHistory.map((route, index) => (\n <Pressable\n key={`${route}-${index}`}\n onPress={() => navigateToRoute(route)}\n style={({ pressed }) => [styles.listItem, route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <Text style={styles.listItemText} numberOfLines={1}>\n {route}\n </Text>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n\n {/* Saved routes section */}\n {savedRoutes.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Saved Routes</Text>\n <ScrollView style={styles.listContainer}>\n {savedRoutes.map((saved, index) => (\n <Pressable\n key={`${saved.route}-${index}`}\n onPress={() => navigateToRoute(saved.route)}\n style={({ pressed }) => [styles.savedItem, saved.route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <View style={styles.savedItemContent}>\n <Text style={styles.savedItemLabel}>{saved.label}</Text>\n <Text style={styles.listItemText} numberOfLines={1}>\n {saved.route}\n </Text>\n </View>\n <Pressable\n onPress={(e) => {\n e.stopPropagation?.()\n deleteSavedRoute(index)\n }}\n style={styles.deleteButton}\n >\n <Text style={styles.deleteButtonText}>✕</Text>\n </Pressable>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n </View>\n )}\n </View>\n )\n}\n\nconst createStyles = (isDark: boolean, position: 'top' | 'bottom') => {\n const bgColor = isDark ? '#1a1a1a' : '#ffffff'\n const textColor = isDark ? '#e0e0e0' : '#333333'\n const borderColor = isDark ? '#333333' : '#dddddd'\n const buttonBg = isDark ? '#2563eb' : '#2563eb'\n const secondaryBg = isDark ? '#262626' : '#f5f5f5'\n const pressedBg = isDark ? '#1e40af' : '#dbeafe'\n\n return StyleSheet.create({\n container: {\n backgroundColor: bgColor,\n borderTopWidth: position === 'bottom' ? 1 : 0,\n borderBottomWidth: position === 'top' ? 1 : 0,\n borderColor,\n ...Platform.select({\n ios: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 4,\n },\n android: {\n elevation: 4,\n },\n }),\n },\n selectedItem: {\n backgroundColor: pressedBg,\n borderWidth: 1,\n borderColor: '#2563eb',\n },\n\n routeBar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 12,\n paddingHorizontal: 16,\n },\n routeText: {\n flex: 1,\n fontSize: 12,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n expandIcon: {\n fontSize: 16,\n color: textColor,\n marginLeft: 8,\n },\n controls: {\n padding: 12,\n paddingTop: 0,\n },\n buttonRow: {\n flexDirection: 'row',\n gap: 8,\n marginBottom: 12,\n },\n button: {\n flex: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: buttonBg,\n borderRadius: 6,\n alignItems: 'center',\n },\n dangerButton: {\n backgroundColor: '#dc2626',\n },\n buttonText: {\n color: '#ffffff',\n fontSize: 12,\n fontWeight: '600',\n },\n section: {\n marginTop: 12,\n },\n sectionTitle: {\n fontSize: 11,\n fontWeight: '600',\n color: textColor,\n marginBottom: 8,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n },\n listContainer: {\n maxHeight: 150,\n },\n listItem: {\n padding: 8,\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n },\n listItemPressed: {\n backgroundColor: pressedBg,\n },\n listItemText: {\n fontSize: 11,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n savedItem: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n overflow: 'hidden',\n },\n savedItemContent: {\n flex: 1,\n padding: 8,\n },\n savedItemLabel: {\n fontSize: 10,\n fontWeight: '600',\n color: buttonBg,\n marginBottom: 2,\n },\n deleteButton: {\n padding: 8,\n paddingHorizontal: 12,\n backgroundColor: '#dc2626',\n },\n deleteButtonText: {\n color: '#ffffff',\n fontSize: 14,\n fontWeight: 'bold',\n },\n })\n}\n\nexport default ExpoRouterDevTools\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/expo-modules-core/src/NativeModulesProxy.ts","../node_modules/expo-modules-core/src/TurboModuleToExpoModuleProxy.ts","../node_modules/expo-modules-core/src/requireNativeModule.ts","../node_modules/expo-secure-store/build/ExpoSecureStore.js","../node_modules/expo-secure-store/build/byteCounter.js","../node_modules/expo-secure-store/build/SecureStore.js","../src/ExpoRouterDevTools.tsx"],"sourcesContent":["import type { ProxyNativeModule } from './NativeModulesProxy.types';\n\n// We default to an empty object shim wherever we don't have an environment-specific implementation\n\n/**\n * @deprecated `NativeModulesProxy` is deprecated and might be removed in the future releases.\n * Use `requireNativeModule` or `requireOptionalNativeModule` instead.\n */\nexport default {} as Record<string, ProxyNativeModule>;\n","// Copyright © 2024 650 Industries.\nimport type { TurboModule } from 'react-native';\n\nexport function createTurboModuleToExpoProxy(turboModule: TurboModule | null, name: string) {\n return null;\n}\n","import { TurboModuleRegistry } from 'react-native';\n\nimport NativeModulesProxy from './NativeModulesProxy';\nimport { createTurboModuleToExpoProxy } from './TurboModuleToExpoModuleProxy';\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\n\n/**\n * Imports the native module registered with given name. In the first place it tries to load\n * the module installed through the JSI host object and then falls back to the bridge proxy module.\n * Notice that the modules loaded from the proxy may not support some features like synchronous functions.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module.\n * @throws Error when there is no native module with given name.\n */\nexport function requireNativeModule<ModuleType = any>(moduleName: string): ModuleType {\n const nativeModule = requireOptionalNativeModule<ModuleType>(moduleName);\n\n if (!nativeModule) {\n throw new Error(`Cannot find native module '${moduleName}'`);\n }\n return nativeModule;\n}\n\n/**\n * Imports the native module registered with the given name. The same as `requireNativeModule`,\n * but returns `null` when the module cannot be found instead of throwing an error.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module or `null` when it cannot be found.\n */\nexport function requireOptionalNativeModule<ModuleType = any>(\n moduleName: string\n): ModuleType | null {\n ensureNativeModulesAreInstalled();\n\n try {\n return (\n globalThis.expo?.modules?.[moduleName] ??\n NativeModulesProxy[moduleName] ??\n createTurboModuleToExpoProxy(TurboModuleRegistry.get(moduleName), moduleName) ??\n null\n );\n } catch (e) {\n const error = e as Error;\n console.warn(`An error occurred while requiring the '${moduleName}' module: ${error.message}`);\n return null;\n }\n}\n","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoSecureStore');\n//# sourceMappingURL=ExpoSecureStore.js.map","export const VALUE_BYTES_LIMIT = 2048;\n// note this probably could be JS-engine dependent\n// inspired by https://stackoverflow.com/a/39488643\nexport function byteCountOverLimit(value, limit) {\n let bytes = 0;\n for (let i = 0; i < value.length; i++) {\n const codePoint = value.charCodeAt(i);\n // Lone surrogates cannot be passed to encodeURI\n if (codePoint >= 0xd800 && codePoint < 0xe000) {\n if (codePoint < 0xdc00 && i + 1 < value.length) {\n const next = value.charCodeAt(i + 1);\n if (next >= 0xdc00 && next < 0xe000) {\n bytes += 4;\n if (bytes > limit) {\n return true;\n }\n i++;\n continue;\n }\n }\n }\n bytes += codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : 3;\n if (bytes > limit) {\n return true;\n }\n }\n return bytes > limit;\n}\n//# sourceMappingURL=byteCounter.js.map","import ExpoSecureStore from './ExpoSecureStore';\nimport { byteCountOverLimit, VALUE_BYTES_LIMIT } from './byteCounter';\n// @needsAudit\n/**\n * The data in the keychain item cannot be accessed after a restart until the device has been\n * unlocked once by the user. This may be useful if you need to access the item when the phone\n * is locked.\n */\nexport const AFTER_FIRST_UNLOCK = ExpoSecureStore.AFTER_FIRST_UNLOCK;\n// @needsAudit\n/**\n * Similar to `AFTER_FIRST_UNLOCK`, except the entry is not migrated to a new device when restoring\n * from a backup.\n */\nexport const AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY = ExpoSecureStore.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * The data in the keychain item can always be accessed regardless of whether the device is locked.\n * This is the least secure option.\n *\n * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK`.\n */\nexport const ALWAYS = ExpoSecureStore.ALWAYS;\n// @needsAudit\n/**\n * Similar to `WHEN_UNLOCKED_THIS_DEVICE_ONLY`, except the user must have set a passcode in order to\n * store an entry. If the user removes their passcode, the entry will be deleted.\n */\nexport const WHEN_PASSCODE_SET_THIS_DEVICE_ONLY = ExpoSecureStore.WHEN_PASSCODE_SET_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * Similar to `ALWAYS`, except the entry is not migrated to a new device when restoring from a backup.\n *\n * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY`.\n */\nexport const ALWAYS_THIS_DEVICE_ONLY = ExpoSecureStore.ALWAYS_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * The data in the keychain item can be accessed only while the device is unlocked by the user.\n */\nexport const WHEN_UNLOCKED = ExpoSecureStore.WHEN_UNLOCKED;\n// @needsAudit\n/**\n * Similar to `WHEN_UNLOCKED`, except the entry is not migrated to a new device when restoring from\n * a backup.\n */\nexport const WHEN_UNLOCKED_THIS_DEVICE_ONLY = ExpoSecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * Returns whether the SecureStore API is enabled on the current device. This does not check the app\n * permissions.\n *\n * @return Promise which fulfils with a `boolean`, indicating whether the SecureStore API is available\n * on the current device. Currently, this resolves `true` on Android and iOS only.\n */\nexport async function isAvailableAsync() {\n return !!ExpoSecureStore.getValueWithKeyAsync;\n}\n// @needsAudit\n/**\n * Delete the value associated with the provided key.\n *\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that rejects if the value can't be deleted.\n */\nexport async function deleteItemAsync(key, options = {}) {\n ensureValidKey(key);\n await ExpoSecureStore.deleteValueWithKeyAsync(key, options);\n}\n// @needsAudit\n/**\n * Reads the stored value associated with the provided key.\n *\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that resolves to the previously stored value. It resolves with `null` if there is no entry\n * for the given key or if the key has been invalidated. It rejects if an error occurs while retrieving the value.\n *\n * > Keys are invalidated by the system when biometrics change, such as adding a new fingerprint or changing the face profile used for face recognition.\n * > After a key has been invalidated, it becomes impossible to read its value.\n * > This only applies to values stored with `requireAuthentication` set to `true`.\n */\nexport async function getItemAsync(key, options = {}) {\n ensureValidKey(key);\n return await ExpoSecureStore.getValueWithKeyAsync(key, options);\n}\n// @needsAudit\n/**\n * Stores a key–value pair.\n *\n * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.\n * @param value The value to store. Size limit is 2048 bytes.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that rejects if value cannot be stored on the device.\n */\nexport async function setItemAsync(key, value, options = {}) {\n ensureValidKey(key);\n if (!isValidValue(value)) {\n throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);\n }\n await ExpoSecureStore.setValueWithKeyAsync(value, key, options);\n}\n/**\n * Stores a key–value pair synchronously.\n * > **Note:** This function blocks the JavaScript thread, so the application may not be interactive when the `requireAuthentication` option is set to `true` until the user authenticates.\n *\n * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.\n * @param value The value to store. Size limit is 2048 bytes.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n */\nexport function setItem(key, value, options = {}) {\n ensureValidKey(key);\n if (!isValidValue(value)) {\n throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);\n }\n return ExpoSecureStore.setValueWithKeySync(value, key, options);\n}\n/**\n * Synchronously reads the stored value associated with the provided key.\n * > **Note:** This function blocks the JavaScript thread, so the application may not be interactive when reading a value with `requireAuthentication`\n * > option set to `true` until the user authenticates.\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return Previously stored value. It resolves with `null` if there is no entry\n * for the given key or if the key has been invalidated.\n */\nexport function getItem(key, options = {}) {\n ensureValidKey(key);\n return ExpoSecureStore.getValueWithKeySync(key, options);\n}\n/**\n * Checks if the value can be saved with `requireAuthentication` option enabled.\n * @return `true` if the device supports biometric authentication and the enrolled method is sufficiently secure. Otherwise, returns `false`. Always returns false on tvOS.\n * @platform android\n * @platform ios\n */\nexport function canUseBiometricAuthentication() {\n return ExpoSecureStore.canUseBiometricAuthentication();\n}\nfunction ensureValidKey(key) {\n if (!isValidKey(key)) {\n throw new Error(`Invalid key provided to SecureStore. Keys must not be empty and contain only alphanumeric characters, \".\", \"-\", and \"_\".`);\n }\n}\nfunction isValidKey(key) {\n return typeof key === 'string' && /^[\\w.-]+$/.test(key);\n}\nfunction isValidValue(value) {\n if (typeof value !== 'string') {\n return false;\n }\n if (byteCountOverLimit(value, VALUE_BYTES_LIMIT)) {\n console.warn(`Value being stored in SecureStore is larger than ${VALUE_BYTES_LIMIT} bytes and it may not be stored successfully. In a future SDK version, this call may throw an error.`);\n }\n return true;\n}\n//# sourceMappingURL=SecureStore.js.map","import { useGlobalSearchParams, usePathname, useRouter, type RelativePathString } from 'expo-router'\nimport * as SecureStore from 'expo-secure-store'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Platform, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native'\nimport { ExpoRouterDevToolsProps, SavedRoute } from './interfaces/base'\n\nconst STORAGE_PREFIX = 'expo-router-devtools_'\nconst MAX_HISTORY = 10\n\nconst ExpoRouterDevTools: React.FC<ExpoRouterDevToolsProps> = ({\n position = 'top',\n theme = 'light',\n hideInProduction = true,\n storageKeyPrefix = STORAGE_PREFIX,\n onRouteChange,\n enableHistory = true,\n maxHistory = MAX_HISTORY,\n maxNumOfLines = 3,\n}) => {\n const pathname = usePathname()\n const searchParams = useGlobalSearchParams()\n const router = useRouter()\n\n const [currentRoute, setCurrentRoute] = useState('')\n const [savedRoutes, setSavedRoutes] = useState<SavedRoute[]>([])\n const [routeHistory, setRouteHistory] = useState<string[]>([])\n const [isExpanded, setIsExpanded] = useState(false)\n const [showHistory, setShowHistory] = useState(false)\n\n const SAVED_ROUTES_KEY = `${storageKeyPrefix}saved-routes`\n const HISTORY_KEY = `${storageKeyPrefix}history`\n\n // Build current full route\n useEffect(() => {\n const query = Object.keys(searchParams).length\n ? '?' +\n Object.entries(searchParams)\n .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)\n .join('&')\n : ''\n\n const fullRoute = `${pathname}${query}`\n setCurrentRoute(fullRoute)\n onRouteChange?.(fullRoute)\n }, [pathname, searchParams, onRouteChange])\n\n // Load saved routes and history\n useEffect(() => {\n const loadData = async () => {\n try {\n const savedRoutesData = await SecureStore.getItemAsync(SAVED_ROUTES_KEY)\n if (savedRoutesData) {\n setSavedRoutes(JSON.parse(savedRoutesData))\n }\n\n if (enableHistory) {\n const historyData = await SecureStore.getItemAsync(HISTORY_KEY)\n if (historyData) {\n setRouteHistory(JSON.parse(historyData))\n }\n }\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error loading data:', error)\n }\n }\n\n loadData()\n }, [SAVED_ROUTES_KEY, HISTORY_KEY, enableHistory])\n\n // Update history when route changes\n useEffect(() => {\n if (!enableHistory || !currentRoute) return\n\n const updateHistory = async () => {\n try {\n const newHistory = [currentRoute, ...routeHistory.filter((r) => r !== currentRoute)].slice(0, maxHistory)\n setRouteHistory(newHistory)\n await SecureStore.setItemAsync(HISTORY_KEY, JSON.stringify(newHistory))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error updating history:', error)\n }\n }\n\n updateHistory()\n }, [currentRoute, enableHistory, maxHistory, HISTORY_KEY])\n\n // Save current route\n const saveRoute = useCallback(async () => {\n const label = `Route ${savedRoutes.length + 1}`\n const newRoute: SavedRoute = {\n route: currentRoute,\n label,\n timestamp: Date.now(),\n }\n\n const updated = [...savedRoutes, newRoute]\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error saving route:', error)\n }\n }, [currentRoute, savedRoutes, SAVED_ROUTES_KEY])\n\n // Navigate to route\n const navigateToRoute = useCallback(\n (route: string) => {\n try {\n router.push(route as RelativePathString)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Navigation error:', error)\n }\n },\n [router]\n )\n\n // Delete saved route\n const deleteSavedRoute = useCallback(\n async (index: number) => {\n const updated = savedRoutes.filter((_, i) => i !== index)\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error deleting route:', error)\n }\n },\n [savedRoutes, SAVED_ROUTES_KEY]\n )\n\n // Clear all data\n const clearAll = useCallback(async () => {\n setSavedRoutes([])\n setRouteHistory([])\n\n try {\n await SecureStore.deleteItemAsync(SAVED_ROUTES_KEY)\n await SecureStore.deleteItemAsync(HISTORY_KEY)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error clearing data:', error)\n }\n }, [SAVED_ROUTES_KEY, HISTORY_KEY])\n\n const isDark = theme === 'dark'\n const styles = createStyles(isDark, position)\n\n // Check if we should render in production\n if (hideInProduction && !__DEV__) {\n return null\n }\n\n return (\n <View style={styles.container}>\n {/* Current route bar */}\n <Pressable onPress={() => setIsExpanded(!isExpanded)} style={styles.routeBar}>\n <Text style={styles.routeText} numberOfLines={maxNumOfLines}>\n 🛣️ {currentRoute || '/'}\n </Text>\n <Text style={styles.expandIcon}>{isExpanded ? '▼' : '▶'}</Text>\n </Pressable>\n\n {/* Expanded controls */}\n {isExpanded && (\n <View style={styles.controls}>\n {/* Action buttons */}\n <View style={styles.buttonRow}>\n <Pressable onPress={saveRoute} style={styles.button}>\n <Text style={styles.buttonText}>Save</Text>\n </Pressable>\n\n {enableHistory && (\n <Pressable onPress={() => setShowHistory(!showHistory)} style={styles.button}>\n <Text style={styles.buttonText}>History</Text>\n </Pressable>\n )}\n\n <Pressable onPress={clearAll} style={[styles.button, styles.dangerButton]}>\n <Text style={styles.buttonText}>Clear</Text>\n </Pressable>\n </View>\n\n {/* History section */}\n {showHistory && enableHistory && routeHistory.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Recent Routes</Text>\n <ScrollView style={styles.listContainer}>\n {routeHistory.map((route, index) => (\n <Pressable\n key={`${route}-${index}`}\n onPress={() => navigateToRoute(route)}\n style={({ pressed }) => [styles.listItem, route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <Text style={styles.listItemText} numberOfLines={1}>\n {route}\n </Text>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n\n {/* Saved routes section */}\n {savedRoutes.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Saved Routes</Text>\n <ScrollView style={styles.listContainer}>\n {savedRoutes.map((saved, index) => (\n <Pressable\n key={`${saved.route}-${index}`}\n onPress={() => navigateToRoute(saved.route)}\n style={({ pressed }) => [styles.savedItem, saved.route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <View style={styles.savedItemContent}>\n <Text style={styles.savedItemLabel}>{saved.label}</Text>\n <Text style={styles.listItemText} numberOfLines={1}>\n {saved.route}\n </Text>\n </View>\n <Pressable\n onPress={(e) => {\n e.stopPropagation?.()\n deleteSavedRoute(index)\n }}\n style={styles.deleteButton}\n >\n <Text style={styles.deleteButtonText}>✕</Text>\n </Pressable>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n </View>\n )}\n </View>\n )\n}\n\nconst createStyles = (isDark: boolean, position: 'top' | 'bottom') => {\n const bgColor = isDark ? '#1a1a1a' : '#ffffff'\n const textColor = isDark ? '#e0e0e0' : '#333333'\n const borderColor = isDark ? '#333333' : '#dddddd'\n const buttonBg = isDark ? '#2563eb' : '#2563eb'\n const secondaryBg = isDark ? '#262626' : '#f5f5f5'\n const pressedBg = isDark ? '#1e40af' : '#dbeafe'\n\n return StyleSheet.create({\n container: {\n backgroundColor: bgColor,\n borderTopWidth: position === 'bottom' ? 1 : 0,\n borderBottomWidth: position === 'top' ? 1 : 0,\n borderColor,\n ...Platform.select({\n ios: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 4,\n },\n android: {\n elevation: 4,\n },\n }),\n },\n selectedItem: {\n backgroundColor: pressedBg,\n borderWidth: 1,\n borderColor: '#2563eb',\n },\n\n routeBar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 12,\n paddingHorizontal: 16,\n },\n routeText: {\n flex: 1,\n fontSize: 12,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n expandIcon: {\n fontSize: 16,\n color: textColor,\n marginLeft: 8,\n },\n controls: {\n padding: 12,\n paddingTop: 0,\n },\n buttonRow: {\n flexDirection: 'row',\n gap: 8,\n marginBottom: 12,\n },\n button: {\n flex: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: buttonBg,\n borderRadius: 6,\n alignItems: 'center',\n },\n dangerButton: {\n backgroundColor: '#dc2626',\n },\n buttonText: {\n color: '#ffffff',\n fontSize: 12,\n fontWeight: '600',\n },\n section: {\n marginTop: 12,\n },\n sectionTitle: {\n fontSize: 11,\n fontWeight: '600',\n color: textColor,\n marginBottom: 8,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n },\n listContainer: {\n maxHeight: 150,\n },\n listItem: {\n padding: 8,\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n },\n listItemPressed: {\n backgroundColor: pressedBg,\n },\n listItemText: {\n fontSize: 11,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n savedItem: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n overflow: 'hidden',\n },\n savedItemContent: {\n flex: 1,\n padding: 8,\n },\n savedItemLabel: {\n fontSize: 10,\n fontWeight: '600',\n color: buttonBg,\n marginBottom: 2,\n },\n deleteButton: {\n padding: 8,\n paddingHorizontal: 12,\n backgroundColor: '#dc2626',\n },\n deleteButtonText: {\n color: '#ffffff',\n fontSize: 14,\n fontWeight: 'bold',\n },\n })\n}\n\nexport default ExpoRouterDevTools\n"],"names":["SecureStore.getItemAsync","SecureStore.setItemAsync","SecureStore.deleteItemAsync","_jsxs","_jsx"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
package/dist/index.js CHANGED
@@ -2,28 +2,196 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var expoRouter = require('expo-router');
5
- var SecureStore = require('expo-secure-store');
6
- var react = require('react');
7
5
  var reactNative = require('react-native');
6
+ var react = require('react');
8
7
 
9
- function _interopNamespaceDefault(e) {
10
- var n = Object.create(null);
11
- if (e) {
12
- Object.keys(e).forEach(function (k) {
13
- if (k !== 'default') {
14
- var d = Object.getOwnPropertyDescriptor(e, k);
15
- Object.defineProperty(n, k, d.get ? d : {
16
- enumerable: true,
17
- get: function () { return e[k]; }
18
- });
19
- }
20
- });
21
- }
22
- n.default = e;
23
- return Object.freeze(n);
8
+ // We default to an empty object shim wherever we don't have an environment-specific implementation
9
+ /**
10
+ * @deprecated `NativeModulesProxy` is deprecated and might be removed in the future releases.
11
+ * Use `requireNativeModule` or `requireOptionalNativeModule` instead.
12
+ */
13
+ var NativeModulesProxy = {};
14
+
15
+ function createTurboModuleToExpoProxy(turboModule, name) {
16
+ return null;
17
+ }
18
+
19
+ /**
20
+ * Imports the native module registered with given name. In the first place it tries to load
21
+ * the module installed through the JSI host object and then falls back to the bridge proxy module.
22
+ * Notice that the modules loaded from the proxy may not support some features like synchronous functions.
23
+ *
24
+ * @param moduleName Name of the requested native module.
25
+ * @returns Object representing the native module.
26
+ * @throws Error when there is no native module with given name.
27
+ */
28
+ function requireNativeModule(moduleName) {
29
+ const nativeModule = requireOptionalNativeModule(moduleName);
30
+ if (!nativeModule) {
31
+ throw new Error(`Cannot find native module '${moduleName}'`);
32
+ }
33
+ return nativeModule;
34
+ }
35
+ /**
36
+ * Imports the native module registered with the given name. The same as `requireNativeModule`,
37
+ * but returns `null` when the module cannot be found instead of throwing an error.
38
+ *
39
+ * @param moduleName Name of the requested native module.
40
+ * @returns Object representing the native module or `null` when it cannot be found.
41
+ */
42
+ function requireOptionalNativeModule(moduleName) {
43
+ var _a, _b, _c, _d, _e;
44
+ try {
45
+ return ((_e = (_d = (_c = (_b = (_a = globalThis.expo) === null || _a === void 0 ? void 0 : _a.modules) === null || _b === void 0 ? void 0 : _b[moduleName]) !== null && _c !== void 0 ? _c : NativeModulesProxy[moduleName]) !== null && _d !== void 0 ? _d : createTurboModuleToExpoProxy(reactNative.TurboModuleRegistry.get(moduleName), moduleName)) !== null && _e !== void 0 ? _e : null);
46
+ }
47
+ catch (e) {
48
+ const error = e;
49
+ console.warn(`An error occurred while requiring the '${moduleName}' module: ${error.message}`);
50
+ return null;
51
+ }
52
+ }
53
+
54
+ var ExpoSecureStore = requireNativeModule('ExpoSecureStore');
55
+
56
+ const VALUE_BYTES_LIMIT = 2048;
57
+ // note this probably could be JS-engine dependent
58
+ // inspired by https://stackoverflow.com/a/39488643
59
+ function byteCountOverLimit(value, limit) {
60
+ let bytes = 0;
61
+ for (let i = 0; i < value.length; i++) {
62
+ const codePoint = value.charCodeAt(i);
63
+ // Lone surrogates cannot be passed to encodeURI
64
+ if (codePoint >= 0xd800 && codePoint < 0xe000) {
65
+ if (codePoint < 0xdc00 && i + 1 < value.length) {
66
+ const next = value.charCodeAt(i + 1);
67
+ if (next >= 0xdc00 && next < 0xe000) {
68
+ bytes += 4;
69
+ if (bytes > limit) {
70
+ return true;
71
+ }
72
+ i++;
73
+ continue;
74
+ }
75
+ }
76
+ }
77
+ bytes += codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : 3;
78
+ if (bytes > limit) {
79
+ return true;
80
+ }
81
+ }
82
+ return bytes > limit;
24
83
  }
25
84
 
26
- var SecureStore__namespace = /*#__PURE__*/_interopNamespaceDefault(SecureStore);
85
+ // @needsAudit
86
+ /**
87
+ * The data in the keychain item cannot be accessed after a restart until the device has been
88
+ * unlocked once by the user. This may be useful if you need to access the item when the phone
89
+ * is locked.
90
+ */
91
+ ExpoSecureStore.AFTER_FIRST_UNLOCK;
92
+ // @needsAudit
93
+ /**
94
+ * Similar to `AFTER_FIRST_UNLOCK`, except the entry is not migrated to a new device when restoring
95
+ * from a backup.
96
+ */
97
+ ExpoSecureStore.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY;
98
+ // @needsAudit
99
+ /**
100
+ * The data in the keychain item can always be accessed regardless of whether the device is locked.
101
+ * This is the least secure option.
102
+ *
103
+ * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK`.
104
+ */
105
+ ExpoSecureStore.ALWAYS;
106
+ // @needsAudit
107
+ /**
108
+ * Similar to `WHEN_UNLOCKED_THIS_DEVICE_ONLY`, except the user must have set a passcode in order to
109
+ * store an entry. If the user removes their passcode, the entry will be deleted.
110
+ */
111
+ ExpoSecureStore.WHEN_PASSCODE_SET_THIS_DEVICE_ONLY;
112
+ // @needsAudit
113
+ /**
114
+ * Similar to `ALWAYS`, except the entry is not migrated to a new device when restoring from a backup.
115
+ *
116
+ * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY`.
117
+ */
118
+ ExpoSecureStore.ALWAYS_THIS_DEVICE_ONLY;
119
+ // @needsAudit
120
+ /**
121
+ * The data in the keychain item can be accessed only while the device is unlocked by the user.
122
+ */
123
+ ExpoSecureStore.WHEN_UNLOCKED;
124
+ // @needsAudit
125
+ /**
126
+ * Similar to `WHEN_UNLOCKED`, except the entry is not migrated to a new device when restoring from
127
+ * a backup.
128
+ */
129
+ ExpoSecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY;
130
+ // @needsAudit
131
+ /**
132
+ * Delete the value associated with the provided key.
133
+ *
134
+ * @param key The key that was used to store the associated value.
135
+ * @param options An [`SecureStoreOptions`](#securestoreoptions) object.
136
+ *
137
+ * @return A promise that rejects if the value can't be deleted.
138
+ */
139
+ async function deleteItemAsync(key, options = {}) {
140
+ ensureValidKey(key);
141
+ await ExpoSecureStore.deleteValueWithKeyAsync(key, options);
142
+ }
143
+ // @needsAudit
144
+ /**
145
+ * Reads the stored value associated with the provided key.
146
+ *
147
+ * @param key The key that was used to store the associated value.
148
+ * @param options An [`SecureStoreOptions`](#securestoreoptions) object.
149
+ *
150
+ * @return A promise that resolves to the previously stored value. It resolves with `null` if there is no entry
151
+ * for the given key or if the key has been invalidated. It rejects if an error occurs while retrieving the value.
152
+ *
153
+ * > Keys are invalidated by the system when biometrics change, such as adding a new fingerprint or changing the face profile used for face recognition.
154
+ * > After a key has been invalidated, it becomes impossible to read its value.
155
+ * > This only applies to values stored with `requireAuthentication` set to `true`.
156
+ */
157
+ async function getItemAsync(key, options = {}) {
158
+ ensureValidKey(key);
159
+ return await ExpoSecureStore.getValueWithKeyAsync(key, options);
160
+ }
161
+ // @needsAudit
162
+ /**
163
+ * Stores a key–value pair.
164
+ *
165
+ * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.
166
+ * @param value The value to store. Size limit is 2048 bytes.
167
+ * @param options An [`SecureStoreOptions`](#securestoreoptions) object.
168
+ *
169
+ * @return A promise that rejects if value cannot be stored on the device.
170
+ */
171
+ async function setItemAsync(key, value, options = {}) {
172
+ ensureValidKey(key);
173
+ if (!isValidValue(value)) {
174
+ throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);
175
+ }
176
+ await ExpoSecureStore.setValueWithKeyAsync(value, key, options);
177
+ }
178
+ function ensureValidKey(key) {
179
+ if (!isValidKey(key)) {
180
+ throw new Error(`Invalid key provided to SecureStore. Keys must not be empty and contain only alphanumeric characters, ".", "-", and "_".`);
181
+ }
182
+ }
183
+ function isValidKey(key) {
184
+ return typeof key === 'string' && /^[\w.-]+$/.test(key);
185
+ }
186
+ function isValidValue(value) {
187
+ if (typeof value !== 'string') {
188
+ return false;
189
+ }
190
+ if (byteCountOverLimit(value, VALUE_BYTES_LIMIT)) {
191
+ console.warn(`Value being stored in SecureStore is larger than ${VALUE_BYTES_LIMIT} bytes and it may not be stored successfully. In a future SDK version, this call may throw an error.`);
192
+ }
193
+ return true;
194
+ }
27
195
 
28
196
  const STORAGE_PREFIX = 'expo-router-devtools_';
29
197
  const MAX_HISTORY = 10;
@@ -54,12 +222,12 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
54
222
  react.useEffect(() => {
55
223
  const loadData = async () => {
56
224
  try {
57
- const savedRoutesData = await SecureStore__namespace.getItemAsync(SAVED_ROUTES_KEY);
225
+ const savedRoutesData = await getItemAsync(SAVED_ROUTES_KEY);
58
226
  if (savedRoutesData) {
59
227
  setSavedRoutes(JSON.parse(savedRoutesData));
60
228
  }
61
229
  if (enableHistory) {
62
- const historyData = await SecureStore__namespace.getItemAsync(HISTORY_KEY);
230
+ const historyData = await getItemAsync(HISTORY_KEY);
63
231
  if (historyData) {
64
232
  setRouteHistory(JSON.parse(historyData));
65
233
  }
@@ -79,7 +247,7 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
79
247
  try {
80
248
  const newHistory = [currentRoute, ...routeHistory.filter((r) => r !== currentRoute)].slice(0, maxHistory);
81
249
  setRouteHistory(newHistory);
82
- await SecureStore__namespace.setItemAsync(HISTORY_KEY, JSON.stringify(newHistory));
250
+ await setItemAsync(HISTORY_KEY, JSON.stringify(newHistory));
83
251
  }
84
252
  catch (error) {
85
253
  console.error('[ExpoRouterDevTools] Error updating history:', error);
@@ -98,7 +266,7 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
98
266
  const updated = [...savedRoutes, newRoute];
99
267
  setSavedRoutes(updated);
100
268
  try {
101
- await SecureStore__namespace.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
269
+ await setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
102
270
  }
103
271
  catch (error) {
104
272
  console.error('[ExpoRouterDevTools] Error saving route:', error);
@@ -118,7 +286,7 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
118
286
  const updated = savedRoutes.filter((_, i) => i !== index);
119
287
  setSavedRoutes(updated);
120
288
  try {
121
- await SecureStore__namespace.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
289
+ await setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated));
122
290
  }
123
291
  catch (error) {
124
292
  console.error('[ExpoRouterDevTools] Error deleting route:', error);
@@ -129,8 +297,8 @@ const ExpoRouterDevTools = ({ position = 'top', theme = 'light', hideInProductio
129
297
  setSavedRoutes([]);
130
298
  setRouteHistory([]);
131
299
  try {
132
- await SecureStore__namespace.deleteItemAsync(SAVED_ROUTES_KEY);
133
- await SecureStore__namespace.deleteItemAsync(HISTORY_KEY);
300
+ await deleteItemAsync(SAVED_ROUTES_KEY);
301
+ await deleteItemAsync(HISTORY_KEY);
134
302
  }
135
303
  catch (error) {
136
304
  console.error('[ExpoRouterDevTools] Error clearing data:', error);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/ExpoRouterDevTools.tsx"],"sourcesContent":["import { useGlobalSearchParams, usePathname, useRouter, type RelativePathString } from 'expo-router'\nimport * as SecureStore from 'expo-secure-store'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Platform, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native'\nimport { ExpoRouterDevToolsProps, SavedRoute } from './interfaces/base'\n\nconst STORAGE_PREFIX = 'expo-router-devtools_'\nconst MAX_HISTORY = 10\n\nconst ExpoRouterDevTools: React.FC<ExpoRouterDevToolsProps> = ({\n position = 'top',\n theme = 'light',\n hideInProduction = true,\n storageKeyPrefix = STORAGE_PREFIX,\n onRouteChange,\n enableHistory = true,\n maxHistory = MAX_HISTORY,\n maxNumOfLines = 3,\n}) => {\n const pathname = usePathname()\n const searchParams = useGlobalSearchParams()\n const router = useRouter()\n\n const [currentRoute, setCurrentRoute] = useState('')\n const [savedRoutes, setSavedRoutes] = useState<SavedRoute[]>([])\n const [routeHistory, setRouteHistory] = useState<string[]>([])\n const [isExpanded, setIsExpanded] = useState(false)\n const [showHistory, setShowHistory] = useState(false)\n\n const SAVED_ROUTES_KEY = `${storageKeyPrefix}saved-routes`\n const HISTORY_KEY = `${storageKeyPrefix}history`\n\n // Build current full route\n useEffect(() => {\n const query = Object.keys(searchParams).length\n ? '?' +\n Object.entries(searchParams)\n .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)\n .join('&')\n : ''\n\n const fullRoute = `${pathname}${query}`\n setCurrentRoute(fullRoute)\n onRouteChange?.(fullRoute)\n }, [pathname, searchParams, onRouteChange])\n\n // Load saved routes and history\n useEffect(() => {\n const loadData = async () => {\n try {\n const savedRoutesData = await SecureStore.getItemAsync(SAVED_ROUTES_KEY)\n if (savedRoutesData) {\n setSavedRoutes(JSON.parse(savedRoutesData))\n }\n\n if (enableHistory) {\n const historyData = await SecureStore.getItemAsync(HISTORY_KEY)\n if (historyData) {\n setRouteHistory(JSON.parse(historyData))\n }\n }\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error loading data:', error)\n }\n }\n\n loadData()\n }, [SAVED_ROUTES_KEY, HISTORY_KEY, enableHistory])\n\n // Update history when route changes\n useEffect(() => {\n if (!enableHistory || !currentRoute) return\n\n const updateHistory = async () => {\n try {\n const newHistory = [currentRoute, ...routeHistory.filter((r) => r !== currentRoute)].slice(0, maxHistory)\n setRouteHistory(newHistory)\n await SecureStore.setItemAsync(HISTORY_KEY, JSON.stringify(newHistory))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error updating history:', error)\n }\n }\n\n updateHistory()\n }, [currentRoute, enableHistory, maxHistory, HISTORY_KEY])\n\n // Save current route\n const saveRoute = useCallback(async () => {\n const label = `Route ${savedRoutes.length + 1}`\n const newRoute: SavedRoute = {\n route: currentRoute,\n label,\n timestamp: Date.now(),\n }\n\n const updated = [...savedRoutes, newRoute]\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error saving route:', error)\n }\n }, [currentRoute, savedRoutes, SAVED_ROUTES_KEY])\n\n // Navigate to route\n const navigateToRoute = useCallback(\n (route: string) => {\n try {\n router.push(route as RelativePathString)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Navigation error:', error)\n }\n },\n [router]\n )\n\n // Delete saved route\n const deleteSavedRoute = useCallback(\n async (index: number) => {\n const updated = savedRoutes.filter((_, i) => i !== index)\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error deleting route:', error)\n }\n },\n [savedRoutes, SAVED_ROUTES_KEY]\n )\n\n // Clear all data\n const clearAll = useCallback(async () => {\n setSavedRoutes([])\n setRouteHistory([])\n\n try {\n await SecureStore.deleteItemAsync(SAVED_ROUTES_KEY)\n await SecureStore.deleteItemAsync(HISTORY_KEY)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error clearing data:', error)\n }\n }, [SAVED_ROUTES_KEY, HISTORY_KEY])\n\n const isDark = theme === 'dark'\n const styles = createStyles(isDark, position)\n\n // Check if we should render in production\n if (hideInProduction && !__DEV__) {\n return null\n }\n\n return (\n <View style={styles.container}>\n {/* Current route bar */}\n <Pressable onPress={() => setIsExpanded(!isExpanded)} style={styles.routeBar}>\n <Text style={styles.routeText} numberOfLines={maxNumOfLines}>\n 🛣️ {currentRoute || '/'}\n </Text>\n <Text style={styles.expandIcon}>{isExpanded ? '▼' : '▶'}</Text>\n </Pressable>\n\n {/* Expanded controls */}\n {isExpanded && (\n <View style={styles.controls}>\n {/* Action buttons */}\n <View style={styles.buttonRow}>\n <Pressable onPress={saveRoute} style={styles.button}>\n <Text style={styles.buttonText}>Save</Text>\n </Pressable>\n\n {enableHistory && (\n <Pressable onPress={() => setShowHistory(!showHistory)} style={styles.button}>\n <Text style={styles.buttonText}>History</Text>\n </Pressable>\n )}\n\n <Pressable onPress={clearAll} style={[styles.button, styles.dangerButton]}>\n <Text style={styles.buttonText}>Clear</Text>\n </Pressable>\n </View>\n\n {/* History section */}\n {showHistory && enableHistory && routeHistory.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Recent Routes</Text>\n <ScrollView style={styles.listContainer}>\n {routeHistory.map((route, index) => (\n <Pressable\n key={`${route}-${index}`}\n onPress={() => navigateToRoute(route)}\n style={({ pressed }) => [styles.listItem, route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <Text style={styles.listItemText} numberOfLines={1}>\n {route}\n </Text>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n\n {/* Saved routes section */}\n {savedRoutes.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Saved Routes</Text>\n <ScrollView style={styles.listContainer}>\n {savedRoutes.map((saved, index) => (\n <Pressable\n key={`${saved.route}-${index}`}\n onPress={() => navigateToRoute(saved.route)}\n style={({ pressed }) => [styles.savedItem, saved.route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <View style={styles.savedItemContent}>\n <Text style={styles.savedItemLabel}>{saved.label}</Text>\n <Text style={styles.listItemText} numberOfLines={1}>\n {saved.route}\n </Text>\n </View>\n <Pressable\n onPress={(e) => {\n e.stopPropagation?.()\n deleteSavedRoute(index)\n }}\n style={styles.deleteButton}\n >\n <Text style={styles.deleteButtonText}>✕</Text>\n </Pressable>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n </View>\n )}\n </View>\n )\n}\n\nconst createStyles = (isDark: boolean, position: 'top' | 'bottom') => {\n const bgColor = isDark ? '#1a1a1a' : '#ffffff'\n const textColor = isDark ? '#e0e0e0' : '#333333'\n const borderColor = isDark ? '#333333' : '#dddddd'\n const buttonBg = isDark ? '#2563eb' : '#2563eb'\n const secondaryBg = isDark ? '#262626' : '#f5f5f5'\n const pressedBg = isDark ? '#1e40af' : '#dbeafe'\n\n return StyleSheet.create({\n container: {\n backgroundColor: bgColor,\n borderTopWidth: position === 'bottom' ? 1 : 0,\n borderBottomWidth: position === 'top' ? 1 : 0,\n borderColor,\n ...Platform.select({\n ios: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 4,\n },\n android: {\n elevation: 4,\n },\n }),\n },\n selectedItem: {\n backgroundColor: pressedBg,\n borderWidth: 1,\n borderColor: '#2563eb',\n },\n\n routeBar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 12,\n paddingHorizontal: 16,\n },\n routeText: {\n flex: 1,\n fontSize: 12,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n expandIcon: {\n fontSize: 16,\n color: textColor,\n marginLeft: 8,\n },\n controls: {\n padding: 12,\n paddingTop: 0,\n },\n buttonRow: {\n flexDirection: 'row',\n gap: 8,\n marginBottom: 12,\n },\n button: {\n flex: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: buttonBg,\n borderRadius: 6,\n alignItems: 'center',\n },\n dangerButton: {\n backgroundColor: '#dc2626',\n },\n buttonText: {\n color: '#ffffff',\n fontSize: 12,\n fontWeight: '600',\n },\n section: {\n marginTop: 12,\n },\n sectionTitle: {\n fontSize: 11,\n fontWeight: '600',\n color: textColor,\n marginBottom: 8,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n },\n listContainer: {\n maxHeight: 150,\n },\n listItem: {\n padding: 8,\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n },\n listItemPressed: {\n backgroundColor: pressedBg,\n },\n listItemText: {\n fontSize: 11,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n savedItem: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n overflow: 'hidden',\n },\n savedItemContent: {\n flex: 1,\n padding: 8,\n },\n savedItemLabel: {\n fontSize: 10,\n fontWeight: '600',\n color: buttonBg,\n marginBottom: 2,\n },\n deleteButton: {\n padding: 8,\n paddingHorizontal: 12,\n backgroundColor: '#dc2626',\n },\n deleteButtonText: {\n color: '#ffffff',\n fontSize: 14,\n fontWeight: 'bold',\n },\n })\n}\n\nexport default ExpoRouterDevTools\n"],"names":["usePathname","useGlobalSearchParams","useRouter","useState","useEffect","SecureStore","useCallback","_jsxs","View","Pressable","Text","_jsx","ScrollView","StyleSheet","Platform"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/expo-modules-core/src/NativeModulesProxy.ts","../node_modules/expo-modules-core/src/TurboModuleToExpoModuleProxy.ts","../node_modules/expo-modules-core/src/requireNativeModule.ts","../node_modules/expo-secure-store/build/ExpoSecureStore.js","../node_modules/expo-secure-store/build/byteCounter.js","../node_modules/expo-secure-store/build/SecureStore.js","../src/ExpoRouterDevTools.tsx"],"sourcesContent":["import type { ProxyNativeModule } from './NativeModulesProxy.types';\n\n// We default to an empty object shim wherever we don't have an environment-specific implementation\n\n/**\n * @deprecated `NativeModulesProxy` is deprecated and might be removed in the future releases.\n * Use `requireNativeModule` or `requireOptionalNativeModule` instead.\n */\nexport default {} as Record<string, ProxyNativeModule>;\n","// Copyright © 2024 650 Industries.\nimport type { TurboModule } from 'react-native';\n\nexport function createTurboModuleToExpoProxy(turboModule: TurboModule | null, name: string) {\n return null;\n}\n","import { TurboModuleRegistry } from 'react-native';\n\nimport NativeModulesProxy from './NativeModulesProxy';\nimport { createTurboModuleToExpoProxy } from './TurboModuleToExpoModuleProxy';\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\n\n/**\n * Imports the native module registered with given name. In the first place it tries to load\n * the module installed through the JSI host object and then falls back to the bridge proxy module.\n * Notice that the modules loaded from the proxy may not support some features like synchronous functions.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module.\n * @throws Error when there is no native module with given name.\n */\nexport function requireNativeModule<ModuleType = any>(moduleName: string): ModuleType {\n const nativeModule = requireOptionalNativeModule<ModuleType>(moduleName);\n\n if (!nativeModule) {\n throw new Error(`Cannot find native module '${moduleName}'`);\n }\n return nativeModule;\n}\n\n/**\n * Imports the native module registered with the given name. The same as `requireNativeModule`,\n * but returns `null` when the module cannot be found instead of throwing an error.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module or `null` when it cannot be found.\n */\nexport function requireOptionalNativeModule<ModuleType = any>(\n moduleName: string\n): ModuleType | null {\n ensureNativeModulesAreInstalled();\n\n try {\n return (\n globalThis.expo?.modules?.[moduleName] ??\n NativeModulesProxy[moduleName] ??\n createTurboModuleToExpoProxy(TurboModuleRegistry.get(moduleName), moduleName) ??\n null\n );\n } catch (e) {\n const error = e as Error;\n console.warn(`An error occurred while requiring the '${moduleName}' module: ${error.message}`);\n return null;\n }\n}\n","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoSecureStore');\n//# sourceMappingURL=ExpoSecureStore.js.map","export const VALUE_BYTES_LIMIT = 2048;\n// note this probably could be JS-engine dependent\n// inspired by https://stackoverflow.com/a/39488643\nexport function byteCountOverLimit(value, limit) {\n let bytes = 0;\n for (let i = 0; i < value.length; i++) {\n const codePoint = value.charCodeAt(i);\n // Lone surrogates cannot be passed to encodeURI\n if (codePoint >= 0xd800 && codePoint < 0xe000) {\n if (codePoint < 0xdc00 && i + 1 < value.length) {\n const next = value.charCodeAt(i + 1);\n if (next >= 0xdc00 && next < 0xe000) {\n bytes += 4;\n if (bytes > limit) {\n return true;\n }\n i++;\n continue;\n }\n }\n }\n bytes += codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : 3;\n if (bytes > limit) {\n return true;\n }\n }\n return bytes > limit;\n}\n//# sourceMappingURL=byteCounter.js.map","import ExpoSecureStore from './ExpoSecureStore';\nimport { byteCountOverLimit, VALUE_BYTES_LIMIT } from './byteCounter';\n// @needsAudit\n/**\n * The data in the keychain item cannot be accessed after a restart until the device has been\n * unlocked once by the user. This may be useful if you need to access the item when the phone\n * is locked.\n */\nexport const AFTER_FIRST_UNLOCK = ExpoSecureStore.AFTER_FIRST_UNLOCK;\n// @needsAudit\n/**\n * Similar to `AFTER_FIRST_UNLOCK`, except the entry is not migrated to a new device when restoring\n * from a backup.\n */\nexport const AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY = ExpoSecureStore.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * The data in the keychain item can always be accessed regardless of whether the device is locked.\n * This is the least secure option.\n *\n * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK`.\n */\nexport const ALWAYS = ExpoSecureStore.ALWAYS;\n// @needsAudit\n/**\n * Similar to `WHEN_UNLOCKED_THIS_DEVICE_ONLY`, except the user must have set a passcode in order to\n * store an entry. If the user removes their passcode, the entry will be deleted.\n */\nexport const WHEN_PASSCODE_SET_THIS_DEVICE_ONLY = ExpoSecureStore.WHEN_PASSCODE_SET_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * Similar to `ALWAYS`, except the entry is not migrated to a new device when restoring from a backup.\n *\n * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY`.\n */\nexport const ALWAYS_THIS_DEVICE_ONLY = ExpoSecureStore.ALWAYS_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * The data in the keychain item can be accessed only while the device is unlocked by the user.\n */\nexport const WHEN_UNLOCKED = ExpoSecureStore.WHEN_UNLOCKED;\n// @needsAudit\n/**\n * Similar to `WHEN_UNLOCKED`, except the entry is not migrated to a new device when restoring from\n * a backup.\n */\nexport const WHEN_UNLOCKED_THIS_DEVICE_ONLY = ExpoSecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * Returns whether the SecureStore API is enabled on the current device. This does not check the app\n * permissions.\n *\n * @return Promise which fulfils with a `boolean`, indicating whether the SecureStore API is available\n * on the current device. Currently, this resolves `true` on Android and iOS only.\n */\nexport async function isAvailableAsync() {\n return !!ExpoSecureStore.getValueWithKeyAsync;\n}\n// @needsAudit\n/**\n * Delete the value associated with the provided key.\n *\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that rejects if the value can't be deleted.\n */\nexport async function deleteItemAsync(key, options = {}) {\n ensureValidKey(key);\n await ExpoSecureStore.deleteValueWithKeyAsync(key, options);\n}\n// @needsAudit\n/**\n * Reads the stored value associated with the provided key.\n *\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that resolves to the previously stored value. It resolves with `null` if there is no entry\n * for the given key or if the key has been invalidated. It rejects if an error occurs while retrieving the value.\n *\n * > Keys are invalidated by the system when biometrics change, such as adding a new fingerprint or changing the face profile used for face recognition.\n * > After a key has been invalidated, it becomes impossible to read its value.\n * > This only applies to values stored with `requireAuthentication` set to `true`.\n */\nexport async function getItemAsync(key, options = {}) {\n ensureValidKey(key);\n return await ExpoSecureStore.getValueWithKeyAsync(key, options);\n}\n// @needsAudit\n/**\n * Stores a key–value pair.\n *\n * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.\n * @param value The value to store. Size limit is 2048 bytes.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that rejects if value cannot be stored on the device.\n */\nexport async function setItemAsync(key, value, options = {}) {\n ensureValidKey(key);\n if (!isValidValue(value)) {\n throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);\n }\n await ExpoSecureStore.setValueWithKeyAsync(value, key, options);\n}\n/**\n * Stores a key–value pair synchronously.\n * > **Note:** This function blocks the JavaScript thread, so the application may not be interactive when the `requireAuthentication` option is set to `true` until the user authenticates.\n *\n * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.\n * @param value The value to store. Size limit is 2048 bytes.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n */\nexport function setItem(key, value, options = {}) {\n ensureValidKey(key);\n if (!isValidValue(value)) {\n throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);\n }\n return ExpoSecureStore.setValueWithKeySync(value, key, options);\n}\n/**\n * Synchronously reads the stored value associated with the provided key.\n * > **Note:** This function blocks the JavaScript thread, so the application may not be interactive when reading a value with `requireAuthentication`\n * > option set to `true` until the user authenticates.\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return Previously stored value. It resolves with `null` if there is no entry\n * for the given key or if the key has been invalidated.\n */\nexport function getItem(key, options = {}) {\n ensureValidKey(key);\n return ExpoSecureStore.getValueWithKeySync(key, options);\n}\n/**\n * Checks if the value can be saved with `requireAuthentication` option enabled.\n * @return `true` if the device supports biometric authentication and the enrolled method is sufficiently secure. Otherwise, returns `false`. Always returns false on tvOS.\n * @platform android\n * @platform ios\n */\nexport function canUseBiometricAuthentication() {\n return ExpoSecureStore.canUseBiometricAuthentication();\n}\nfunction ensureValidKey(key) {\n if (!isValidKey(key)) {\n throw new Error(`Invalid key provided to SecureStore. Keys must not be empty and contain only alphanumeric characters, \".\", \"-\", and \"_\".`);\n }\n}\nfunction isValidKey(key) {\n return typeof key === 'string' && /^[\\w.-]+$/.test(key);\n}\nfunction isValidValue(value) {\n if (typeof value !== 'string') {\n return false;\n }\n if (byteCountOverLimit(value, VALUE_BYTES_LIMIT)) {\n console.warn(`Value being stored in SecureStore is larger than ${VALUE_BYTES_LIMIT} bytes and it may not be stored successfully. In a future SDK version, this call may throw an error.`);\n }\n return true;\n}\n//# sourceMappingURL=SecureStore.js.map","import { useGlobalSearchParams, usePathname, useRouter, type RelativePathString } from 'expo-router'\nimport * as SecureStore from 'expo-secure-store'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Platform, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native'\nimport { ExpoRouterDevToolsProps, SavedRoute } from './interfaces/base'\n\nconst STORAGE_PREFIX = 'expo-router-devtools_'\nconst MAX_HISTORY = 10\n\nconst ExpoRouterDevTools: React.FC<ExpoRouterDevToolsProps> = ({\n position = 'top',\n theme = 'light',\n hideInProduction = true,\n storageKeyPrefix = STORAGE_PREFIX,\n onRouteChange,\n enableHistory = true,\n maxHistory = MAX_HISTORY,\n maxNumOfLines = 3,\n}) => {\n const pathname = usePathname()\n const searchParams = useGlobalSearchParams()\n const router = useRouter()\n\n const [currentRoute, setCurrentRoute] = useState('')\n const [savedRoutes, setSavedRoutes] = useState<SavedRoute[]>([])\n const [routeHistory, setRouteHistory] = useState<string[]>([])\n const [isExpanded, setIsExpanded] = useState(false)\n const [showHistory, setShowHistory] = useState(false)\n\n const SAVED_ROUTES_KEY = `${storageKeyPrefix}saved-routes`\n const HISTORY_KEY = `${storageKeyPrefix}history`\n\n // Build current full route\n useEffect(() => {\n const query = Object.keys(searchParams).length\n ? '?' +\n Object.entries(searchParams)\n .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)\n .join('&')\n : ''\n\n const fullRoute = `${pathname}${query}`\n setCurrentRoute(fullRoute)\n onRouteChange?.(fullRoute)\n }, [pathname, searchParams, onRouteChange])\n\n // Load saved routes and history\n useEffect(() => {\n const loadData = async () => {\n try {\n const savedRoutesData = await SecureStore.getItemAsync(SAVED_ROUTES_KEY)\n if (savedRoutesData) {\n setSavedRoutes(JSON.parse(savedRoutesData))\n }\n\n if (enableHistory) {\n const historyData = await SecureStore.getItemAsync(HISTORY_KEY)\n if (historyData) {\n setRouteHistory(JSON.parse(historyData))\n }\n }\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error loading data:', error)\n }\n }\n\n loadData()\n }, [SAVED_ROUTES_KEY, HISTORY_KEY, enableHistory])\n\n // Update history when route changes\n useEffect(() => {\n if (!enableHistory || !currentRoute) return\n\n const updateHistory = async () => {\n try {\n const newHistory = [currentRoute, ...routeHistory.filter((r) => r !== currentRoute)].slice(0, maxHistory)\n setRouteHistory(newHistory)\n await SecureStore.setItemAsync(HISTORY_KEY, JSON.stringify(newHistory))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error updating history:', error)\n }\n }\n\n updateHistory()\n }, [currentRoute, enableHistory, maxHistory, HISTORY_KEY])\n\n // Save current route\n const saveRoute = useCallback(async () => {\n const label = `Route ${savedRoutes.length + 1}`\n const newRoute: SavedRoute = {\n route: currentRoute,\n label,\n timestamp: Date.now(),\n }\n\n const updated = [...savedRoutes, newRoute]\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error saving route:', error)\n }\n }, [currentRoute, savedRoutes, SAVED_ROUTES_KEY])\n\n // Navigate to route\n const navigateToRoute = useCallback(\n (route: string) => {\n try {\n router.push(route as RelativePathString)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Navigation error:', error)\n }\n },\n [router]\n )\n\n // Delete saved route\n const deleteSavedRoute = useCallback(\n async (index: number) => {\n const updated = savedRoutes.filter((_, i) => i !== index)\n setSavedRoutes(updated)\n\n try {\n await SecureStore.setItemAsync(SAVED_ROUTES_KEY, JSON.stringify(updated))\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error deleting route:', error)\n }\n },\n [savedRoutes, SAVED_ROUTES_KEY]\n )\n\n // Clear all data\n const clearAll = useCallback(async () => {\n setSavedRoutes([])\n setRouteHistory([])\n\n try {\n await SecureStore.deleteItemAsync(SAVED_ROUTES_KEY)\n await SecureStore.deleteItemAsync(HISTORY_KEY)\n } catch (error) {\n console.error('[ExpoRouterDevTools] Error clearing data:', error)\n }\n }, [SAVED_ROUTES_KEY, HISTORY_KEY])\n\n const isDark = theme === 'dark'\n const styles = createStyles(isDark, position)\n\n // Check if we should render in production\n if (hideInProduction && !__DEV__) {\n return null\n }\n\n return (\n <View style={styles.container}>\n {/* Current route bar */}\n <Pressable onPress={() => setIsExpanded(!isExpanded)} style={styles.routeBar}>\n <Text style={styles.routeText} numberOfLines={maxNumOfLines}>\n 🛣️ {currentRoute || '/'}\n </Text>\n <Text style={styles.expandIcon}>{isExpanded ? '▼' : '▶'}</Text>\n </Pressable>\n\n {/* Expanded controls */}\n {isExpanded && (\n <View style={styles.controls}>\n {/* Action buttons */}\n <View style={styles.buttonRow}>\n <Pressable onPress={saveRoute} style={styles.button}>\n <Text style={styles.buttonText}>Save</Text>\n </Pressable>\n\n {enableHistory && (\n <Pressable onPress={() => setShowHistory(!showHistory)} style={styles.button}>\n <Text style={styles.buttonText}>History</Text>\n </Pressable>\n )}\n\n <Pressable onPress={clearAll} style={[styles.button, styles.dangerButton]}>\n <Text style={styles.buttonText}>Clear</Text>\n </Pressable>\n </View>\n\n {/* History section */}\n {showHistory && enableHistory && routeHistory.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Recent Routes</Text>\n <ScrollView style={styles.listContainer}>\n {routeHistory.map((route, index) => (\n <Pressable\n key={`${route}-${index}`}\n onPress={() => navigateToRoute(route)}\n style={({ pressed }) => [styles.listItem, route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <Text style={styles.listItemText} numberOfLines={1}>\n {route}\n </Text>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n\n {/* Saved routes section */}\n {savedRoutes.length > 0 && (\n <View style={styles.section}>\n <Text style={styles.sectionTitle}>Saved Routes</Text>\n <ScrollView style={styles.listContainer}>\n {savedRoutes.map((saved, index) => (\n <Pressable\n key={`${saved.route}-${index}`}\n onPress={() => navigateToRoute(saved.route)}\n style={({ pressed }) => [styles.savedItem, saved.route === currentRoute && styles.selectedItem, pressed && styles.listItemPressed]}\n >\n <View style={styles.savedItemContent}>\n <Text style={styles.savedItemLabel}>{saved.label}</Text>\n <Text style={styles.listItemText} numberOfLines={1}>\n {saved.route}\n </Text>\n </View>\n <Pressable\n onPress={(e) => {\n e.stopPropagation?.()\n deleteSavedRoute(index)\n }}\n style={styles.deleteButton}\n >\n <Text style={styles.deleteButtonText}>✕</Text>\n </Pressable>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n )}\n </View>\n )}\n </View>\n )\n}\n\nconst createStyles = (isDark: boolean, position: 'top' | 'bottom') => {\n const bgColor = isDark ? '#1a1a1a' : '#ffffff'\n const textColor = isDark ? '#e0e0e0' : '#333333'\n const borderColor = isDark ? '#333333' : '#dddddd'\n const buttonBg = isDark ? '#2563eb' : '#2563eb'\n const secondaryBg = isDark ? '#262626' : '#f5f5f5'\n const pressedBg = isDark ? '#1e40af' : '#dbeafe'\n\n return StyleSheet.create({\n container: {\n backgroundColor: bgColor,\n borderTopWidth: position === 'bottom' ? 1 : 0,\n borderBottomWidth: position === 'top' ? 1 : 0,\n borderColor,\n ...Platform.select({\n ios: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 4,\n },\n android: {\n elevation: 4,\n },\n }),\n },\n selectedItem: {\n backgroundColor: pressedBg,\n borderWidth: 1,\n borderColor: '#2563eb',\n },\n\n routeBar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 12,\n paddingHorizontal: 16,\n },\n routeText: {\n flex: 1,\n fontSize: 12,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n expandIcon: {\n fontSize: 16,\n color: textColor,\n marginLeft: 8,\n },\n controls: {\n padding: 12,\n paddingTop: 0,\n },\n buttonRow: {\n flexDirection: 'row',\n gap: 8,\n marginBottom: 12,\n },\n button: {\n flex: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: buttonBg,\n borderRadius: 6,\n alignItems: 'center',\n },\n dangerButton: {\n backgroundColor: '#dc2626',\n },\n buttonText: {\n color: '#ffffff',\n fontSize: 12,\n fontWeight: '600',\n },\n section: {\n marginTop: 12,\n },\n sectionTitle: {\n fontSize: 11,\n fontWeight: '600',\n color: textColor,\n marginBottom: 8,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n },\n listContainer: {\n maxHeight: 150,\n },\n listItem: {\n padding: 8,\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n },\n listItemPressed: {\n backgroundColor: pressedBg,\n },\n listItemText: {\n fontSize: 11,\n color: textColor,\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n },\n savedItem: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: secondaryBg,\n borderRadius: 4,\n marginBottom: 4,\n overflow: 'hidden',\n },\n savedItemContent: {\n flex: 1,\n padding: 8,\n },\n savedItemLabel: {\n fontSize: 10,\n fontWeight: '600',\n color: buttonBg,\n marginBottom: 2,\n },\n deleteButton: {\n padding: 8,\n paddingHorizontal: 12,\n backgroundColor: '#dc2626',\n },\n deleteButtonText: {\n color: '#ffffff',\n fontSize: 14,\n fontWeight: 'bold',\n },\n })\n}\n\nexport default ExpoRouterDevTools\n"],"names":["TurboModuleRegistry","usePathname","useGlobalSearchParams","useRouter","useState","useEffect","SecureStore.getItemAsync","SecureStore.setItemAsync","useCallback","SecureStore.deleteItemAsync","_jsxs","View","Pressable","Text","_jsx","ScrollView","StyleSheet","Platform"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/interfaces/base.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/interfaces/base.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@novodip/expo-router-devtools",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "Development tools for Expo Router - visualize routes, save navigation states, and debug your app's navigation flow",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -11,7 +11,7 @@
11
11
  "LICENSE"
12
12
  ],
13
13
  "scripts": {
14
- "build": "tsc --outDir dist/lib --declarationDir dist/types --declaration true && rollup -c",
14
+ "build": "tsc --outDir dist --declaration true && rollup -c",
15
15
  "prepare": "npm run build",
16
16
  "test": "echo \"No tests yet\" && exit 0"
17
17
  },
@@ -38,8 +38,7 @@
38
38
  "homepage": "https://github.com/Novo1999/expo-router-devtools#readme",
39
39
  "peerDependencies": {
40
40
  "expo-router": ">=3.0.0",
41
- "expo-secure-store": ">=12.0.0",
42
- "react": ">=18.0.0",
41
+ "react": ">=17.0.0",
43
42
  "react-native": ">=0.70.0"
44
43
  },
45
44
  "devDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExpoRouterDevTools.js","sourceRoot":"","sources":["../../src/ExpoRouterDevTools.tsx"],"names":[],"mappings":"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"}
package/dist/lib/index.js DELETED
@@ -1,2 +0,0 @@
1
- export { default as ExpoRouterDevTools } from './ExpoRouterDevTools';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +0,0 @@
1
- export interface ExpoRouterDevToolsProps {
2
- /** Position of the dev tools bar */
3
- position?: 'top' | 'bottom';
4
- /** Theme */
5
- theme?: 'light' | 'dark';
6
- /** Hide in production builds */
7
- hideInProduction?: boolean;
8
- /** Custom storage key prefix (alphanumeric, dots, dashes, and underscores only) */
9
- storageKeyPrefix?: string;
10
- /** Callback when route changes */
11
- onRouteChange?: (route: string) => void;
12
- /** Enable route history */
13
- enableHistory?: boolean;
14
- /** Maximum number of history items */
15
- maxHistory?: number;
16
- /** Maximum number of lines the route will show */
17
- maxNumOfLines?: number;
18
- }
19
- export interface SavedRoute {
20
- route: string;
21
- label: string;
22
- timestamp: number;
23
- }
File without changes
File without changes
File without changes