diff --git a/.gitignore b/.gitignore index 0b37b6e..a689687 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,11 @@ web-build/ *.key *.mobileprovision +# Prebuild folders - addressing workflow conflict +# For CNG/Prebuild with EAS Build +/android +/ios + # Metro .metro-health-check* @@ -38,4 +43,4 @@ yarn-error.* # The following patterns were generated by expo-cli expo-env.d.ts -# @end expo-cli \ No newline at end of file +# @end expo-cli diff --git a/CHANGELOG.md b/CHANGELOG.md index f0c2272..5cb2483 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased] +### Added +- TestFlight preparation: Added production flag in theme constants +- TestFlight preparation: Hid development-only Programs tab in production builds +- TestFlight preparation: Removed debug UI and console logs from social feed in production builds + All notable changes to the POWR project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), @@ -14,6 +20,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Implemented useProfileStats hook with auto-refresh capabilities - Added proper loading states and error handling - Created documentation in the new documentation structure +- iOS TestFlight build configuration + - Created comprehensive TestFlight submission documentation + - Added production and preview build profiles to eas.json + - Added TestFlight submission configuration + - Created deployment documentation in docs/deployment/ios_testflight_guide.md ## Improved - Enhanced Profile UI @@ -22,6 +33,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added inline copy and QR buttons for better usability - Enhanced visual consistency across profile elements - Replaced hardcoded follower counts with real-time data +- Updated project configuration for TestFlight + - Updated outdated packages (expo, expo-dev-client, expo-file-system, expo-router, expo-sqlite, jest-expo) + - Removed unmaintained packages (expo-random) + - Removed unnecessary packages (@types/react-native) + - Fixed updates URL in app.json to use the correct project ID + - Documented workflow conflict between managed and bare configurations + +## Fixed +- Prebuild/managed workflow conflict documentation + - Added detailed explanation of the configuration issue + - Documented future decision points for project architecture + - Provided options for resolving the configuration conflict # Changelog - March 26, 2025 diff --git a/app.json b/app.json index 5ffd94d..a635d59 100644 --- a/app.json +++ b/app.json @@ -67,7 +67,7 @@ "policy": "sdkVersion" }, "updates": { - "url": "https://u.expo.dev/your-project-id" + "url": "https://u.expo.dev/f3895f49-d9c9-4653-b73b-356f727debe2" }, "extra": { "router": { @@ -79,4 +79,4 @@ }, "owner": "promotus" } -} \ No newline at end of file +} diff --git a/app/(tabs)/library/_layout.tsx b/app/(tabs)/library/_layout.tsx index a25a1b8..60b8a17 100644 --- a/app/(tabs)/library/_layout.tsx +++ b/app/(tabs)/library/_layout.tsx @@ -8,6 +8,7 @@ import Header from '@/components/Header'; import { useTheme } from '@react-navigation/native'; import type { CustomTheme } from '@/lib/theme'; import { TabScreen } from '@/components/layout/TabScreen'; +import { IS_PRODUCTION } from '@/lib/theme/constants'; const Tab = createMaterialTopTabNavigator(); @@ -52,12 +53,15 @@ export default function LibraryLayout() { component={TemplatesScreen} options={{ title: 'Templates' }} /> - + {/* Only show Programs tab in development builds */} + {!IS_PRODUCTION && ( + + )} ); -} \ No newline at end of file +} diff --git a/app/(tabs)/social/following.tsx b/app/(tabs)/social/following.tsx index c3e813a..123872f 100644 --- a/app/(tabs)/social/following.tsx +++ b/app/(tabs)/social/following.tsx @@ -10,6 +10,7 @@ import { useContactList } from '@/lib/hooks/useContactList'; import { ChevronUp, Bug } from 'lucide-react-native'; import { withOfflineState } from '@/components/social/SocialOfflineState'; import { useSocialFeed } from '@/lib/hooks/useSocialFeed'; +import { IS_PRODUCTION } from '@/lib/theme/constants'; function FollowingScreen() { const { isAuthenticated, currentUser } = useNDKCurrentUser(); @@ -18,11 +19,13 @@ function FollowingScreen() { // Get the user's contact list const { contacts, isLoading: isLoadingContacts } = useContactList(currentUser?.pubkey); - // Add debug logging for contact list + // Add debug logging for contact list (only in development) React.useEffect(() => { - console.log(`[FollowingScreen] Contact list has ${contacts.length} contacts`); - if (contacts.length > 0) { - console.log(`[FollowingScreen] First few contacts: ${contacts.slice(0, 3).join(', ')}`); + if (!IS_PRODUCTION) { + console.log(`[FollowingScreen] Contact list has ${contacts.length} contacts`); + if (contacts.length > 0) { + console.log(`[FollowingScreen] First few contacts: ${contacts.slice(0, 3).join(', ')}`); + } } }, [contacts.length]); @@ -77,7 +80,9 @@ function FollowingScreen() { // Update loadedContactsCount when contacts change React.useEffect(() => { if (contacts.length > 0 && contacts.length !== loadedContactsCount) { - console.log(`[FollowingScreen] Contact list changed from ${loadedContactsCount} to ${contacts.length} contacts`); + if (!IS_PRODUCTION) { + console.log(`[FollowingScreen] Contact list changed from ${loadedContactsCount} to ${contacts.length} contacts`); + } setLoadedContactsCount(contacts.length); // Reset hasLoadedWithContacts flag when contacts change setHasLoadedWithContacts(false); @@ -99,7 +104,9 @@ function FollowingScreen() { contactRefreshAttempts < maxContactRefreshAttempts; if (shouldRefresh) { - console.log(`[FollowingScreen] Refreshing feed with ${contacts.length} contacts (attempt ${contactRefreshAttempts + 1}/${maxContactRefreshAttempts})`); + if (!IS_PRODUCTION) { + console.log(`[FollowingScreen] Refreshing feed with ${contacts.length} contacts (attempt ${contactRefreshAttempts + 1}/${maxContactRefreshAttempts})`); + } setIsRefreshingWithContacts(true); setContactRefreshAttempts(prev => prev + 1); @@ -111,7 +118,9 @@ function FollowingScreen() { setIsRefreshingWithContacts(false); }) .catch(error => { - console.error('[FollowingScreen] Error refreshing feed:', error); + if (!IS_PRODUCTION) { + console.error('[FollowingScreen] Error refreshing feed:', error); + } setIsRefreshingWithContacts(false); // Prevent infinite retries by marking as loaded after max attempts @@ -183,7 +192,9 @@ function FollowingScreen() { } } } catch (error) { - console.error('[FollowingScreen] Error refreshing feed:', error); + if (!IS_PRODUCTION) { + console.error('[FollowingScreen] Error refreshing feed:', error); + } } finally { setIsRefreshing(false); } @@ -193,25 +204,33 @@ function FollowingScreen() { const checkRelayConnections = useCallback(() => { if (!ndk) return; - console.log("=== RELAY CONNECTION STATUS ==="); - if (ndk.pool && ndk.pool.relays) { - console.log(`Connected to ${ndk.pool.relays.size} relays:`); - ndk.pool.relays.forEach((relay) => { - console.log(`- ${relay.url}: ${relay.status}`); - }); - } else { - console.log("No relay pool or connections available"); + // Only log in development mode + if (!IS_PRODUCTION) { + console.log("=== RELAY CONNECTION STATUS ==="); + if (ndk.pool && ndk.pool.relays) { + console.log(`Connected to ${ndk.pool.relays.size} relays:`); + ndk.pool.relays.forEach((relay) => { + console.log(`- ${relay.url}: ${relay.status}`); + }); + } else { + console.log("No relay pool or connections available"); + } + console.log("==============================="); } - console.log("==============================="); }, [ndk]); // Handle post selection - simplified for testing const handlePostPress = useCallback((entry: any) => { // Just show an alert with the entry info for testing - alert(`Selected ${entry.type} with ID: ${entry.id || entry.eventId}`); + if (!IS_PRODUCTION) { + alert(`Selected ${entry.type} with ID: ${entry.id || entry.eventId}`); + + // Alternatively, log to console for debugging + console.log(`Selected ${entry.type}:`, entry); + } - // Alternatively, log to console for debugging - console.log(`Selected ${entry.type}:`, entry); + // In production, this would navigate to the post detail screen + // TODO: Implement proper post detail navigation for production }, []); // Memoize render item function @@ -267,15 +286,17 @@ function FollowingScreen() { : "No content from followed users found. Try following more users or check your relay connections."} - {/* Debug toggle */} - setShowDebug(!showDebug)} - > - {showDebug ? "Hide" : "Show"} Debug Info - + {/* Debug toggle - only shown in development */} + {!IS_PRODUCTION && ( + setShowDebug(!showDebug)} + > + {showDebug ? "Hide" : "Show"} Debug Info + + )} - {showDebug && ( + {!IS_PRODUCTION && showDebug && ( User pubkey: {currentUser?.pubkey?.substring(0, 12)}... Authenticated: {isAuthenticated ? "Yes" : "No"} @@ -305,16 +326,18 @@ function FollowingScreen() { return ( - {/* Debug toggle button */} - setShowDebug(!showDebug)} - > - - + {/* Debug toggle button - only shown in development */} + {!IS_PRODUCTION && ( + setShowDebug(!showDebug)} + > + + + )} - {/* Debug panel */} - {showDebug && } + {/* Debug panel - only shown in development */} + {!IS_PRODUCTION && showDebug && } {showNewButton && ( = 3.7.2" + "cli": { + "version": ">= 3.7.2" + }, + "build": { + "development-simulator": { + "developmentClient": true, + "distribution": "internal", + "ios": { + "simulator": true + } }, - "build": { - "development-simulator": { - "developmentClient": true, - "distribution": "internal", - "ios": { - "simulator": true - } - }, - "development": { - "developmentClient": true, - "distribution": "internal", - "android": { - "buildType": "apk" - } + "development": { + "developmentClient": true, + "distribution": "internal", + "android": { + "buildType": "apk" + } + }, + "preview": { + "distribution": "internal", + "ios": { + "resourceClass": "m1-medium" + } + }, + "production": { + "autoIncrement": true, + "ios": { + "resourceClass": "m1-medium" } } - } \ No newline at end of file + }, + "submit": { + "production": { + "ios": { + "appleId": "YOUR_APPLE_ID_EMAIL", + "ascAppId": "YOUR_APP_STORE_CONNECT_APP_ID", + "appleTeamId": "YOUR_APPLE_TEAM_ID" + } + } + } +} diff --git a/lib/theme/constants.ts b/lib/theme/constants.ts index bbfe775..cb62564 100644 --- a/lib/theme/constants.ts +++ b/lib/theme/constants.ts @@ -1,6 +1,24 @@ // lib/theme/constants.ts import { COLORS } from './colors'; +/** + * Application configuration + */ + +/** + * Set to true for production builds (TestFlight, App Store) + * This should be automatically configured based on the EAS build profile + * + * For local development, keep this as false + * For TestFlight/App Store builds, set to true + */ +export const IS_PRODUCTION = true; + +/** + * App version information + */ +export const APP_VERSION = '1.0.0'; + export interface NavigationThemeColors { background: string; border: string; @@ -39,4 +57,4 @@ export const NAV_THEME: { tabInactive: COLORS.dark.mutedForeground, tabIndicator: COLORS.purple.DEFAULT, }, -}; \ No newline at end of file +}; diff --git a/package-lock.json b/package-lock.json index 5aba305..a52a210 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,23 +49,22 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "date-fns": "^4.1.0", - "expo": "^52.0.35", + "expo": "~52.0.41", "expo-av": "~15.0.2", "expo-crypto": "~14.0.2", - "expo-dev-client": "~5.0.12", - "expo-file-system": "~18.0.10", + "expo-dev-client": "~5.0.15", + "expo-file-system": "~18.0.12", "expo-linking": "~7.0.4", "expo-navigation-bar": "~4.0.8", "expo-nip55": "^0.1.5", - "expo-random": "^14.0.1", - "expo-router": "~4.0.16", + "expo-router": "~4.0.19", "expo-secure-store": "~14.0.1", "expo-splash-screen": "~0.29.22", - "expo-sqlite": "~15.1.2", + "expo-sqlite": "~15.1.3", "expo-status-bar": "~2.0.1", "expo-system-ui": "~4.0.8", "jest": "~29.7.0", - "jest-expo": "~52.0.3", + "jest-expo": "~52.0.6", "lucide-react-native": "^0.378.0", "nativewind": "^4.1.23", "nostr-tools": "^2.10.4", @@ -92,7 +91,6 @@ "@types/jest": "^29.5.14", "@types/lodash": "^4.17.15", "@types/react": "~18.3.12", - "@types/react-native": "^0.72.8", "@types/uuid": "^10.0.0", "babel-plugin-module-resolver": "^5.0.2", "expo-haptics": "^14.0.1", @@ -2447,25 +2445,25 @@ } }, "node_modules/@expo/cli": { - "version": "0.22.16", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.16.tgz", - "integrity": "sha512-a8Ulbnji9kFatnOtsWGCRs6nMUj9UNC0/WhE74HQdXGDGMn5Pl8eNe3cLMy9G54DdqAmEZmRZpgXmcudT78fEQ==", + "version": "0.22.22", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.22.tgz", + "integrity": "sha512-sOttVuk/8gdnsiSeDpnRNpLgBJHLbyQQC0QBGd2iHpr/x6xSYpgoRO6AqwAwGtQsk4ZEPZ83ulvccei1IIPdwg==", "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.8", "@babel/runtime": "^7.20.0", "@expo/code-signing-certificates": "^0.0.5", - "@expo/config": "~10.0.10", - "@expo/config-plugins": "~9.0.15", + "@expo/config": "~10.0.11", + "@expo/config-plugins": "~9.0.17", "@expo/devcert": "^1.1.2", "@expo/env": "~0.4.2", "@expo/image-utils": "^0.6.5", "@expo/json-file": "^9.0.2", - "@expo/metro-config": "~0.19.10", + "@expo/metro-config": "~0.19.12", "@expo/osascript": "^2.1.6", "@expo/package-manager": "^1.7.2", "@expo/plist": "^0.2.2", - "@expo/prebuild-config": "^8.0.27", + "@expo/prebuild-config": "^8.0.29", "@expo/rudder-sdk-node": "^1.1.1", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", @@ -2596,14 +2594,14 @@ } }, "node_modules/@expo/config": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.10.tgz", - "integrity": "sha512-wI9/iam3Irk99ADGM/FyD7YrrEibIZXR4huSZiU5zt9o3dASOKhqepiNJex4YPiktLfKhYrpSEJtwno1g0SrgA==", + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.11.tgz", + "integrity": "sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==", "license": "MIT", "dependencies": { "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~9.0.15", - "@expo/config-types": "^52.0.4", + "@expo/config-plugins": "~9.0.17", + "@expo/config-types": "^52.0.5", "@expo/json-file": "^9.0.2", "deepmerge": "^4.3.1", "getenv": "^1.0.0", @@ -2617,14 +2615,14 @@ } }, "node_modules/@expo/config-plugins": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.15.tgz", - "integrity": "sha512-elKY/zIpAJ40RH26iwfyp+hwgeyPgIXX0SrCSOcjeJLsMsCmMac9ewvb+AN8y4k+N7m5lD/dMZupsaateKTFwA==", + "version": "9.0.17", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.17.tgz", + "integrity": "sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==", "license": "MIT", "dependencies": { - "@expo/config-types": "^52.0.4", - "@expo/json-file": "~9.0.1", - "@expo/plist": "^0.2.1", + "@expo/config-types": "^52.0.5", + "@expo/json-file": "~9.0.2", + "@expo/plist": "^0.2.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -2695,9 +2693,9 @@ } }, "node_modules/@expo/config-types": { - "version": "52.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.4.tgz", - "integrity": "sha512-oMGrb2o3niVCIfjnIHFrOoiDA9jGb0lc3G4RI1UiO//KjULBaQr3QTBoKDzZQwMqDV1AgYgSr9mgEcnX3LqhIg==", + "version": "52.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.5.tgz", + "integrity": "sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==", "license": "MIT" }, "node_modules/@expo/config/node_modules/@babel/code-frame": { @@ -2852,9 +2850,9 @@ } }, "node_modules/@expo/fingerprint": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.10.tgz", - "integrity": "sha512-34ZwPjbnnD7KHSyceaxcLQbClCkYHbEp6wBDe+aqimvQw25m2LnliN1cMCVQnpOHkBFRTcbKlowby0fIxAm2bQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.11.tgz", + "integrity": "sha512-gNyn1KnAOpEa8gSNsYqXMTcq0fSwqU/vit6fP5863vLSKxHm/dNt/gm/uZJxrRZxKq71KUJWF6I7d3z8qIfq5g==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -2980,18 +2978,18 @@ } }, "node_modules/@expo/metro-config": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.19.10.tgz", - "integrity": "sha512-/CtsMLhELJRJjAllM4EUnlPUAixn8Q2YhorKBa4uXZ6FvTEZWHJjqsXnQD39gWSEuAIVwLfJ1qgJi8666+dW2w==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.19.12.tgz", + "integrity": "sha512-fhT3x1ikQWHpZgw7VrEghBdscFPz1laRYa8WcVRB18nTTqorF6S8qPYslkJu1faEziHZS7c2uyDzTYnrg/CKbg==", "license": "MIT", "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", - "@expo/config": "~10.0.9", - "@expo/env": "~0.4.1", - "@expo/json-file": "~9.0.1", + "@expo/config": "~10.0.11", + "@expo/env": "~0.4.2", + "@expo/json-file": "~9.0.2", "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "debug": "^4.3.2", @@ -3146,16 +3144,16 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "8.0.27", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.27.tgz", - "integrity": "sha512-UFGOx4TfiT2gOde8RylwmXctp/WvqBQ4TN7z1YL0WWXfG9TWfO7HdsUnqQhGMW+CDDc7FOJMEo8q1a6xiikfYA==", + "version": "8.0.29", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.29.tgz", + "integrity": "sha512-CoZBxUQLZpGwbnPREr2sFnObOn4j+Mp7AHxX6Rz5jhSSz2VifC1jMM4NFiXrZe6LZyjYNqBGRe3D8bAqdpVGkg==", "license": "MIT", "dependencies": { - "@expo/config": "~10.0.9", - "@expo/config-plugins": "~9.0.15", - "@expo/config-types": "^52.0.4", - "@expo/image-utils": "^0.6.4", - "@expo/json-file": "^9.0.1", + "@expo/config": "~10.0.11", + "@expo/config-plugins": "~9.0.17", + "@expo/config-types": "^52.0.5", + "@expo/image-utils": "^0.6.5", + "@expo/json-file": "^9.0.2", "@react-native/normalize-colors": "0.76.7", "debug": "^4.3.1", "fs-extra": "^9.0.0", @@ -3237,15 +3235,15 @@ "license": "MIT" }, "node_modules/@expo/server": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.5.1.tgz", - "integrity": "sha512-lk8pKKw0eVP6rqkDR46vQB3vLA46z4KNGrqHpjD/SvMu1cGaRmQG2cQdX44mQtG8WyO9EYau+fBMHQQS2OTFKg==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.5.3.tgz", + "integrity": "sha512-WXsWzeBs5v/h0PUfHyNLLz07rwwO5myQ1A5DGYewyyGLmsyl61yVCe8AgAlp1wkiMsqhj2hZqI2u3K10QnCMrQ==", "license": "MIT", "dependencies": { - "@remix-run/node": "^2.12.0", "abort-controller": "^3.0.0", "debug": "^4.3.4", - "source-map-support": "~0.5.21" + "source-map-support": "~0.5.21", + "undici": "^6.18.2" } }, "node_modules/@expo/spawn-async": { @@ -4902,20 +4900,6 @@ "integrity": "sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==", "license": "MIT" }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.72.8", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", - "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "peerDependencies": { - "react-native": "*" - } - }, "node_modules/@react-navigation/bottom-tabs": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.2.0.tgz", @@ -5032,123 +5016,6 @@ "nanoid": "3.3.8" } }, - "node_modules/@remix-run/node": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.15.3.tgz", - "integrity": "sha512-TYfS6BPhbABBpSRZ6WBA4qIWSwWvJhRVQGXCHUtgOwkuW863rcFmjh9g2Xj/IHyTmbOYPdcjHsIgZ9el4CHOKQ==", - "license": "MIT", - "dependencies": { - "@remix-run/server-runtime": "2.15.3", - "@remix-run/web-fetch": "^4.4.2", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie-signature": "^1.1.0", - "source-map-support": "^0.5.21", - "stream-slice": "^0.1.2", - "undici": "^6.11.1" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@remix-run/router": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.22.0.tgz", - "integrity": "sha512-MBOl8MeOzpK0HQQQshKB7pABXbmyHizdTpqnrIseTbsv0nAepwC2ENZa1aaBExNQcpLoXmWthhak8SABLzvGPw==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@remix-run/server-runtime": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.15.3.tgz", - "integrity": "sha512-taHBe1DEqxZNjjj6OfkSYbup+sZPjbTgUhykaI+nHqrC2NDQuTiisBXhLwtx60GctONR/x0lWhF7R9ZGC5WsHw==", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.22.0", - "@types/cookie": "^0.6.0", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie": "^0.6.0", - "set-cookie-parser": "^2.4.8", - "source-map": "^0.7.3", - "turbo-stream": "2.4.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@remix-run/web-blob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", - "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", - "license": "MIT", - "dependencies": { - "@remix-run/web-stream": "^1.1.0", - "web-encoding": "1.1.5" - } - }, - "node_modules/@remix-run/web-fetch": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz", - "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==", - "license": "MIT", - "dependencies": { - "@remix-run/web-blob": "^3.1.0", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-form-data": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", - "@web3-storage/multipart-parser": "^1.0.0", - "abort-controller": "^3.0.0", - "data-uri-to-buffer": "^3.0.1", - "mrmime": "^1.0.0" - }, - "engines": { - "node": "^10.17 || >=12.3" - } - }, - "node_modules/@remix-run/web-file": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", - "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", - "license": "MIT", - "dependencies": { - "@remix-run/web-blob": "^3.1.0" - } - }, - "node_modules/@remix-run/web-form-data": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", - "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", - "license": "MIT", - "dependencies": { - "web-encoding": "1.1.5" - } - }, - "node_modules/@remix-run/web-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", - "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", - "license": "MIT", - "dependencies": { - "web-streams-polyfill": "^3.1.1" - } - }, "node_modules/@rn-primitives/accordion": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rn-primitives/accordion/-/accordion-1.1.0.tgz", @@ -9156,12 +9023,6 @@ "@types/filesystem": "*" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" - }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -9316,17 +9177,6 @@ "csstype": "^3.0.2" } }, - "node_modules/@types/react-native": { - "version": "0.72.8", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.8.tgz", - "integrity": "sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native/virtualized-lists": "^0.72.4", - "@types/react": "*" - } - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -9384,12 +9234,6 @@ "@urql/core": "^5.0.0" } }, - "node_modules/@web3-storage/multipart-parser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", - "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==", - "license": "(Apache-2.0 AND MIT)" - }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -9575,13 +9419,6 @@ "license": "Apache-2.0", "peer": true }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "license": "(Unlicense OR Apache-2.0)", - "optional": true - }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -9893,21 +9730,6 @@ "node": ">= 4.0.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", @@ -10104,9 +9926,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.8.tgz", - "integrity": "sha512-bojAddWZJusLs3NVdF+jN3WweTYVEZXBKIeO0sOhqOg7UPh5w1bnMkx7SDua0FgQMGBxb13qM31Y46yeZnmXjw==", + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.9.tgz", + "integrity": "sha512-1c+ysrTavT49WgVAj0OX/TEzt1kU2mfPhDaDajstshNHXFKPenMPWSViA/DHrJKVIMwaqr+z3GbUOD9GtKgpdg==", "license": "MIT", "dependencies": { "@babel/plugin-proposal-decorators": "^7.12.9", @@ -10461,24 +10283,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -10492,22 +10296,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -11047,24 +10835,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, "node_modules/core-js-compat": { "version": "3.40.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", @@ -11309,15 +11079,6 @@ "node": ">=0.12" } }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -11431,23 +11192,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -12176,32 +11920,34 @@ } }, "node_modules/expo": { - "version": "52.0.35", - "resolved": "https://registry.npmjs.org/expo/-/expo-52.0.35.tgz", - "integrity": "sha512-VagwS6MJbU0Eky18i4amkkSy7FTi0v31B0W+qoEcsU4x5OurA381rxw4qGsQE+8pmSD/Gf3DGb8ygJw+HoAsXw==", + "version": "52.0.41", + "resolved": "https://registry.npmjs.org/expo/-/expo-52.0.41.tgz", + "integrity": "sha512-qFdt1l2ltj5XWf1tnQ5UidWkaNQWf3CbhldjVb/ui/iGp1x038W7QUhT6BwaCOY6N9yuCZKnFS4Uk9Cxwfsc+w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "0.22.16", - "@expo/config": "~10.0.10", - "@expo/config-plugins": "~9.0.15", - "@expo/fingerprint": "0.11.10", - "@expo/metro-config": "0.19.10", + "@expo/cli": "0.22.22", + "@expo/config": "~10.0.11", + "@expo/config-plugins": "~9.0.17", + "@expo/fingerprint": "0.11.11", + "@expo/metro-config": "0.19.12", "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~12.0.8", - "expo-asset": "~11.0.3", - "expo-constants": "~17.0.6", - "expo-file-system": "~18.0.10", - "expo-font": "~13.0.3", - "expo-keep-awake": "~14.0.2", - "expo-modules-autolinking": "2.0.7", - "expo-modules-core": "2.2.2", + "babel-preset-expo": "~12.0.9", + "expo-asset": "~11.0.5", + "expo-constants": "~17.0.8", + "expo-file-system": "~18.0.12", + "expo-font": "~13.0.4", + "expo-keep-awake": "~14.0.3", + "expo-modules-autolinking": "2.0.8", + "expo-modules-core": "2.2.3", "fbemitter": "^3.0.0", "web-streams-polyfill": "^3.3.2", "whatwg-url-without-unicode": "8.0.0-3" }, "bin": { - "expo": "bin/cli" + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" }, "peerDependencies": { "@expo/dom-webview": "*", @@ -12223,13 +11969,13 @@ } }, "node_modules/expo-asset": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.3.tgz", - "integrity": "sha512-vgJnC82IooAVMy5PxbdFIMNJhW4hKAUyxc5VIiAPPf10vFYw6CqHm+hrehu4ST1I4bvg5PV4uKdPxliebcbgLg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.5.tgz", + "integrity": "sha512-TL60LmMBGVzs3NQcO8ylWqBumMh4sx0lmeJsn7+9C88fylGDhyyVnKZ1PyTXo9CVDBkndutZx2JUEQWM9BaiXw==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.6.4", - "expo-constants": "~17.0.5", + "@expo/image-utils": "^0.6.5", + "expo-constants": "~17.0.8", "invariant": "^2.2.4", "md5-file": "^3.2.3" }, @@ -12257,13 +12003,13 @@ } }, "node_modules/expo-constants": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.6.tgz", - "integrity": "sha512-rl3/hBIIkh4XDkCEMzGpmY6kWj2G1TA4Mq2joeyzoFBepJuGjqnGl7phf/71sTTgamQ1hmhKCLRNXMpRqzzqxw==", + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.8.tgz", + "integrity": "sha512-XfWRyQAf1yUNgWZ1TnE8pFBMqGmFP5Gb+SFSgszxDdOoheB/NI5D4p7q86kI2fvGyfTrxAe+D+74nZkfsGvUlg==", "license": "MIT", "dependencies": { - "@expo/config": "~10.0.9", - "@expo/env": "~0.4.1" + "@expo/config": "~10.0.11", + "@expo/env": "~0.4.2" }, "peerDependencies": { "expo": "*", @@ -12283,15 +12029,15 @@ } }, "node_modules/expo-dev-client": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-5.0.12.tgz", - "integrity": "sha512-F8Pz3ppxq0vhwVK2XgzmDUfxW1MEFpUdTLl+Pjwp9FDB+Br1wqyIz1yKshD7Hv1i/SR2BwjlJcriOPWt9NREuA==", + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-5.0.15.tgz", + "integrity": "sha512-G7DtHTYpbehafMnNEqWs4COsIS0TZe5qiO382q6JwOXH1Lpd8JoJ/PZGXUe9a4C/8KDg7iqLXnyiABzidDGecA==", "license": "MIT", "dependencies": { - "expo-dev-launcher": "5.0.29", - "expo-dev-menu": "6.0.19", + "expo-dev-launcher": "5.0.31", + "expo-dev-menu": "6.0.21", "expo-dev-menu-interface": "1.9.3", - "expo-manifests": "~0.15.5", + "expo-manifests": "~0.15.7", "expo-updates-interface": "~1.0.0" }, "peerDependencies": { @@ -12299,14 +12045,14 @@ } }, "node_modules/expo-dev-launcher": { - "version": "5.0.29", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-5.0.29.tgz", - "integrity": "sha512-wb48vIXUwuqD0Z2xvdkNt+o7OLT7FtMoSwYVkx28linG+9Sn2Zgjbs4SVnJYkpRfZZh9unOIRqB9EsJhM12Lzg==", + "version": "5.0.31", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-5.0.31.tgz", + "integrity": "sha512-eCDayo5ZIf3hFm+phF8VpT67pgX32Tq05pkw65zlYue/hbzZjoHr7nehnXR3j3qPs5IZFkBaV0dmnN3U3bU73Q==", "license": "MIT", "dependencies": { "ajv": "8.11.0", - "expo-dev-menu": "6.0.19", - "expo-manifests": "~0.15.5", + "expo-dev-menu": "6.0.21", + "expo-manifests": "~0.15.7", "resolve-from": "^5.0.0" }, "peerDependencies": { @@ -12330,9 +12076,9 @@ } }, "node_modules/expo-dev-menu": { - "version": "6.0.19", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-6.0.19.tgz", - "integrity": "sha512-CzjsiUne/Zwr7/AqI5JwcocV2NKQ3lZ3GteVc7ksORU7UZr0a0uTgcmA4ogqbBnFebBRVntxPR6zKXYlsvUGow==", + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-6.0.21.tgz", + "integrity": "sha512-HO5UpNqGXBFWqGoGQhlvarJLI0jZpXkIXBvl60QGiIwbpSRThVI5jjZ5iCFmrpSJjlSXczaid31ZfKGtggiVdA==", "license": "MIT", "dependencies": { "expo-dev-menu-interface": "1.9.3" @@ -12351,9 +12097,9 @@ } }, "node_modules/expo-file-system": { - "version": "18.0.10", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.10.tgz", - "integrity": "sha512-+GnxkI+J9tOzUQMx+uIOLBEBsO2meyoYHxd87m9oT9M//BpepYqI1AvYBH8YM4dgr9HaeaeLr7z5XFVqfL8tWg==", + "version": "18.0.12", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.12.tgz", + "integrity": "sha512-HAkrd/mb8r+G3lJ9MzmGeuW2B+BxQR1joKfeCyY4deLl1zoZ48FrAWjgZjHK9aHUVhJ0ehzInu/NQtikKytaeg==", "license": "MIT", "dependencies": { "web-streams-polyfill": "^3.3.2" @@ -12364,9 +12110,9 @@ } }, "node_modules/expo-font": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.3.tgz", - "integrity": "sha512-9IdYz+A+b3KvuCYP7DUUXF4VMZjPU+IsvAnLSVJ2TfP6zUD2JjZFx3jeo/cxWRkYk/aLj5+53Te7elTAScNl4Q==", + "version": "13.0.4", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.4.tgz", + "integrity": "sha512-eAP5hyBgC8gafFtprsz0HMaB795qZfgJWqTmU0NfbSin1wUuVySFMEPMOrTkTgmazU73v4Cb4x7p86jY1XXYUw==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -12393,9 +12139,9 @@ "license": "MIT" }, "node_modules/expo-keep-awake": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.2.tgz", - "integrity": "sha512-71XAMnoWjKZrN8J7Q3+u0l9Ytp4OfhNAYz8BCWF1/9aFUw09J3I7Z5DuI3MUsVMa/KWi+XhG+eDUFP8cVA19Uw==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.3.tgz", + "integrity": "sha512-6Jh94G6NvTZfuLnm2vwIpKe3GdOiVBuISl7FI8GqN0/9UOg9E0WXXp5cDcfAG8bn80RfgLJS8P7EPUGTZyOvhg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -12430,9 +12176,9 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.7.tgz", - "integrity": "sha512-rkGc6a/90AC3q8wSy4V+iIpq6Fd0KXmQICKrvfmSWwrMgJmLfwP4QTrvLYPYOOMjFwNJcTaohcH8vzW/wYKrMg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.8.tgz", + "integrity": "sha512-DezgnEYFQYic8hKGhkbztBA3QUmSftjaNDIKNAtS2iGJmzCcNIkatjN2slFDSWjSTNo8gOvPQyMKfyHWFvLpOQ==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -12485,9 +12231,9 @@ } }, "node_modules/expo-modules-core": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.2.2.tgz", - "integrity": "sha512-SgjK86UD89gKAscRK3bdpn6Ojfs/KU4GujtuFx1wm4JaBjmXH4aakWkItkPlAV2pjIiHJHWQbENL9xjbw/Qr/g==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.2.3.tgz", + "integrity": "sha512-01QqZzpP/wWlxnNly4G06MsOBUTbMDj02DQigZoXfDh80vd/rk3/uVXqnZgOdLSggTs6DnvOgAUy0H2q30XdUg==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -12519,27 +12265,14 @@ "react-native": "*" } }, - "node_modules/expo-random": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-14.0.1.tgz", - "integrity": "sha512-gX2mtR9o+WelX21YizXUCD/y+a4ZL+RDthDmFkHxaYbdzjSYTn8u/igoje/l3WEO+/RYspmqUFa8w/ckNbt6Vg==", - "deprecated": "This package is now deprecated in favor of expo-crypto, which provides the same functionality. To migrate, replace all imports from expo-random with imports from expo-crypto.", - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.0" - }, - "peerDependencies": { - "expo": "*" - } - }, "node_modules/expo-router": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-4.0.17.tgz", - "integrity": "sha512-8ybo6bVwdG1S9hafh9BTOjX1hpCgomdUvs6hKHMM01koo8mQ7zocH/+zxQeaMVDxGhboz2dO5GiDchWJ0OheRA==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-4.0.19.tgz", + "integrity": "sha512-oZ/vAx0x126Q6rccpWkMhKa/17YHYfeXQP8KwqaIadQsTR28cLgAY2gcAtFQyc8XTjgJmsRnfQNyCnyNN04DWg==", "license": "MIT", "dependencies": { "@expo/metro-runtime": "4.0.1", - "@expo/server": "^0.5.1", + "@expo/server": "^0.5.3", "@radix-ui/react-slot": "1.0.1", "@react-navigation/bottom-tabs": "^7.2.0", "@react-navigation/native": "^7.0.14", @@ -12632,9 +12365,9 @@ } }, "node_modules/expo-sqlite": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-15.1.2.tgz", - "integrity": "sha512-xe+v56ts6GWJoNXLpWBQJmIPd7K1Bk9tmWc2b0nV5yUjqXZX3lbTYm8QhXEqUJxYu87o2GSkNqAqNKeDbMUXGQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-15.1.3.tgz", + "integrity": "sha512-YyxU4rBfSo+aLKBbRjlw4SoAkLLbUPpB2XLq+JMwIZrTdVFwr+CvtyNLsC9omevsLXBODXhVkX0Rk3gASag2eg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -13025,21 +12758,6 @@ "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", "license": "BSD-2-Clause" }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/foreground-child": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", @@ -13398,18 +13116,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -13770,22 +13476,6 @@ "node": ">= 0.10" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -13810,18 +13500,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -13888,24 +13566,6 @@ "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -13963,24 +13623,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "license": "MIT" }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -13990,21 +13632,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -14481,13 +14108,13 @@ } }, "node_modules/jest-expo": { - "version": "52.0.4", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-52.0.4.tgz", - "integrity": "sha512-6+MDQnpwWi3Cka+GvzncCEw8y8LTLiulf9RMII9MZMmML68dRp+njYvZQQutRkF+WwVZLM2id59puYAsKBL1Qg==", + "version": "52.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-52.0.6.tgz", + "integrity": "sha512-Ql60mCy4cfwyNvCW2wpEXbw/3i5H+SmB1XP1z0SJUpafGBipq6xMjPcgQpe/7PzAHTc/ikD+dFA0sPnljDJmZQ==", "license": "MIT", "dependencies": { - "@expo/config": "~10.0.9", - "@expo/json-file": "^9.0.1", + "@expo/config": "~10.0.11", + "@expo/json-file": "^9.0.2", "@jest/create-cache-key-function": "^29.2.1", "@jest/globals": "^29.2.1", "babel-jest": "^29.2.1", @@ -16532,15 +16159,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -17499,15 +17117,6 @@ "node": ">=4.0.0" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", @@ -18861,23 +18470,6 @@ ], "license": "MIT" }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -19139,29 +18731,6 @@ "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", "license": "MIT" }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -19302,15 +18871,6 @@ "node": ">=8.0.0" } }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -19483,12 +19043,6 @@ "node": ">= 0.10.0" } }, - "node_modules/stream-slice": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", - "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==", - "license": "MIT" - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -20258,12 +19812,6 @@ "integrity": "sha512-+O2ybLVLKcBwKm4HymCEwZIT0PpwS3gCYnxfSDEjJEKADvIFruaQjd3m7CAKNU1c7N3X3WjVz87re7TA2A5FUw==", "license": "MIT" }, - "node_modules/turbo-stream": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", - "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", - "license": "ISC" - }, "node_modules/type": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", @@ -20592,19 +20140,6 @@ "node": ">=8" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -20717,18 +20252,6 @@ "defaults": "^1.0.3" } }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "license": "MIT", - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, "node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", @@ -20932,26 +20455,6 @@ "node": ">= 8" } }, - "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wonka": { "version": "6.3.4", "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.4.tgz", diff --git a/package.json b/package.json index 16359e8..326ec98 100644 --- a/package.json +++ b/package.json @@ -63,23 +63,22 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "date-fns": "^4.1.0", - "expo": "^52.0.35", + "expo": "~52.0.41", "expo-av": "~15.0.2", "expo-crypto": "~14.0.2", - "expo-dev-client": "~5.0.12", - "expo-file-system": "~18.0.10", + "expo-dev-client": "~5.0.15", + "expo-file-system": "~18.0.12", "expo-linking": "~7.0.4", "expo-navigation-bar": "~4.0.8", "expo-nip55": "^0.1.5", - "expo-random": "^14.0.1", - "expo-router": "~4.0.16", + "expo-router": "~4.0.19", "expo-secure-store": "~14.0.1", "expo-splash-screen": "~0.29.22", - "expo-sqlite": "~15.1.2", + "expo-sqlite": "~15.1.3", "expo-status-bar": "~2.0.1", "expo-system-ui": "~4.0.8", "jest": "~29.7.0", - "jest-expo": "~52.0.3", + "jest-expo": "~52.0.6", "lucide-react-native": "^0.378.0", "nativewind": "^4.1.23", "nostr-tools": "^2.10.4", @@ -106,7 +105,6 @@ "@types/jest": "^29.5.14", "@types/lodash": "^4.17.15", "@types/react": "~18.3.12", - "@types/react-native": "^0.72.8", "@types/uuid": "^10.0.0", "babel-plugin-module-resolver": "^5.0.2", "expo-haptics": "^14.0.1",