diff --git a/android/ModeratedChat/app/build.gradle.kts b/android/ModeratedChat/app/build.gradle.kts index 89cf886..2ca00a9 100644 --- a/android/ModeratedChat/app/build.gradle.kts +++ b/android/ModeratedChat/app/build.gradle.kts @@ -52,7 +52,7 @@ android { dependencies { implementation("io.coil-kt:coil-compose:2.5.0") implementation("com.google.code.gson:gson:2.10.1") - implementation("software.momento.kotlin:sdk:0.1.3") + implementation("software.momento.kotlin:sdk:0.3.0") implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") implementation("androidx.activity:activity-compose:1.8.2") diff --git a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt index 45c04c6..fcd8f5b 100644 --- a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt +++ b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt @@ -295,9 +295,17 @@ fun ModeratedChatLayout( try { topicSubscribe(language = currentLanguage) { - val jsonMessage = JSONObject(it) - val parsedMessage = parseMessage(jsonMessage) - currentMessages.add(parsedMessage) + // Previously, we were adding the just-received message directly + // but this caused duplicate messages to appear when switching + // languages very soon after. This may be due to the sequence page + // change, prompting the topic to send the last message(s) again. + // Let's just fetch the authoritative list of messages from the + // translation service instead. + getMessagesForLanguage(languageCode = currentLanguage) { + for (i in 0.. { sourceLanguage: selectedLanguage, }); } - setChats((curr) => [...curr, message]); + // Previously, we were adding the just-received message directly + // but this caused duplicate messages to appear when switching + // languages very soon after. This may be due to the sequence page + // change, prompting the topic to send the last message(s) again. + // Let's just fetch the authoritative list of messages from the + // translation service instead. + fetchLatestChats(); } catch (e) { console.error("unable to parse chat message", e); } diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..fda4de3 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,62 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output \ No newline at end of file diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj index eca66ec..70e83dc 100644 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj +++ b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 083856442CF673C10090B718 /* Momento in Frameworks */ = {isa = PBXBuildFile; productRef = 083856432CF673C10090B718 /* Momento */; }; 083F34212B743B6A00489C8D /* Profanity Filter in Frameworks */ = {isa = PBXBuildFile; productRef = 083F34202B743B6A00489C8D /* Profanity Filter */; }; 08ABEF462B62F31A00A31A34 /* MessageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ABEF452B62F31A00A31A34 /* MessageStore.swift */; }; 08B3F11E2B572889003D2CB3 /* ModeratedChatApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F11D2B572889003D2CB3 /* ModeratedChatApp.swift */; }; @@ -17,7 +18,6 @@ 08B3F12E2B57593A003D2CB3 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F12D2B57593A003D2CB3 /* ChatView.swift */; }; 08B3F1302B575A3E003D2CB3 /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F12F2B575A3E003D2CB3 /* HeaderView.swift */; }; 08B3F1322B58418D003D2CB3 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F1312B58418D003D2CB3 /* Models.swift */; }; - 08B3F1352B5890ED003D2CB3 /* Momento in Frameworks */ = {isa = PBXBuildFile; productRef = 08B3F1342B5890ED003D2CB3 /* Momento */; }; 08B3F1392B59AAE0003D2CB3 /* Users.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F1382B59AAE0003D2CB3 /* Users.swift */; }; 08B3F13C2B59B1DA003D2CB3 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 08B3F13B2B59B1DA003D2CB3 /* Alamofire */; }; 08ED530F2B63001E008432E1 /* MomentoClients.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ED530E2B63001E008432E1 /* MomentoClients.swift */; }; @@ -45,7 +45,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 08B3F1352B5890ED003D2CB3 /* Momento in Frameworks */, + 083856442CF673C10090B718 /* Momento in Frameworks */, 083F34212B743B6A00489C8D /* Profanity Filter in Frameworks */, 08B3F13C2B59B1DA003D2CB3 /* Alamofire in Frameworks */, ); @@ -114,9 +114,9 @@ ); name = ModeratedChat; packageProductDependencies = ( - 08B3F1342B5890ED003D2CB3 /* Momento */, 08B3F13B2B59B1DA003D2CB3 /* Alamofire */, 083F34202B743B6A00489C8D /* Profanity Filter */, + 083856432CF673C10090B718 /* Momento */, ); productName = ModeratedChat; productReference = 08B3F11A2B572889003D2CB3 /* ModeratedChat.app */; @@ -147,9 +147,9 @@ ); mainGroup = 08B3F1112B572889003D2CB3; packageReferences = ( - 08B3F1332B5890ED003D2CB3 /* XCRemoteSwiftPackageReference "client-sdk-swift" */, 08B3F13A2B59B1DA003D2CB3 /* XCRemoteSwiftPackageReference "Alamofire" */, 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */, + 083856422CF673C10090B718 /* XCRemoteSwiftPackageReference "client-sdk-swift" */, ); productRefGroup = 08B3F11B2B572889003D2CB3 /* Products */; projectDirPath = ""; @@ -398,20 +398,20 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */ = { + 083856422CF673C10090B718 /* XCRemoteSwiftPackageReference "client-sdk-swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/jvanbrunt/profanitiy-filter-swift"; + repositoryURL = "https://github.com/momentohq/client-sdk-swift"; requirement = { kind = exactVersion; - version = 0.0.2; + version = 0.7.1; }; }; - 08B3F1332B5890ED003D2CB3 /* XCRemoteSwiftPackageReference "client-sdk-swift" */ = { + 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/momentohq/client-sdk-swift"; + repositoryURL = "https://github.com/jvanbrunt/profanitiy-filter-swift"; requirement = { kind = exactVersion; - version = 0.5.0; + version = 0.0.2; }; }; 08B3F13A2B59B1DA003D2CB3 /* XCRemoteSwiftPackageReference "Alamofire" */ = { @@ -425,16 +425,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 083856432CF673C10090B718 /* Momento */ = { + isa = XCSwiftPackageProductDependency; + package = 083856422CF673C10090B718 /* XCRemoteSwiftPackageReference "client-sdk-swift" */; + productName = Momento; + }; 083F34202B743B6A00489C8D /* Profanity Filter */ = { isa = XCSwiftPackageProductDependency; package = 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */; productName = "Profanity Filter"; }; - 08B3F1342B5890ED003D2CB3 /* Momento */ = { - isa = XCSwiftPackageProductDependency; - package = 08B3F1332B5890ED003D2CB3 /* XCRemoteSwiftPackageReference "client-sdk-swift" */; - productName = Momento; - }; 08B3F13B2B59B1DA003D2CB3 /* Alamofire */ = { isa = XCSwiftPackageProductDependency; package = 08B3F13A2B59B1DA003D2CB3 /* XCRemoteSwiftPackageReference "Alamofire" */; diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index f8dd809..1dcf9d2 100644 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,4 +1,5 @@ { + "originHash" : "2157297f3ba668b87b8ebc4cb6a19d97aedf6ac74c06b30b189552fe127daad5", "pins" : [ { "identity" : "alamofire", @@ -14,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/momentohq/client-sdk-swift", "state" : { - "revision" : "7d1f7b377921e1867d074c654a7b6ba0d91eea48", - "version" : "0.5.0" + "revision" : "71048be91984c5117f02045aa8ee011638cb1493", + "version" : "0.7.1" } }, { @@ -136,5 +137,5 @@ } } ], - "version" : 2 + "version" : 3 } diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate index 31cd8fe..d689f48 100644 Binary files a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate and b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme index a7bd638..067c876 100644 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme +++ b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme @@ -38,6 +38,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index 315b86f..0000000 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 4cad10b..0000000 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - ModeratedChat.xcscheme_^#shared#^_ - - orderHint - 0 - - - SuppressBuildableAutocreation - - 08B3F1192B572889003D2CB3 - - primary - - - - - diff --git a/ios/ModeratedChat/ModeratedChat/MessageStore.swift b/ios/ModeratedChat/ModeratedChat/MessageStore.swift index eec32a1..76c58ed 100644 --- a/ios/ModeratedChat/ModeratedChat/MessageStore.swift +++ b/ios/ModeratedChat/ModeratedChat/MessageStore.swift @@ -20,23 +20,14 @@ class MessageStore: ObservableObject { if let nonNilSubscription = momentoClients.subscription { for try await item in nonNilSubscription.stream { switch item { - case .itemText(let textItem): - let response: ChatMessageEvent = try! JSONDecoder().decode(ChatMessageEvent.self, from: textItem.value.data(using: .utf8)!) - - if response.messageType == MessageType.image { - if let image = await getImageMessage(message: response.message) { - let imageResponse = ChatMessageEvent( - user: response.user, - messageType: response.messageType, - message: image, - sourceLanguage: response.sourceLanguage, - timestamp: response.timestamp - ) - self.chatMessageEvents.append(imageResponse) - } - } else { - self.chatMessageEvents.append(response) - } + case .itemText(_): + // We used to process new events individually, but since we supported + // topics sequence page, we're more likely to receive duplicate messages + // when switching between languages very soon after sending new messages, + // probably because the sequence page is still the same. + // Let's grab the authoritative list of messages each time we subscribe and + // when we get a new item instead. + self.chatMessageEvents = await translationApi.getLatestChats() case .itemBinary(let binaryItem): let value = String(decoding: binaryItem.value, as: UTF8.self) print("Subscriber unexpectedly recieved binary message: \(value)") diff --git a/ios/README.md b/ios/README.md index a59fed6..1f760a8 100644 --- a/ios/README.md +++ b/ios/README.md @@ -23,4 +23,6 @@ Note: You may also need to specify a variable to enable logging output in order ```bash IDEPreferLogStreaming=YES -``` \ No newline at end of file +``` + +Note: if you run into an error saying "principal class is nil because all fallbacks have failed", you can try turning off API validation in the settings as mentioned in this [github issue comment](https://github.com/flutter/flutter/issues/150227#issuecomment-2423291527). \ No newline at end of file diff --git a/react-native/ModeratedChat/ChatApp.tsx b/react-native/ModeratedChat/ChatApp.tsx index 120fc71..d234746 100644 --- a/react-native/ModeratedChat/ChatApp.tsx +++ b/react-native/ModeratedChat/ChatApp.tsx @@ -105,7 +105,7 @@ const ChatApp = (props: ChatProps) => { sourceLanguage: selectedLanguage, }); } - setChats((curr) => [...curr, message]); + fetchLatestChats(); } catch (e) { console.error("unable to parse chat message", e); } diff --git a/react-native/ModeratedChat/package-lock.json b/react-native/ModeratedChat/package-lock.json index d700911..7ef9a86 100644 --- a/react-native/ModeratedChat/package-lock.json +++ b/react-native/ModeratedChat/package-lock.json @@ -8,7 +8,7 @@ "name": "moderatedchat", "version": "1.0.0", "dependencies": { - "@gomomento/sdk-web": "^1.66.0", + "@gomomento/sdk-web": "^1.102.0", "@react-native/metro-config": "^0.73.5", "@types/react": "~18.2.14", "base-64": "^1.0.0", @@ -18,7 +18,7 @@ "expo-image-picker": "~14.3.2", "expo-splash-screen": "~0.20.5", "expo-status-bar": "~1.6.0", - "expo-storage": "^51.0.8", + "expo-storage": "^48.1.0", "expo-system-ui": "^2.9.3", "react": "18.2.0", "react-native": "0.72.10", @@ -3314,40 +3314,40 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "node_modules/@gomomento/generated-types-webtext": { - "version": "0.106.0", - "resolved": "https://registry.npmjs.org/@gomomento/generated-types-webtext/-/generated-types-webtext-0.106.0.tgz", - "integrity": "sha512-b8OqrGuqsRqpbhUS6tnlqZD2dVZO2GRRfp16m7zVOZDbq7pdA8nYwWCT0GxfiqgIcDWPSGzAUoeqEdCp4hs0Sw==", + "version": "0.119.2", + "resolved": "https://registry.npmjs.org/@gomomento/generated-types-webtext/-/generated-types-webtext-0.119.2.tgz", + "integrity": "sha512-Sxq1/JqnVe3IwOEhUTtXLtIoGV8tkAgVrNgHQJRu0F6h+ZZpvTfuB0kW+xq0uRVLSeZfDCQiH3bJsaezLVg+ug==", "dependencies": { "google-protobuf": "3.21.2", "grpc-web": "1.4.2" } }, "node_modules/@gomomento/sdk-core": { - "version": "1.66.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.66.0.tgz", - "integrity": "sha512-ZrVAyvc1cF8CC5vd6v4xZToyyg+PgYoZ23MYJaY9dVgrQQ/AxKnZjJc/NTjdYblbup2XgorSXFwQC78AuRoC7Q==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.102.0.tgz", + "integrity": "sha512-JfXpcgLUxnXWy7rDXpaCEQnZI90ORsbpxomJvgwK3gOF4JYa7XqMPIkC+8oNPEzRSJ1XXNk+41mF2+LPlsjiNA==", "dependencies": { "buffer": "6.0.3", "jwt-decode": "3.1.2" }, "engines": { - "node": ">= 14" + "node": ">= 16" } }, "node_modules/@gomomento/sdk-web": { - "version": "1.66.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.66.0.tgz", - "integrity": "sha512-ZuZ+AJhIH+Iw3KFDciZ4Vi0RmQxTdkHN4jD+vP/iqDw+Aee1G+t0tXok1xYWi1fVc7Gft11FE2E2lop8OqZ9Pg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.102.0.tgz", + "integrity": "sha512-mEPwAi/oX1Gqg9BEXpCkFIy4Ue+TOrTeEzLOzOq5wN5TOfj9Xt5ckV7fgGFGuAOKoRpbYyq1JLn8HcaKJVTp9g==", "dependencies": { - "@gomomento/generated-types-webtext": "0.106.0", - "@gomomento/sdk-core": "1.66.0", + "@gomomento/generated-types-webtext": "0.119.2", + "@gomomento/sdk-core": "1.102.0", "@types/google-protobuf": "3.15.6", "google-protobuf": "3.21.2", "grpc-web": "1.4.2", "jwt-decode": "3.1.2" }, "engines": { - "node": ">= 14" + "node": ">= 16" } }, "node_modules/@graphql-typed-document-node/core": { @@ -8412,145 +8412,870 @@ "integrity": "sha512-e//Oi2WPdomMlMDD3skE4+1ZarKCJ/suvcB4Jo/nO427niKug5oppcPNYO+csR6y3ZglGuypS+3pp/hJ+Xp6fQ==" }, "node_modules/expo-storage": { - "version": "51.0.8", - "resolved": "https://registry.npmjs.org/expo-storage/-/expo-storage-51.0.8.tgz", - "integrity": "sha512-Mwy2HK5I/XpjteiDsttFjCHVtpJ5K08uDsfv9uNkzz61Wj9iuZSVlhiLYoFjMzUa1m6Ow7kR5R8a37Lt11h9uQ==", - "peerDependencies": { - "expo-file-system": ">=17.0.1", - "react": ">=18.2.0", - "react-native": ">=0.74.3" + "version": "48.1.0", + "resolved": "https://registry.npmjs.org/expo-storage/-/expo-storage-48.1.0.tgz", + "integrity": "sha512-06k67LD0ShlNmPpxYGCdhamdy/kmQWJWXiUxodV61izVXgZnJTCql0NeTD28J9oj0aIAXxTLaxiRBYv6p1hVog==", + "dependencies": { + "expo": "^48.0.0" } }, - "node_modules/expo-system-ui": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-2.9.3.tgz", - "integrity": "sha512-RNFNBLJ9lhnjOGrHhtfDc15Ry/lF+SA4kwulmHzYGqaTeYvsL9q0K0+m9qmxuDdrbKJkuurvzvjVylDNnKNFVg==", + "node_modules/expo-storage/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { - "@react-native/normalize-color": "^2.0.0", - "debug": "^4.3.2" - }, - "peerDependencies": { - "expo": "*" + "@babel/highlight": "^7.10.4" } }, - "node_modules/expo/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/expo-storage/node_modules/@expo/cli": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.7.3.tgz", + "integrity": "sha512-uMGHbAhApqXR2sd1KPhgvpbOhBBnspad8msEqHleT2PHXwKIwTUDzBGO9+jdOAWwCx2MJfw3+asYjzoD3DN9Bg==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~8.0.0", + "@expo/config-plugins": "~6.0.0", + "@expo/dev-server": "0.3.0", + "@expo/devcert": "^1.0.0", + "@expo/json-file": "^8.2.37", + "@expo/metro-config": "~0.7.0", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~1.0.0", + "@expo/plist": "^0.0.20", + "@expo/prebuild-config": "6.0.1", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "1.5.0", + "@expo/xcpretty": "^4.2.1", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "4.1.0", + "better-opn": "~3.0.2", + "bplist-parser": "^0.3.1", + "cacache": "^15.3.0", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", + "internal-ip": "4.3.0", + "is-root": "^2.1.0", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "md5-file": "^3.2.3", + "md5hex": "^1.0.0", + "minipass": "3.1.6", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "ora": "3.4.0", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^6.3.0", + "send": "^0.18.0", + "slugify": "^1.3.4", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, "bin": { - "uuid": "bin/uuid" + "expo-internal": "build/bin/cli" } }, - "node_modules/fast-base64-decode": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", - "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==" + "node_modules/expo-storage/node_modules/@expo/config": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.0.5.tgz", + "integrity": "sha512-3CnLmtAQUWqLZwTRliS23QoFwdyhg4AWtp6gZ0qfcXthR84RvlZKcCDQQIyPiRUgu8dZa+gQDcdRJtgE+GM5XQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~6.0.0", + "@expo/config-types": "^48.0.0", + "@expo/json-file": "^8.2.37", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/expo-storage/node_modules/@expo/config-plugins": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-6.0.2.tgz", + "integrity": "sha512-Cn01fXMHwjU042EgO9oO3Mna0o/UCrW91MQLMbJa4pXM41CYGjNgVy1EVXiuRRx/upegHhvltBw5D+JaUm8aZQ==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "@expo/config-types": "^48.0.0", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/expo-storage/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8.6.0" + "node": ">=10" } }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, + "node_modules/expo-storage/node_modules/@expo/config-types": { + "version": "48.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-48.0.0.tgz", + "integrity": "sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A==" + }, + "node_modules/expo-storage/node_modules/@expo/config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "bin": { - "fxparser": "src/cli/cli.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "node_modules/expo-storage/node_modules/@expo/dev-server": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.3.0.tgz", + "integrity": "sha512-2A6/8uZADSKAtzyR6YqhCBUFxb5DFmjxmFn0EHMqnPnsh13ZSiKEjrZPrRkM6Li2EHLYqHK2rmweJ7O/7q9pPQ==", "dependencies": { - "reusify": "^1.0.4" + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "~0.7.0", + "@expo/osascript": "2.0.33", + "@expo/spawn-async": "^1.5.0", + "body-parser": "^1.20.1", + "chalk": "^4.0.0", + "connect": "^3.7.0", + "fs-extra": "9.0.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", + "node-fetch": "^2.6.0", + "open": "^8.3.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/expo-storage/node_modules/@expo/dev-server/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", "dependencies": { - "bser": "2.1.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fbemitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", - "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", - "dependencies": { - "fbjs": "^3.0.0" + "node_modules/expo-storage/node_modules/@expo/dev-server/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "node_modules/expo-storage/node_modules/@expo/json-file": { + "version": "8.2.37", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", + "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "node_modules/fetch-retry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", - "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" + "node_modules/expo-storage/node_modules/@expo/metro-config": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.7.1.tgz", + "integrity": "sha512-vGWU62Zp5pRGw5IEHDNdqvsy62/hu/Na7bswePYVjoaItOjJY7+qilFeF0AAK+3V8qAM8fpltH3ByylKfWaA7A==", + "dependencies": { + "@expo/config": "~8.0.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/expo-storage/node_modules/@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", "dependencies": { - "to-regex-range": "^5.0.1" + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/expo-storage/node_modules/@expo/package-manager": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.0.3.tgz", + "integrity": "sha512-NpdwcRar22gJDDug3GEb62Ka6vy+Yi//3zTdYhdkzwekY6qzg7+vZCeEKayFJjvbCjjOPNSrauNR4zD+WJmRIQ==", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "@expo/json-file": "^8.2.37", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.0.1.tgz", + "integrity": "sha512-WK3FDht1tdXZGCvtG5s7HSwzhsc7Tyu2DdqV9jVUsLtGD42oqUepk13mEWlU9LOTBgLsoEueKjoSK4EXOXFctw==", + "dependencies": { + "@expo/config": "~8.0.0", + "@expo/config-plugins": "~6.0.0", + "@expo/config-types": "^48.0.0", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "^8.2.37", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" + }, + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-storage/node_modules/babel-plugin-module-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", + "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", + "dependencies": { + "find-babel-config": "^1.2.0", + "glob": "^7.1.6", + "pkg-up": "^3.1.0", + "reselect": "^4.0.0", + "resolve": "^1.13.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/expo-storage/node_modules/babel-preset-expo": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.2.tgz", + "integrity": "sha512-BjyvjwjJG0MaaDBLP/esbXRrAItM76po9L9zfnLxeqgFsHCIPmD+6ir45coDLGAXwR8m9It3G1yqYM9JPyemsQ==", + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.20.0", + "babel-plugin-module-resolver": "^4.1.0", + "babel-plugin-react-native-web": "~0.18.10", + "metro-react-native-babel-preset": "0.73.9" + } + }, + "node_modules/expo-storage/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-storage/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-storage/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expo-storage/node_modules/expo": { + "version": "48.0.21", + "resolved": "https://registry.npmjs.org/expo/-/expo-48.0.21.tgz", + "integrity": "sha512-Z211SC4wZP4Xd5/RBJhEw4uwSgpfzAvMh6IVdzwEVAJAcV1s48CACcSmIUe+7QJjEPzmb3T5Yo4EJ/JJXJ2o9A==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.7.3", + "@expo/config": "8.0.5", + "@expo/config-plugins": "6.0.2", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.3.2", + "cross-spawn": "^6.0.5", + "expo-application": "~5.1.1", + "expo-asset": "~8.9.1", + "expo-constants": "~14.2.1", + "expo-file-system": "~15.2.2", + "expo-font": "~11.1.1", + "expo-keep-awake": "~12.0.1", + "expo-modules-autolinking": "1.2.0", + "expo-modules-core": "1.2.7", + "fbemitter": "^3.0.0", + "getenv": "^1.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "node-fetch": "^2.6.7", + "pretty-format": "^26.5.2", + "uuid": "^3.4.0" + }, + "bin": { + "expo": "bin/cli.js" + } + }, + "node_modules/expo-storage/node_modules/expo-application": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.1.1.tgz", + "integrity": "sha512-aDatTcTTCdTbHw8h4/Tq2ilc6InM5ntF9xWCJdOcnUEcglxxGphVI/lzJKBaBF6mJECA8mEOjpVg2EGxOctTwg==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-asset": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.9.2.tgz", + "integrity": "sha512-aHMaZkIG5/UoguINEHm2ln/KviU2m/yuryslnhCKR3KXRxiLnMhxmrONLGbknuNE0O1iCaprrl1w3y71u01Rpw==", + "dependencies": { + "blueimp-md5": "^2.10.0", + "expo-constants": "~14.3.0", + "expo-file-system": "~15.3.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" + } + }, + "node_modules/expo-storage/node_modules/expo-asset/node_modules/expo-constants": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.3.0.tgz", + "integrity": "sha512-O8b+mZlPXZGH4wLLd+jMihGD0ZSMJRSmSsmcG7T60jHU3Dw4yDIuzHM/wMoBoL1pxLIbEwvcwDj0w8c+Sn+1sQ==", + "dependencies": { + "@expo/config": "~8.0.0", + "uuid": "^3.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-asset/node_modules/expo-file-system": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.3.0.tgz", + "integrity": "sha512-YUvNZzZJlF5TZM+FoRW9biJPB7qEgZbGYm8xJpqnxpj70FkFhwwoKiXVduZk+KVNiIs7d0q7e+Jdvmcr+Id3FQ==", + "dependencies": { + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-constants": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.2.1.tgz", + "integrity": "sha512-DD5u4QmBds2U7uYo409apV7nX+XjudARcgqe7S9aRFJ/6kyftmuxvk1DpaU4X42Av8z/tfKwEpuxl+vl7HHx/Q==", + "dependencies": { + "@expo/config": "~8.0.0", + "uuid": "^3.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-file-system": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.2.2.tgz", + "integrity": "sha512-LFkOLcWwlmnjkURxZ3/0ukS35OswX8iuQknLHRHeyk8mUA8fpRPPelD/a1lS+yclqfqavMJmTXVKM1Nsq5XVMA==", + "dependencies": { + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-font": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.1.1.tgz", + "integrity": "sha512-X+aICqYY69hiiDDtcNrjq8KutHrH2TrHuMqk0Rfq0P7hF6hMd+YefwLBNkvIrqrgmTAuqiLjMUwj2rHLqmgluw==", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-keep-awake": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.0.1.tgz", + "integrity": "sha512-hqeCnb4033TyuZaXs93zTK7rjVJ3bywXATyMmKmKkLEsH2PKBAl/VmjlCOPQL/2Ncqz6aj7Wo//tjeJTARBD4g==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-autolinking": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.2.0.tgz", + "integrity": "sha512-QOPh/iXykNDCAzUual1imSrn2aDakzCGUp2QmxVREr0llajXygroUWlT9sQXh1zKzbNp+a+i/xK375ZeBFiNJA==", + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-autolinking/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-core": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.2.7.tgz", + "integrity": "sha512-sulqn2M8+tIdxi6QFkKppDEzbePAscgE2LEHocYoQOgHxJpeT7axE0Hkzc+81EeviQilZzGeFZMtNMGh3c9yJg==", + "dependencies": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, + "node_modules/expo-storage/node_modules/find-babel-config": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.2.tgz", + "integrity": "sha512-oK59njMyw2y3yxto1BCfVK7MQp/OYf4FleHu0RgosH3riFJ1aOuo/7naLDLAObfrgn3ueFhw5sAT/cp0QuJI3Q==", + "dependencies": { + "json5": "^1.0.2", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/expo-storage/node_modules/find-babel-config/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/expo-storage/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-storage/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-storage/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/expo-storage/node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/metro-react-native-babel-preset": { + "version": "0.73.9", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.9.tgz", + "integrity": "sha512-AoD7v132iYDV4K78yN2OLgTPwtAKn0XlD2pOhzyBxiI8PeXzozhbKyPV7zUOJUPETj+pcEVfuYj5ZN/8+bhbCw==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/expo-storage/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/expo-storage/node_modules/react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo-storage/node_modules/sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" + }, + "node_modules/expo-storage/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-storage/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/expo-storage/node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/expo-storage/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/expo-system-ui": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-2.9.3.tgz", + "integrity": "sha512-RNFNBLJ9lhnjOGrHhtfDc15Ry/lF+SA4kwulmHzYGqaTeYvsL9q0K0+m9qmxuDdrbKJkuurvzvjVylDNnKNFVg==", + "dependencies": { + "@react-native/normalize-color": "^2.0.0", + "debug": "^4.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/fast-base64-decode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" @@ -9424,6 +10149,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", diff --git a/react-native/ModeratedChat/package.json b/react-native/ModeratedChat/package.json index 469a3bd..34de137 100644 --- a/react-native/ModeratedChat/package.json +++ b/react-native/ModeratedChat/package.json @@ -10,7 +10,7 @@ "ts:check": "tsc" }, "dependencies": { - "@gomomento/sdk-web": "^1.66.0", + "@gomomento/sdk-web": "^1.102.0", "@react-native/metro-config": "^0.73.5", "@types/react": "~18.2.14", "base-64": "^1.0.0", @@ -20,7 +20,7 @@ "expo-image-picker": "~14.3.2", "expo-splash-screen": "~0.20.5", "expo-status-bar": "~1.6.0", - "expo-storage": "^51.0.8", + "expo-storage": "^48.1.0", "expo-system-ui": "^2.9.3", "react": "18.2.0", "react-native": "0.72.10",