Live video on the AT Protocol

app: firebase push notifications

See merge request aquareum-tv/aquareum!19

+2046 -358
+2 -1
Makefile
··· 34 34 35 35 .PHONY: android 36 36 android: app 37 - cd ./js/app/android \ 37 + export NODE_ENV=production \ 38 + && cd ./js/app/android \ 38 39 && ./gradlew build \ 39 40 && cd - \ 40 41 && mv ./js/app/android/app/build/outputs/apk/release/app-release.apk ./bin/aquareum-$(VERSION)-android-release.apk \
+7
go.mod
··· 8 8 github.com/lmittmann/tint v1.0.4 9 9 github.com/orandin/slog-gorm v1.3.2 10 10 github.com/peterbourgon/ff/v3 v3.3.1 11 + github.com/samber/slog-http v1.4.0 11 12 github.com/stretchr/testify v1.9.0 12 13 golang.org/x/sync v0.6.0 13 14 gorm.io/driver/sqlite v1.5.5 ··· 27 28 github.com/pmezard/go-difflib v1.0.0 // indirect 28 29 gopkg.in/yaml.v3 v3.0.1 // indirect 29 30 ) 31 + 32 + require ( 33 + github.com/google/uuid v1.6.0 // indirect 34 + go.opentelemetry.io/otel v1.19.0 // indirect 35 + go.opentelemetry.io/otel/trace v1.19.0 // indirect 36 + )
+8
go.sum
··· 7 7 github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= 8 8 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 9 9 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 10 + github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= 11 + github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 10 12 github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= 11 13 github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= 12 14 github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= ··· 23 25 github.com/peterbourgon/ff/v3 v3.3.1/go.mod h1:zjJVUhx+twciwfDl0zBcFzl4dW8axCRyXE/eKY9RztQ= 24 26 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 25 27 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 28 + github.com/samber/slog-http v1.4.0 h1:s2hSzMlQBFDIPTUBDm6G+SGfv7F4xR9q8edjxtY6aho= 29 + github.com/samber/slog-http v1.4.0/go.mod h1:n6h4x2ZBeTgLqMKf95EuNlU6mcJF1b/RVLxo1od5+V0= 26 30 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 27 31 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 28 32 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 29 33 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 34 + go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= 35 + go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= 36 + go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= 37 + go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= 30 38 golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= 31 39 golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 32 40 golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+25
hack/push.mjs
··· 1 + import admin from "firebase-admin"; 2 + import fs from "fs"; 3 + 4 + const serviceAccount = JSON.parse( 5 + fs.readFileSync(`${process.env.AQKEYS}/firebase-admin.json`, "utf8"), 6 + ); 7 + 8 + admin.initializeApp({ 9 + credential: admin.credential.cert(serviceAccount), 10 + }); 11 + 12 + (async () => { 13 + const res = await admin.messaging().sendMulticast({ 14 + tokens: process.argv.slice(2), 15 + notification: { 16 + title: "Basic Notification", 17 + body: "This is a basic notification sent from the server!", 18 + // imageUrl: "https://my-cdn.com/app-logo.png", 19 + }, 20 + android: { 21 + priority: "high", 22 + }, 23 + }); 24 + console.log(JSON.stringify(res)); 25 + })();
+2
js/app/.env.development
··· 1 + EXPO_PUBLIC_AQUAREUM_URL=http://localhost:8080 2 + EXPO_USE_METRO_WORKSPACE_ROOT=1
+2
js/app/.env.production
··· 1 + EXPO_PUBLIC_AQUAREUM_URL=https://aquareum.tv 2 + EXPO_USE_METRO_WORKSPACE_ROOT=0
+1
js/app/.gitignore
··· 53 53 54 54 tamagui-web.css 55 55 android/app/src/main/assets 56 + ios/Aquareum.xcworkspace/xcshareddata
+30
js/app/GoogleService-Info.plist
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 + <plist version="1.0"> 4 + <dict> 5 + <key>API_KEY</key> 6 + <string>AIzaSyACfGDkEbxUnr_vsltGvZNIAyoUy5U4K6w</string> 7 + <key>GCM_SENDER_ID</key> 8 + <string>881925734448</string> 9 + <key>PLIST_VERSION</key> 10 + <string>1</string> 11 + <key>BUNDLE_ID</key> 12 + <string>tv.aquareum</string> 13 + <key>PROJECT_ID</key> 14 + <string>aquareum-tv</string> 15 + <key>STORAGE_BUCKET</key> 16 + <string>aquareum-tv.appspot.com</string> 17 + <key>IS_ADS_ENABLED</key> 18 + <false></false> 19 + <key>IS_ANALYTICS_ENABLED</key> 20 + <false></false> 21 + <key>IS_APPINVITE_ENABLED</key> 22 + <true></true> 23 + <key>IS_GCM_ENABLED</key> 24 + <true></true> 25 + <key>IS_SIGNIN_ENABLED</key> 26 + <true></true> 27 + <key>GOOGLE_APP_ID</key> 28 + <string>1:881925734448:ios:7c0a7b43219f309e40edf5</string> 29 + </dict> 30 + </plist>
+2
js/app/android/app/build.gradle
··· 170 170 171 171 apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 172 172 applyNativeModulesAppBuildGradle(project) 173 + 174 + apply plugin: 'com.google.gms.google-services'
+29
js/app/android/app/google-services.json
··· 1 + { 2 + "project_info": { 3 + "project_number": "881925734448", 4 + "project_id": "aquareum-tv", 5 + "storage_bucket": "aquareum-tv.appspot.com" 6 + }, 7 + "client": [ 8 + { 9 + "client_info": { 10 + "mobilesdk_app_id": "1:881925734448:android:07710b8baa75c6dd40edf5", 11 + "android_client_info": { 12 + "package_name": "tv.aquareum" 13 + } 14 + }, 15 + "oauth_client": [], 16 + "api_key": [ 17 + { 18 + "current_key": "AIzaSyAR7VBxreSy2UlSBSd8kRQC9kMHdXg3mgA" 19 + } 20 + ], 21 + "services": { 22 + "appinvite_service": { 23 + "other_platform_oauth_client": [] 24 + } 25 + } 26 + } 27 + ], 28 + "configuration_version": "1" 29 + }
+3 -1
js/app/android/app/src/main/AndroidManifest.xml
··· 1 - <manifest xmlns:android="http://schemas.android.com/apk/res/android"> 1 + <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> 2 2 <uses-permission android:name="android.permission.INTERNET"/> 3 + <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> 3 4 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 5 + <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> 4 6 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 5 7 <uses-permission android:name="android.permission.VIBRATE"/> 6 8 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+1 -1
js/app/android/app/src/main/res/values/styles.xml
··· 4 4 <item name="android:editTextStyle">@style/ResetEditText</item> 5 5 <item name="android:editTextBackground">@drawable/rn_edit_text_material</item> 6 6 <item name="colorPrimary">@color/colorPrimary</item> 7 - <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 7 + <item name="android:statusBarColor">#ffffff</item> 8 8 </style> 9 9 <style name="ResetEditText" parent="@android:style/Widget.EditText"> 10 10 <item name="android:padding">0dp</item>
+1
js/app/android/build.gradle
··· 15 15 mavenCentral() 16 16 } 17 17 dependencies { 18 + classpath 'com.google.gms:google-services:4.4.1' 18 19 classpath('com.android.tools.build:gradle') 19 20 classpath('com.facebook.react:react-native-gradle-plugin') 20 21 classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
+2
js/app/android/gradle.properties
··· 54 54 55 55 # Use legacy packaging to compress native libraries in the resulting APK. 56 56 expo.useLegacyPackaging=false 57 + 58 + android.extraMavenRepos=[] 57 59 networkTimeout=100000
+21 -2
js/app/app.json
··· 16 16 "assetBundlePatterns": ["**/*"], 17 17 "ios": { 18 18 "supportsTablet": true, 19 - "bundleIdentifier": "tv.aquareum" 19 + "bundleIdentifier": "tv.aquareum", 20 + "googleServicesFile": "./GoogleService-Info.plist", 21 + "entitlements": { 22 + "aps-environment": "production" 23 + } 20 24 }, 21 25 "android": { 22 26 "adaptiveIcon": { 23 27 "foregroundImage": "./assets/images/adaptive-icon.png", 24 28 "backgroundColor": "#ffffff" 25 29 }, 26 - "package": "tv.aquareum" 30 + "package": "tv.aquareum", 31 + "googleServicesFile": "./google-services.json", 32 + "permissions": [ 33 + "android.permission.SCHEDULE_EXACT_ALARM", 34 + "android.permission.POST_NOTIFICATIONS" 35 + ] 27 36 }, 28 37 "web": { 29 38 "bundler": "metro", ··· 61 70 "assets/fonts/FiraSans-ThinItalic.ttf", 62 71 "assets/fonts/SpaceMono-Regular.ttf" 63 72 ] 73 + } 74 + ], 75 + "@react-native-firebase/app", 76 + "@react-native-firebase/messaging", 77 + [ 78 + "expo-build-properties", 79 + { 80 + "ios": { 81 + "useFrameworks": "static" 82 + } 64 83 } 65 84 ] 66 85 ],
+5
js/app/app/_layout.tsx
··· 1 + import background from "./background"; 1 2 import "../tamagui-web.css"; 2 3 import { Link } from "expo-router"; 3 4 import { Anchor, Button, useTheme, Text, styled, isWeb } from "tamagui"; ··· 54 55 55 56 function RootLayoutNav() { 56 57 const colorScheme = useColorScheme(); 58 + 59 + useEffect(() => { 60 + background(); 61 + }, []); 57 62 58 63 return ( 59 64 <Provider>
+7
js/app/app/background.tsx
··· 1 + // earliest part of aquareum's entrypoint. set up message notifications and stuff. 2 + // index.js 3 + import { initPushNotifications } from "./platform"; 4 + 5 + export default async function background() { 6 + await initPushNotifications(); 7 + }
js/app/app/layout.tsx

This is a binary file and will not be displayed.

+1
js/app/app/platform/index.tsx
··· 1 + export * from "./platform";
+1
js/app/app/platform/platform.android.tsx
··· 1 + export * from "./platform.mobile";
+1
js/app/app/platform/platform.ios.tsx
··· 1 + export * from "./platform.mobile";
+91
js/app/app/platform/platform.mobile.tsx
··· 1 + import messaging from "@react-native-firebase/messaging"; 2 + import { PermissionsAndroid, Platform } from "react-native"; 3 + 4 + const checkApplicationPermission = async () => { 5 + if (Platform.OS === "android") { 6 + try { 7 + await PermissionsAndroid.request( 8 + PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, 9 + ); 10 + } catch (error) { 11 + console.log("error getting notifications ", error); 12 + } 13 + } 14 + }; 15 + 16 + export async function initPushNotifications() { 17 + try { 18 + const x = messaging(); 19 + messaging().setBackgroundMessageHandler(async (remoteMessage) => { 20 + console.log("Message handled in the background!", remoteMessage); 21 + }); 22 + await checkApplicationPermission(); 23 + const authorizationStatus = await x.requestPermission(); 24 + 25 + let perms = ""; 26 + 27 + if (authorizationStatus === messaging.AuthorizationStatus.AUTHORIZED) { 28 + console.log("User has notification permissions enabled."); 29 + perms += "authorized"; 30 + } else if ( 31 + authorizationStatus === messaging.AuthorizationStatus.PROVISIONAL 32 + ) { 33 + console.log("User has provisional notification permissions."); 34 + perms += "provisional"; 35 + } else { 36 + console.log("User has notification permissions disabled"); 37 + perms += "disabled"; 38 + } 39 + 40 + (async () => { 41 + if (typeof process.env.EXPO_PUBLIC_AQUAREUM_URL !== "string") { 42 + console.log("process.env.EXPO_PUBLIC_AQUAREUM_URL undefined!"); 43 + return; 44 + } 45 + try { 46 + const token = await x.getToken(); 47 + const res = await fetch( 48 + `${process.env.EXPO_PUBLIC_AQUAREUM_URL}/api/notification`, 49 + { 50 + method: "POST", 51 + headers: { 52 + "content-type": "application/json", 53 + }, 54 + body: JSON.stringify({ token }), 55 + }, 56 + ); 57 + console.log({ status: res.status }); 58 + } catch (e) { 59 + console.log(e); 60 + } 61 + })(); 62 + // Register background handler 63 + 64 + messaging() 65 + .subscribeToTopic("live") 66 + .then(() => console.log("Subscribed to live!")); 67 + 68 + messaging().onMessage((remoteMessage) => { 69 + console.log("Foreground message:", remoteMessage); 70 + // Display the notification to the user 71 + }); 72 + messaging().onNotificationOpenedApp((remoteMessage) => { 73 + console.log( 74 + "App opened by notification while in foreground:", 75 + remoteMessage, 76 + ); 77 + // Handle notification interaction when the app is in the foreground 78 + }); 79 + messaging() 80 + .getInitialNotification() 81 + .then((remoteMessage) => { 82 + console.log( 83 + "App opened by notification from closed state:", 84 + remoteMessage, 85 + ); 86 + // Handle notification interaction when the app is opened from a closed state 87 + }); 88 + } catch (e) { 89 + console.log(e); 90 + } 91 + }
+1
js/app/app/platform/platform.tsx
··· 1 + export * from "./platform.mobile";
+3
js/app/app/platform/platform.web.tsx
··· 1 + export async function initPushNotifications() { 2 + // console.log("webby webby web"); 3 + }
js/app/assets/sound/bubble.wav

This is a binary file and will not be displayed.

+29
js/app/google-services.json
··· 1 + { 2 + "project_info": { 3 + "project_number": "881925734448", 4 + "project_id": "aquareum-tv", 5 + "storage_bucket": "aquareum-tv.appspot.com" 6 + }, 7 + "client": [ 8 + { 9 + "client_info": { 10 + "mobilesdk_app_id": "1:881925734448:android:07710b8baa75c6dd40edf5", 11 + "android_client_info": { 12 + "package_name": "tv.aquareum" 13 + } 14 + }, 15 + "oauth_client": [], 16 + "api_key": [ 17 + { 18 + "current_key": "AIzaSyAR7VBxreSy2UlSBSd8kRQC9kMHdXg3mgA" 19 + } 20 + ], 21 + "services": { 22 + "appinvite_service": { 23 + "other_platform_oauth_client": [] 24 + } 25 + } 26 + } 27 + ], 28 + "configuration_version": "1" 29 + }
+222 -155
js/app/ios/Aquareum.xcodeproj/project.pbxproj
··· 3 3 archiveVersion = 1; 4 4 classes = { 5 5 }; 6 - objectVersion = 46; 6 + objectVersion = 54; 7 7 objects = { 8 8 9 9 /* Begin PBXBuildFile section */ 10 - 1223BB9CA80A4CF9AA523C79 /* FiraSans-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8A3F02C70B0042EB9DB6F384 /* FiraSans-Medium.ttf */; }; 11 10 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 12 11 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13 12 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 14 - 19A6B7F1DFD247BEA7D99477 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E3BD437B104282AB8CFA88 /* noop-file.swift */; }; 15 - 1D524688C2E04130BB16C25A /* FiraCode-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4DDAFD10A02B4350B717C422 /* FiraCode-Regular.ttf */; }; 16 - 24301747F8084A3EAE22F7B0 /* FiraSans-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AC8879FFCB9C437AACFBE766 /* FiraSans-BlackItalic.ttf */; }; 17 - 29E2FB5BF7884564962487A1 /* FiraCode-Retina.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DC2121A764094817AF1D4B45 /* FiraCode-Retina.ttf */; }; 18 - 2A759EA5B53B455EA661F303 /* FiraSans-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FBA7759DAF064E0E8E440D2C /* FiraSans-Thin.ttf */; }; 19 - 37717F461C064DC6BEA8F649 /* FiraSans-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6E7038DC929B42AA95189066 /* FiraSans-ExtraLight.ttf */; }; 20 - 3C64C11ED733484FAEF1C340 /* FiraSans-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4352EFF977314D3F8C6CB5DB /* FiraSans-Regular.ttf */; }; 13 + 1C3ACCE767924EE98FF94D71 /* FiraSans-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A3632A32AEB74786BF8D14B4 /* FiraSans-Bold.ttf */; }; 14 + 2387FFF9E6E94A76A2E03869 /* FiraSans-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6D37E47E6E9D420293BF08C9 /* FiraSans-BoldItalic.ttf */; }; 15 + 2438B1D3F8B143568ACE4D93 /* FiraCode-Retina.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5AA3E3C6ED7849859E8EA647 /* FiraCode-Retina.ttf */; }; 16 + 3A60E620515A4CF491ED4E19 /* FiraSans-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 535C6B2C791448D8BAA9D230 /* FiraSans-SemiBold.ttf */; }; 21 17 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 22 - 456602DD9DA14D4A97682E33 /* FiraSans-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 62C74455F4A54E01BBE06FED /* FiraSans-ExtraBoldItalic.ttf */; }; 23 - 4855AA8553454F93A2F9A967 /* FiraSans-ExtraBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DE4551E60AA2444B95C05DC1 /* FiraSans-ExtraBold.ttf */; }; 24 - 4B7CCD158F594F61AB1429DE /* FiraSans-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8002A4327EE842ECBFBEFBF0 /* FiraSans-ExtraLightItalic.ttf */; }; 25 - 64464F07C2DF8860F472F679 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3B26AFBEF1E6F4763053AD1B /* PrivacyInfo.xcprivacy */; }; 26 - 69C452AAAC054CA8B944DEE1 /* FiraSans-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 16F686CF3775450DB1750EC4 /* FiraSans-SemiBoldItalic.ttf */; }; 27 - 915B748A89A147DB98B34E2E /* FiraSans-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 952CC5E4A00D434DB6813545 /* FiraSans-Italic.ttf */; }; 28 - 96905EF65AED1B983A6B3ABC /* libPods-Aquareum.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Aquareum.a */; }; 29 - 9A713922D3414A7BA672B7A4 /* FiraSans-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A857B70C7BBA476A94E2CC85 /* FiraSans-BoldItalic.ttf */; }; 30 - B0B3C3C5308F48C99E8E63A2 /* SpaceMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 124FA93269174E1E81675069 /* SpaceMono-Regular.ttf */; }; 18 + 3E697487A7FD4B078A9A9A9B /* FiraSans-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FE112FB6190043798CBBBA6E /* FiraSans-BlackItalic.ttf */; }; 19 + 4238A598BCEC4618ADAC009C /* FiraSans-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 996FACC367484BD689A2F29F /* FiraSans-SemiBoldItalic.ttf */; }; 20 + 4417AAE84A874A16A4FFE748 /* FiraSans-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C8D35CC98980457C93D1DCC5 /* FiraSans-ExtraLightItalic.ttf */; }; 21 + 4868CF9369464DF08FEBCA04 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 312F2460C9864CECA4914369 /* noop-file.swift */; }; 22 + 4A60092C134C44CF84D2C361 /* FiraSans-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C958DB5F5539407FA3C986D9 /* FiraSans-Regular.ttf */; }; 23 + 610D113366B54830A3EC443C /* FiraSans-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7428389E93944D3EA41A3DA2 /* FiraSans-MediumItalic.ttf */; }; 24 + 6340BA88423F4D0B817C87CC /* FiraSans-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A07D5820B2E14BBE8DCB5BF1 /* FiraSans-ExtraBoldItalic.ttf */; }; 25 + 654338E9DB20BC4E0FF67692 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DD39772325822E0CA3CE0872 /* PrivacyInfo.xcprivacy */; }; 26 + 69637EB7E2EEA755E4C73899 /* Pods_Aquareum.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B92B9D3E71EC6D6BB0A9EC8 /* Pods_Aquareum.framework */; }; 27 + 6F8953D6ED6245C1AFC9D2DA /* FiraSans-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E345DA8E45A34512A8BA4148 /* FiraSans-ExtraLight.ttf */; }; 28 + 7025845B393348C28C5E50CA /* FiraCode-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0D41DBB330E04CF6BA47B858 /* FiraCode-Medium.ttf */; }; 29 + 7CE8603F3F8B4C2EAF6AAEB5 /* FiraSans-ExtraBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D6493A257CC480191DCF070 /* FiraSans-ExtraBold.ttf */; }; 30 + A9CB12DE1DE74A338B5883B3 /* FiraSans-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4FFFE5443BA847C2BC5FA43F /* FiraSans-Black.ttf */; }; 31 31 B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; 32 32 BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; 33 - BE9AC053EE134ACCAAA50D3A /* FiraSans-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C4D6E1B9BBC44349BD27878F /* FiraSans-ThinItalic.ttf */; }; 34 - C36DC00CA8A940678679555C /* FiraSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8DFC033BE97547DD9A03133A /* FiraSans-Light.ttf */; }; 35 - C5AE76393C0E49F29B5329DC /* FiraCode-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D319FD707A4647949135DF9B /* FiraCode-Light.ttf */; }; 36 - D67E36F04EAE48C2A0C8C553 /* FiraCode-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E501C5829A364FA5B40618B9 /* FiraCode-Bold.ttf */; }; 37 - DFDCF7FB6A5D4EB29DFE6A1C /* FiraSans-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A3E73B127DEB43439EFC3522 /* FiraSans-Bold.ttf */; }; 38 - E265E0B934034B839541B0F1 /* FiraSans-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CAF8037C11654AD7BD21972C /* FiraSans-LightItalic.ttf */; }; 39 - E7A5BB36A8C6459AAF97E681 /* FiraSans-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 28D8BF26FC1E40E88CA1DE9F /* FiraSans-SemiBold.ttf */; }; 40 - E7FF0F0F0EFA46F6B4FB52BD /* FiraCode-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 16EB254C78294DB3A27DCB20 /* FiraCode-Medium.ttf */; }; 41 - EA395EC13807464E975195BB /* FiraSans-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7543F0606DF9422E9FDDAA69 /* FiraSans-MediumItalic.ttf */; }; 42 - FFB2975417724685BA314B93 /* FiraSans-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1AA80ACE208A4771805E2B4D /* FiraSans-Black.ttf */; }; 33 + BC9B760C02D142B681996455 /* FiraSans-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 919E3935E26744DD91082DBA /* FiraSans-Italic.ttf */; }; 34 + C1D1A9E941FE42CAA96B7086 /* FiraSans-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 278CCCEC978B4706B6CB77B1 /* FiraSans-Thin.ttf */; }; 35 + C47558F9C1A5483494DA0765 /* SpaceMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6776931D83424A3DB2B5CFE2 /* SpaceMono-Regular.ttf */; }; 36 + D0568C3365B541B18563E607 /* FiraSans-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE593BA3C5D48FC82DF59F1 /* FiraSans-Medium.ttf */; }; 37 + D2C7E68140E6430E88AD6137 /* FiraCode-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FB14590539F844A4B79706A2 /* FiraCode-Light.ttf */; }; 38 + D32656B5DF2F4F0CBED70D21 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 09290AABA6C342F7A6770DE9 /* GoogleService-Info.plist */; }; 39 + D69BC96F626E460DA07790B5 /* FiraCode-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 35555B6176164410B752609D /* FiraCode-Regular.ttf */; }; 40 + D6F98B31C88D4A508EA519BB /* FiraSans-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ECEC7D33890E48D3A20A11AF /* FiraSans-LightItalic.ttf */; }; 41 + D9373E2769AC47A8BD770EC6 /* FiraSans-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 56045FC6C8E14B85AF950CBA /* FiraSans-ThinItalic.ttf */; }; 42 + E2322EE4181D46DEADAAE269 /* FiraCode-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B365A2BA07F1481486588E15 /* FiraCode-Bold.ttf */; }; 43 + F9B90B46838A41F1B12E6536 /* FiraSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 26B7EFD4EC454D6886B25A02 /* FiraSans-Light.ttf */; }; 43 44 /* End PBXBuildFile section */ 44 45 45 46 /* Begin PBXFileReference section */ 46 - 124FA93269174E1E81675069 /* SpaceMono-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "SpaceMono-Regular.ttf"; path = "../assets/fonts/SpaceMono-Regular.ttf"; sourceTree = "<group>"; }; 47 + 09290AABA6C342F7A6770DE9 /* GoogleService-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Aquareum/GoogleService-Info.plist"; sourceTree = "<group>"; }; 48 + 0D41DBB330E04CF6BA47B858 /* FiraCode-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Medium.ttf"; path = "../assets/fonts/FiraCode-Medium.ttf"; sourceTree = "<group>"; }; 47 49 13B07F961A680F5B00A75B9A /* Aquareum.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Aquareum.app; sourceTree = BUILT_PRODUCTS_DIR; }; 48 50 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Aquareum/AppDelegate.h; sourceTree = "<group>"; }; 49 51 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Aquareum/AppDelegate.mm; sourceTree = "<group>"; }; 50 52 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Aquareum/Images.xcassets; sourceTree = "<group>"; }; 51 53 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Aquareum/Info.plist; sourceTree = "<group>"; }; 52 54 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Aquareum/main.m; sourceTree = "<group>"; }; 53 - 16EB254C78294DB3A27DCB20 /* FiraCode-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Medium.ttf"; path = "../assets/fonts/FiraCode-Medium.ttf"; sourceTree = "<group>"; }; 54 - 16F686CF3775450DB1750EC4 /* FiraSans-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-SemiBoldItalic.ttf"; path = "../assets/fonts/FiraSans-SemiBoldItalic.ttf"; sourceTree = "<group>"; }; 55 - 1AA80ACE208A4771805E2B4D /* FiraSans-Black.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Black.ttf"; path = "../assets/fonts/FiraSans-Black.ttf"; sourceTree = "<group>"; }; 56 - 28D8BF26FC1E40E88CA1DE9F /* FiraSans-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-SemiBold.ttf"; path = "../assets/fonts/FiraSans-SemiBold.ttf"; sourceTree = "<group>"; }; 57 - 3B26AFBEF1E6F4763053AD1B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Aquareum/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; 58 - 4352EFF977314D3F8C6CB5DB /* FiraSans-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Regular.ttf"; path = "../assets/fonts/FiraSans-Regular.ttf"; sourceTree = "<group>"; }; 59 - 4DDAFD10A02B4350B717C422 /* FiraCode-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Regular.ttf"; path = "../assets/fonts/FiraCode-Regular.ttf"; sourceTree = "<group>"; }; 60 - 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Aquareum.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Aquareum.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 61 - 62C74455F4A54E01BBE06FED /* FiraSans-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraBoldItalic.ttf"; path = "../assets/fonts/FiraSans-ExtraBoldItalic.ttf"; sourceTree = "<group>"; }; 55 + 26B7EFD4EC454D6886B25A02 /* FiraSans-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Light.ttf"; path = "../assets/fonts/FiraSans-Light.ttf"; sourceTree = "<group>"; }; 56 + 278CCCEC978B4706B6CB77B1 /* FiraSans-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Thin.ttf"; path = "../assets/fonts/FiraSans-Thin.ttf"; sourceTree = "<group>"; }; 57 + 2B92B9D3E71EC6D6BB0A9EC8 /* Pods_Aquareum.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Aquareum.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 58 + 312F2460C9864CECA4914369 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "Aquareum/noop-file.swift"; sourceTree = "<group>"; }; 59 + 35555B6176164410B752609D /* FiraCode-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Regular.ttf"; path = "../assets/fonts/FiraCode-Regular.ttf"; sourceTree = "<group>"; }; 60 + 3D6493A257CC480191DCF070 /* FiraSans-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraBold.ttf"; path = "../assets/fonts/FiraSans-ExtraBold.ttf"; sourceTree = "<group>"; }; 61 + 4FFFE5443BA847C2BC5FA43F /* FiraSans-Black.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Black.ttf"; path = "../assets/fonts/FiraSans-Black.ttf"; sourceTree = "<group>"; }; 62 + 535C6B2C791448D8BAA9D230 /* FiraSans-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-SemiBold.ttf"; path = "../assets/fonts/FiraSans-SemiBold.ttf"; sourceTree = "<group>"; }; 63 + 56045FC6C8E14B85AF950CBA /* FiraSans-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ThinItalic.ttf"; path = "../assets/fonts/FiraSans-ThinItalic.ttf"; sourceTree = "<group>"; }; 64 + 5AA3E3C6ED7849859E8EA647 /* FiraCode-Retina.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Retina.ttf"; path = "../assets/fonts/FiraCode-Retina.ttf"; sourceTree = "<group>"; }; 65 + 6776931D83424A3DB2B5CFE2 /* SpaceMono-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "SpaceMono-Regular.ttf"; path = "../assets/fonts/SpaceMono-Regular.ttf"; sourceTree = "<group>"; }; 62 66 6C2E3173556A471DD304B334 /* Pods-Aquareum.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Aquareum.debug.xcconfig"; path = "Target Support Files/Pods-Aquareum/Pods-Aquareum.debug.xcconfig"; sourceTree = "<group>"; }; 63 - 6E7038DC929B42AA95189066 /* FiraSans-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraLight.ttf"; path = "../assets/fonts/FiraSans-ExtraLight.ttf"; sourceTree = "<group>"; }; 64 - 7543F0606DF9422E9FDDAA69 /* FiraSans-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-MediumItalic.ttf"; path = "../assets/fonts/FiraSans-MediumItalic.ttf"; sourceTree = "<group>"; }; 65 - 78E3BD437B104282AB8CFA88 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "Aquareum/noop-file.swift"; sourceTree = "<group>"; }; 67 + 6D37E47E6E9D420293BF08C9 /* FiraSans-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-BoldItalic.ttf"; path = "../assets/fonts/FiraSans-BoldItalic.ttf"; sourceTree = "<group>"; }; 68 + 7428389E93944D3EA41A3DA2 /* FiraSans-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-MediumItalic.ttf"; path = "../assets/fonts/FiraSans-MediumItalic.ttf"; sourceTree = "<group>"; }; 66 69 7A4D352CD337FB3A3BF06240 /* Pods-Aquareum.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Aquareum.release.xcconfig"; path = "Target Support Files/Pods-Aquareum/Pods-Aquareum.release.xcconfig"; sourceTree = "<group>"; }; 67 - 8002A4327EE842ECBFBEFBF0 /* FiraSans-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraLightItalic.ttf"; path = "../assets/fonts/FiraSans-ExtraLightItalic.ttf"; sourceTree = "<group>"; }; 68 - 8A3F02C70B0042EB9DB6F384 /* FiraSans-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Medium.ttf"; path = "../assets/fonts/FiraSans-Medium.ttf"; sourceTree = "<group>"; }; 69 - 8DFC033BE97547DD9A03133A /* FiraSans-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Light.ttf"; path = "../assets/fonts/FiraSans-Light.ttf"; sourceTree = "<group>"; }; 70 - 952CC5E4A00D434DB6813545 /* FiraSans-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Italic.ttf"; path = "../assets/fonts/FiraSans-Italic.ttf"; sourceTree = "<group>"; }; 71 - A3E73B127DEB43439EFC3522 /* FiraSans-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Bold.ttf"; path = "../assets/fonts/FiraSans-Bold.ttf"; sourceTree = "<group>"; }; 72 - A857B70C7BBA476A94E2CC85 /* FiraSans-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-BoldItalic.ttf"; path = "../assets/fonts/FiraSans-BoldItalic.ttf"; sourceTree = "<group>"; }; 70 + 7AE593BA3C5D48FC82DF59F1 /* FiraSans-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Medium.ttf"; path = "../assets/fonts/FiraSans-Medium.ttf"; sourceTree = "<group>"; }; 71 + 8F19A854317E4B7EA81EA111 /* Aquareum-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "Aquareum-Bridging-Header.h"; path = "Aquareum/Aquareum-Bridging-Header.h"; sourceTree = "<group>"; }; 72 + 919E3935E26744DD91082DBA /* FiraSans-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Italic.ttf"; path = "../assets/fonts/FiraSans-Italic.ttf"; sourceTree = "<group>"; }; 73 + 996FACC367484BD689A2F29F /* FiraSans-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-SemiBoldItalic.ttf"; path = "../assets/fonts/FiraSans-SemiBoldItalic.ttf"; sourceTree = "<group>"; }; 74 + A07D5820B2E14BBE8DCB5BF1 /* FiraSans-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraBoldItalic.ttf"; path = "../assets/fonts/FiraSans-ExtraBoldItalic.ttf"; sourceTree = "<group>"; }; 75 + A3632A32AEB74786BF8D14B4 /* FiraSans-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Bold.ttf"; path = "../assets/fonts/FiraSans-Bold.ttf"; sourceTree = "<group>"; }; 73 76 AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = Aquareum/SplashScreen.storyboard; sourceTree = "<group>"; }; 74 - AC8879FFCB9C437AACFBE766 /* FiraSans-BlackItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-BlackItalic.ttf"; path = "../assets/fonts/FiraSans-BlackItalic.ttf"; sourceTree = "<group>"; }; 77 + B365A2BA07F1481486588E15 /* FiraCode-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Bold.ttf"; path = "../assets/fonts/FiraCode-Bold.ttf"; sourceTree = "<group>"; }; 75 78 BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; }; 76 - C4D6E1B9BBC44349BD27878F /* FiraSans-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ThinItalic.ttf"; path = "../assets/fonts/FiraSans-ThinItalic.ttf"; sourceTree = "<group>"; }; 77 - CAF8037C11654AD7BD21972C /* FiraSans-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-LightItalic.ttf"; path = "../assets/fonts/FiraSans-LightItalic.ttf"; sourceTree = "<group>"; }; 78 - D319FD707A4647949135DF9B /* FiraCode-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Light.ttf"; path = "../assets/fonts/FiraCode-Light.ttf"; sourceTree = "<group>"; }; 79 - D60BD2649B13430E82077921 /* Aquareum-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "Aquareum-Bridging-Header.h"; path = "Aquareum/Aquareum-Bridging-Header.h"; sourceTree = "<group>"; }; 80 - DC2121A764094817AF1D4B45 /* FiraCode-Retina.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Retina.ttf"; path = "../assets/fonts/FiraCode-Retina.ttf"; sourceTree = "<group>"; }; 81 - DE4551E60AA2444B95C05DC1 /* FiraSans-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraBold.ttf"; path = "../assets/fonts/FiraSans-ExtraBold.ttf"; sourceTree = "<group>"; }; 82 - E501C5829A364FA5B40618B9 /* FiraCode-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Bold.ttf"; path = "../assets/fonts/FiraCode-Bold.ttf"; sourceTree = "<group>"; }; 79 + C8D35CC98980457C93D1DCC5 /* FiraSans-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraLightItalic.ttf"; path = "../assets/fonts/FiraSans-ExtraLightItalic.ttf"; sourceTree = "<group>"; }; 80 + C958DB5F5539407FA3C986D9 /* FiraSans-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Regular.ttf"; path = "../assets/fonts/FiraSans-Regular.ttf"; sourceTree = "<group>"; }; 81 + DD39772325822E0CA3CE0872 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Aquareum/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; 82 + E345DA8E45A34512A8BA4148 /* FiraSans-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-ExtraLight.ttf"; path = "../assets/fonts/FiraSans-ExtraLight.ttf"; sourceTree = "<group>"; }; 83 + ECEC7D33890E48D3A20A11AF /* FiraSans-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-LightItalic.ttf"; path = "../assets/fonts/FiraSans-LightItalic.ttf"; sourceTree = "<group>"; }; 83 84 ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 84 85 FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-Aquareum/ExpoModulesProvider.swift"; sourceTree = "<group>"; }; 85 - FBA7759DAF064E0E8E440D2C /* FiraSans-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Thin.ttf"; path = "../assets/fonts/FiraSans-Thin.ttf"; sourceTree = "<group>"; }; 86 + FB14590539F844A4B79706A2 /* FiraCode-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraCode-Light.ttf"; path = "../assets/fonts/FiraCode-Light.ttf"; sourceTree = "<group>"; }; 87 + FE112FB6190043798CBBBA6E /* FiraSans-BlackItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-BlackItalic.ttf"; path = "../assets/fonts/FiraSans-BlackItalic.ttf"; sourceTree = "<group>"; }; 86 88 /* End PBXFileReference section */ 87 89 88 90 /* Begin PBXFrameworksBuildPhase section */ ··· 90 92 isa = PBXFrameworksBuildPhase; 91 93 buildActionMask = 2147483647; 92 94 files = ( 93 - 96905EF65AED1B983A6B3ABC /* libPods-Aquareum.a in Frameworks */, 95 + 69637EB7E2EEA755E4C73899 /* Pods_Aquareum.framework in Frameworks */, 94 96 ); 95 97 runOnlyForDeploymentPostprocessing = 0; 96 98 }; ··· 107 109 13B07FB61A68108700A75B9A /* Info.plist */, 108 110 13B07FB71A68108700A75B9A /* main.m */, 109 111 AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, 110 - 78E3BD437B104282AB8CFA88 /* noop-file.swift */, 111 - D60BD2649B13430E82077921 /* Aquareum-Bridging-Header.h */, 112 - 3B26AFBEF1E6F4763053AD1B /* PrivacyInfo.xcprivacy */, 112 + 09290AABA6C342F7A6770DE9 /* GoogleService-Info.plist */, 113 + 312F2460C9864CECA4914369 /* noop-file.swift */, 114 + 8F19A854317E4B7EA81EA111 /* Aquareum-Bridging-Header.h */, 115 + DD39772325822E0CA3CE0872 /* PrivacyInfo.xcprivacy */, 113 116 ); 114 117 name = Aquareum; 115 118 sourceTree = "<group>"; ··· 118 121 isa = PBXGroup; 119 122 children = ( 120 123 ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 121 - 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Aquareum.a */, 124 + 2B92B9D3E71EC6D6BB0A9EC8 /* Pods_Aquareum.framework */, 122 125 ); 123 126 name = Frameworks; 124 127 sourceTree = "<group>"; ··· 139 142 2D16E6871FA4F8E400B85C8A /* Frameworks */, 140 143 D65327D7A22EEC0BE12398D9 /* Pods */, 141 144 D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, 142 - CE2A9C6B99474AA4996DF68D /* Resources */, 145 + FDEB3523E77E41CD9826EE22 /* Resources */, 143 146 ); 144 147 indentWidth = 2; 145 148 sourceTree = "<group>"; ··· 171 174 path = Aquareum/Supporting; 172 175 sourceTree = "<group>"; 173 176 }; 174 - CE2A9C6B99474AA4996DF68D /* Resources */ = { 175 - isa = PBXGroup; 176 - children = ( 177 - E501C5829A364FA5B40618B9 /* FiraCode-Bold.ttf */, 178 - D319FD707A4647949135DF9B /* FiraCode-Light.ttf */, 179 - 16EB254C78294DB3A27DCB20 /* FiraCode-Medium.ttf */, 180 - 4DDAFD10A02B4350B717C422 /* FiraCode-Regular.ttf */, 181 - DC2121A764094817AF1D4B45 /* FiraCode-Retina.ttf */, 182 - 1AA80ACE208A4771805E2B4D /* FiraSans-Black.ttf */, 183 - AC8879FFCB9C437AACFBE766 /* FiraSans-BlackItalic.ttf */, 184 - A3E73B127DEB43439EFC3522 /* FiraSans-Bold.ttf */, 185 - A857B70C7BBA476A94E2CC85 /* FiraSans-BoldItalic.ttf */, 186 - DE4551E60AA2444B95C05DC1 /* FiraSans-ExtraBold.ttf */, 187 - 62C74455F4A54E01BBE06FED /* FiraSans-ExtraBoldItalic.ttf */, 188 - 6E7038DC929B42AA95189066 /* FiraSans-ExtraLight.ttf */, 189 - 8002A4327EE842ECBFBEFBF0 /* FiraSans-ExtraLightItalic.ttf */, 190 - 952CC5E4A00D434DB6813545 /* FiraSans-Italic.ttf */, 191 - 8DFC033BE97547DD9A03133A /* FiraSans-Light.ttf */, 192 - CAF8037C11654AD7BD21972C /* FiraSans-LightItalic.ttf */, 193 - 8A3F02C70B0042EB9DB6F384 /* FiraSans-Medium.ttf */, 194 - 7543F0606DF9422E9FDDAA69 /* FiraSans-MediumItalic.ttf */, 195 - 4352EFF977314D3F8C6CB5DB /* FiraSans-Regular.ttf */, 196 - 28D8BF26FC1E40E88CA1DE9F /* FiraSans-SemiBold.ttf */, 197 - 16F686CF3775450DB1750EC4 /* FiraSans-SemiBoldItalic.ttf */, 198 - FBA7759DAF064E0E8E440D2C /* FiraSans-Thin.ttf */, 199 - C4D6E1B9BBC44349BD27878F /* FiraSans-ThinItalic.ttf */, 200 - 124FA93269174E1E81675069 /* SpaceMono-Regular.ttf */, 201 - ); 202 - name = Resources; 203 - path = ""; 204 - sourceTree = "<group>"; 205 - }; 206 177 D65327D7A22EEC0BE12398D9 /* Pods */ = { 207 178 isa = PBXGroup; 208 179 children = ( ··· 220 191 name = ExpoModulesProviders; 221 192 sourceTree = "<group>"; 222 193 }; 194 + FDEB3523E77E41CD9826EE22 /* Resources */ = { 195 + isa = PBXGroup; 196 + children = ( 197 + B365A2BA07F1481486588E15 /* FiraCode-Bold.ttf */, 198 + FB14590539F844A4B79706A2 /* FiraCode-Light.ttf */, 199 + 0D41DBB330E04CF6BA47B858 /* FiraCode-Medium.ttf */, 200 + 35555B6176164410B752609D /* FiraCode-Regular.ttf */, 201 + 5AA3E3C6ED7849859E8EA647 /* FiraCode-Retina.ttf */, 202 + 4FFFE5443BA847C2BC5FA43F /* FiraSans-Black.ttf */, 203 + FE112FB6190043798CBBBA6E /* FiraSans-BlackItalic.ttf */, 204 + A3632A32AEB74786BF8D14B4 /* FiraSans-Bold.ttf */, 205 + 6D37E47E6E9D420293BF08C9 /* FiraSans-BoldItalic.ttf */, 206 + 3D6493A257CC480191DCF070 /* FiraSans-ExtraBold.ttf */, 207 + A07D5820B2E14BBE8DCB5BF1 /* FiraSans-ExtraBoldItalic.ttf */, 208 + E345DA8E45A34512A8BA4148 /* FiraSans-ExtraLight.ttf */, 209 + C8D35CC98980457C93D1DCC5 /* FiraSans-ExtraLightItalic.ttf */, 210 + 919E3935E26744DD91082DBA /* FiraSans-Italic.ttf */, 211 + 26B7EFD4EC454D6886B25A02 /* FiraSans-Light.ttf */, 212 + ECEC7D33890E48D3A20A11AF /* FiraSans-LightItalic.ttf */, 213 + 7AE593BA3C5D48FC82DF59F1 /* FiraSans-Medium.ttf */, 214 + 7428389E93944D3EA41A3DA2 /* FiraSans-MediumItalic.ttf */, 215 + C958DB5F5539407FA3C986D9 /* FiraSans-Regular.ttf */, 216 + 535C6B2C791448D8BAA9D230 /* FiraSans-SemiBold.ttf */, 217 + 996FACC367484BD689A2F29F /* FiraSans-SemiBoldItalic.ttf */, 218 + 278CCCEC978B4706B6CB77B1 /* FiraSans-Thin.ttf */, 219 + 56045FC6C8E14B85AF950CBA /* FiraSans-ThinItalic.ttf */, 220 + 6776931D83424A3DB2B5CFE2 /* SpaceMono-Regular.ttf */, 221 + ); 222 + name = Resources; 223 + sourceTree = "<group>"; 224 + }; 223 225 /* End PBXGroup section */ 224 226 225 227 /* Begin PBXNativeTarget section */ ··· 228 230 buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Aquareum" */; 229 231 buildPhases = ( 230 232 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, 231 - 56AFA31CDC01F11DAC0F93AE /* [Expo] Configure project */, 233 + FD0749BEA3027A28CB391074 /* [Expo] Configure project */, 232 234 13B07F871A680F5B00A75B9A /* Sources */, 233 235 13B07F8C1A680F5B00A75B9A /* Frameworks */, 234 236 13B07F8E1A680F5B00A75B9A /* Resources */, 235 237 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 236 238 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, 237 - 81D38AA13696F1CE4D868043 /* [CP] Embed Pods Frameworks */, 239 + A0B62D4F985744C84BDC8673 /* [CP] Embed Pods Frameworks */, 240 + 61C08053EB1DF1CB36901038 /* [CP-User] [RNFB] Core Configuration */, 238 241 ); 239 242 buildRules = ( 240 243 ); ··· 255 258 TargetAttributes = { 256 259 13B07F861A680F5B00A75B9A = { 257 260 LastSwiftMigration = 1250; 258 - DevelopmentTeam = "DE965A5W74"; 259 - ProvisioningStyle = Automatic; 260 261 }; 261 262 }; 262 263 }; ··· 286 287 BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 287 288 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 288 289 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 289 - D67E36F04EAE48C2A0C8C553 /* FiraCode-Bold.ttf in Resources */, 290 - C5AE76393C0E49F29B5329DC /* FiraCode-Light.ttf in Resources */, 291 - E7FF0F0F0EFA46F6B4FB52BD /* FiraCode-Medium.ttf in Resources */, 292 - 1D524688C2E04130BB16C25A /* FiraCode-Regular.ttf in Resources */, 293 - 29E2FB5BF7884564962487A1 /* FiraCode-Retina.ttf in Resources */, 294 - FFB2975417724685BA314B93 /* FiraSans-Black.ttf in Resources */, 295 - 24301747F8084A3EAE22F7B0 /* FiraSans-BlackItalic.ttf in Resources */, 296 - DFDCF7FB6A5D4EB29DFE6A1C /* FiraSans-Bold.ttf in Resources */, 297 - 9A713922D3414A7BA672B7A4 /* FiraSans-BoldItalic.ttf in Resources */, 298 - 4855AA8553454F93A2F9A967 /* FiraSans-ExtraBold.ttf in Resources */, 299 - 456602DD9DA14D4A97682E33 /* FiraSans-ExtraBoldItalic.ttf in Resources */, 300 - 37717F461C064DC6BEA8F649 /* FiraSans-ExtraLight.ttf in Resources */, 301 - 4B7CCD158F594F61AB1429DE /* FiraSans-ExtraLightItalic.ttf in Resources */, 302 - 915B748A89A147DB98B34E2E /* FiraSans-Italic.ttf in Resources */, 303 - C36DC00CA8A940678679555C /* FiraSans-Light.ttf in Resources */, 304 - E265E0B934034B839541B0F1 /* FiraSans-LightItalic.ttf in Resources */, 305 - 1223BB9CA80A4CF9AA523C79 /* FiraSans-Medium.ttf in Resources */, 306 - EA395EC13807464E975195BB /* FiraSans-MediumItalic.ttf in Resources */, 307 - 3C64C11ED733484FAEF1C340 /* FiraSans-Regular.ttf in Resources */, 308 - E7A5BB36A8C6459AAF97E681 /* FiraSans-SemiBold.ttf in Resources */, 309 - 69C452AAAC054CA8B944DEE1 /* FiraSans-SemiBoldItalic.ttf in Resources */, 310 - 2A759EA5B53B455EA661F303 /* FiraSans-Thin.ttf in Resources */, 311 - BE9AC053EE134ACCAAA50D3A /* FiraSans-ThinItalic.ttf in Resources */, 312 - B0B3C3C5308F48C99E8E63A2 /* SpaceMono-Regular.ttf in Resources */, 313 - 64464F07C2DF8860F472F679 /* PrivacyInfo.xcprivacy in Resources */, 290 + D32656B5DF2F4F0CBED70D21 /* GoogleService-Info.plist in Resources */, 291 + E2322EE4181D46DEADAAE269 /* FiraCode-Bold.ttf in Resources */, 292 + D2C7E68140E6430E88AD6137 /* FiraCode-Light.ttf in Resources */, 293 + 7025845B393348C28C5E50CA /* FiraCode-Medium.ttf in Resources */, 294 + D69BC96F626E460DA07790B5 /* FiraCode-Regular.ttf in Resources */, 295 + 2438B1D3F8B143568ACE4D93 /* FiraCode-Retina.ttf in Resources */, 296 + A9CB12DE1DE74A338B5883B3 /* FiraSans-Black.ttf in Resources */, 297 + 3E697487A7FD4B078A9A9A9B /* FiraSans-BlackItalic.ttf in Resources */, 298 + 1C3ACCE767924EE98FF94D71 /* FiraSans-Bold.ttf in Resources */, 299 + 2387FFF9E6E94A76A2E03869 /* FiraSans-BoldItalic.ttf in Resources */, 300 + 7CE8603F3F8B4C2EAF6AAEB5 /* FiraSans-ExtraBold.ttf in Resources */, 301 + 6340BA88423F4D0B817C87CC /* FiraSans-ExtraBoldItalic.ttf in Resources */, 302 + 6F8953D6ED6245C1AFC9D2DA /* FiraSans-ExtraLight.ttf in Resources */, 303 + 4417AAE84A874A16A4FFE748 /* FiraSans-ExtraLightItalic.ttf in Resources */, 304 + BC9B760C02D142B681996455 /* FiraSans-Italic.ttf in Resources */, 305 + F9B90B46838A41F1B12E6536 /* FiraSans-Light.ttf in Resources */, 306 + D6F98B31C88D4A508EA519BB /* FiraSans-LightItalic.ttf in Resources */, 307 + D0568C3365B541B18563E607 /* FiraSans-Medium.ttf in Resources */, 308 + 610D113366B54830A3EC443C /* FiraSans-MediumItalic.ttf in Resources */, 309 + 4A60092C134C44CF84D2C361 /* FiraSans-Regular.ttf in Resources */, 310 + 3A60E620515A4CF491ED4E19 /* FiraSans-SemiBold.ttf in Resources */, 311 + 4238A598BCEC4618ADAC009C /* FiraSans-SemiBoldItalic.ttf in Resources */, 312 + C1D1A9E941FE42CAA96B7086 /* FiraSans-Thin.ttf in Resources */, 313 + D9373E2769AC47A8BD770EC6 /* FiraSans-ThinItalic.ttf in Resources */, 314 + C47558F9C1A5483494DA0765 /* SpaceMono-Regular.ttf in Resources */, 315 + 654338E9DB20BC4E0FF67692 /* PrivacyInfo.xcprivacy in Resources */, 314 316 ); 315 317 runOnlyForDeploymentPostprocessing = 0; 316 318 }; ··· 354 356 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 355 357 showEnvVarsInLog = 0; 356 358 }; 357 - 56AFA31CDC01F11DAC0F93AE /* [Expo] Configure project */ = { 359 + 61C08053EB1DF1CB36901038 /* [CP-User] [RNFB] Core Configuration */ = { 358 360 isa = PBXShellScriptBuildPhase; 359 - alwaysOutOfDate = 1; 360 361 buildActionMask = 2147483647; 361 362 files = ( 362 363 ); 363 - inputFileListPaths = ( 364 - ); 365 364 inputPaths = ( 366 - ); 367 - name = "[Expo] Configure project"; 368 - outputFileListPaths = ( 369 - ); 370 - outputPaths = ( 365 + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", 371 366 ); 367 + name = "[CP-User] [RNFB] Core Configuration"; 372 368 runOnlyForDeploymentPostprocessing = 0; 373 369 shellPath = /bin/sh; 374 - shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-Aquareum/expo-configure-project.sh\"\n"; 370 + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##########################################################################\n##########################################################################\n#\n# NOTE THAT IF YOU CHANGE THIS FILE YOU MUST RUN pod install AFTERWARDS\n#\n# This file is installed as an Xcode build script in the project file\n# by cocoapods, and you will not see your changes until you pod install\n#\n##########################################################################\n##########################################################################\n\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_analytics_storage\n _ANALYTICS_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_analytics_storage\")\n if [[ $_ANALYTICS_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_storage\n _ANALYTICS_AD_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_storage\")\n if [[ $_ANALYTICS_AD_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_user_data\n _ANALYTICS_AD_USER_DATA=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_user_data\")\n if [[ $_ANALYTICS_AD_USER_DATA ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_USER_DATA\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; 375 371 }; 376 372 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { 377 373 isa = PBXShellScriptBuildPhase; ··· 380 376 ); 381 377 inputPaths = ( 382 378 "${PODS_ROOT}/Target Support Files/Pods-Aquareum/Pods-Aquareum-resources.sh", 379 + "${PODS_CONFIGURATION_BUILD_DIR}/EXApplication/ExpoApplication_privacy.bundle", 383 380 "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", 384 381 "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", 382 + "${PODS_CONFIGURATION_BUILD_DIR}/EXNotifications/ExpoNotifications_privacy.bundle", 385 383 "${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle", 386 384 "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", 387 385 "${PODS_CONFIGURATION_BUILD_DIR}/ExpoSystemUI/ExpoSystemUI_privacy.bundle", 386 + "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore_Privacy.bundle", 387 + "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreExtension/FirebaseCoreExtension_Privacy.bundle", 388 + "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreInternal/FirebaseCoreInternal_Privacy.bundle", 389 + "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations_Privacy.bundle", 390 + "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseMessaging/FirebaseMessaging_Privacy.bundle", 391 + "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle", 392 + "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities_Privacy.bundle", 393 + "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", 388 394 "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/ReachabilitySwift.bundle", 389 395 "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", 396 + "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb_Privacy.bundle", 390 397 ); 391 398 name = "[CP] Copy Pods Resources"; 392 399 outputPaths = ( 400 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoApplication_privacy.bundle", 393 401 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", 394 402 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", 403 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoNotifications_privacy.bundle", 395 404 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle", 396 405 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", 397 406 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoSystemUI_privacy.bundle", 407 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseCore_Privacy.bundle", 408 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseCoreExtension_Privacy.bundle", 409 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseCoreInternal_Privacy.bundle", 410 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseInstallations_Privacy.bundle", 411 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseMessaging_Privacy.bundle", 412 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle", 413 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleUtilities_Privacy.bundle", 414 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", 398 415 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReachabilitySwift.bundle", 399 416 "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", 417 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nanopb_Privacy.bundle", 400 418 ); 401 419 runOnlyForDeploymentPostprocessing = 0; 402 420 shellPath = /bin/sh; 403 421 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Aquareum/Pods-Aquareum-resources.sh\"\n"; 404 422 showEnvVarsInLog = 0; 405 423 }; 406 - 81D38AA13696F1CE4D868043 /* [CP] Embed Pods Frameworks */ = { 424 + A0B62D4F985744C84BDC8673 /* [CP] Embed Pods Frameworks */ = { 407 425 isa = PBXShellScriptBuildPhase; 408 426 buildActionMask = 2147483647; 409 427 files = ( ··· 421 439 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Aquareum/Pods-Aquareum-frameworks.sh\"\n"; 422 440 showEnvVarsInLog = 0; 423 441 }; 442 + FD0749BEA3027A28CB391074 /* [Expo] Configure project */ = { 443 + isa = PBXShellScriptBuildPhase; 444 + alwaysOutOfDate = 1; 445 + buildActionMask = 2147483647; 446 + files = ( 447 + ); 448 + inputFileListPaths = ( 449 + ); 450 + inputPaths = ( 451 + ); 452 + name = "[Expo] Configure project"; 453 + outputFileListPaths = ( 454 + ); 455 + outputPaths = ( 456 + ); 457 + runOnlyForDeploymentPostprocessing = 0; 458 + shellPath = /bin/sh; 459 + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-Aquareum/expo-configure-project.sh\"\n"; 460 + }; 424 461 /* End PBXShellScriptBuildPhase section */ 425 462 426 463 /* Begin PBXSourcesBuildPhase section */ ··· 431 468 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 432 469 13B07FC11A68108700A75B9A /* main.m in Sources */, 433 470 B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, 434 - 19A6B7F1DFD247BEA7D99477 /* noop-file.swift in Sources */, 471 + 4868CF9369464DF08FEBCA04 /* noop-file.swift in Sources */, 435 472 ); 436 473 runOnlyForDeploymentPostprocessing = 0; 437 474 }; ··· 445 482 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 446 483 CLANG_ENABLE_MODULES = YES; 447 484 CODE_SIGN_ENTITLEMENTS = Aquareum/Aquareum.entitlements; 485 + CODE_SIGN_IDENTITY = "Apple Development"; 486 + CODE_SIGN_STYLE = Automatic; 448 487 CURRENT_PROJECT_VERSION = 1; 488 + DEVELOPMENT_TEAM = 4YQU59T698; 449 489 ENABLE_BITCODE = NO; 450 490 GCC_PREPROCESSOR_DEFINITIONS = ( 451 491 "$(inherited)", ··· 453 493 ); 454 494 INFOPLIST_FILE = Aquareum/Info.plist; 455 495 IPHONEOS_DEPLOYMENT_TARGET = 13.4; 456 - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 496 + LD_RUNPATH_SEARCH_PATHS = ( 497 + "$(inherited)", 498 + "@executable_path/Frameworks", 499 + ); 457 500 MARKETING_VERSION = 1.0; 458 501 OTHER_LDFLAGS = ( 459 502 "$(inherited)", ··· 462 505 ); 463 506 OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; 464 507 PRODUCT_BUNDLE_IDENTIFIER = tv.aquareum; 465 - PRODUCT_NAME = "Aquareum"; 508 + PRODUCT_NAME = Aquareum; 509 + PROVISIONING_PROFILE_SPECIFIER = ""; 466 510 SWIFT_OBJC_BRIDGING_HEADER = "Aquareum/Aquareum-Bridging-Header.h"; 467 511 SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 468 512 SWIFT_VERSION = 5.0; 469 513 TARGETED_DEVICE_FAMILY = "1,2"; 470 514 VERSIONING_SYSTEM = "apple-generic"; 471 - DEVELOPMENT_TEAM = "DE965A5W74"; 472 - CODE_SIGN_IDENTITY = "Apple Development"; 473 - CODE_SIGN_STYLE = Automatic; 474 515 }; 475 516 name = Debug; 476 517 }; ··· 481 522 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 482 523 CLANG_ENABLE_MODULES = YES; 483 524 CODE_SIGN_ENTITLEMENTS = Aquareum/Aquareum.entitlements; 525 + CODE_SIGN_IDENTITY = "Apple Development"; 526 + CODE_SIGN_STYLE = Automatic; 484 527 CURRENT_PROJECT_VERSION = 1; 528 + DEVELOPMENT_TEAM = 4YQU59T698; 485 529 INFOPLIST_FILE = Aquareum/Info.plist; 486 530 IPHONEOS_DEPLOYMENT_TARGET = 13.4; 487 - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 531 + LD_RUNPATH_SEARCH_PATHS = ( 532 + "$(inherited)", 533 + "@executable_path/Frameworks", 534 + ); 488 535 MARKETING_VERSION = 1.0; 489 536 OTHER_LDFLAGS = ( 490 537 "$(inherited)", ··· 493 540 ); 494 541 OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; 495 542 PRODUCT_BUNDLE_IDENTIFIER = tv.aquareum; 496 - PRODUCT_NAME = "Aquareum"; 543 + PRODUCT_NAME = Aquareum; 544 + PROVISIONING_PROFILE_SPECIFIER = ""; 497 545 SWIFT_OBJC_BRIDGING_HEADER = "Aquareum/Aquareum-Bridging-Header.h"; 498 546 SWIFT_VERSION = 5.0; 499 547 TARGETED_DEVICE_FAMILY = "1,2"; 500 548 VERSIONING_SYSTEM = "apple-generic"; 501 - DEVELOPMENT_TEAM = "DE965A5W74"; 502 - CODE_SIGN_IDENTITY = "Apple Development"; 503 - CODE_SIGN_STYLE = Automatic; 504 549 }; 505 550 name = Release; 506 551 }; ··· 553 598 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 554 599 GCC_WARN_UNUSED_FUNCTION = YES; 555 600 GCC_WARN_UNUSED_VARIABLE = YES; 601 + HEADER_SEARCH_PATHS = ( 602 + "$(inherited)", 603 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", 604 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", 605 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", 606 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", 607 + "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", 608 + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", 609 + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", 610 + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", 611 + ); 556 612 IPHONEOS_DEPLOYMENT_TARGET = 13.4; 557 613 LD = ""; 558 614 LDPLUSPLUS = ""; 559 - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 615 + LD_RUNPATH_SEARCH_PATHS = ( 616 + /usr/lib/swift, 617 + "$(inherited)", 618 + ); 560 619 LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 561 620 MTL_ENABLE_DEBUG_INFO = YES; 562 621 ONLY_ACTIVE_ARCH = YES; 563 - OTHER_LDFLAGS = ( 564 - "$(inherited)", 565 - " ", 566 - ); 622 + OTHER_LDFLAGS = "$(inherited) "; 567 623 REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native"; 568 624 SDKROOT = iphoneos; 569 625 USE_HERMES = true; ··· 612 668 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 613 669 GCC_WARN_UNUSED_FUNCTION = YES; 614 670 GCC_WARN_UNUSED_VARIABLE = YES; 671 + HEADER_SEARCH_PATHS = ( 672 + "$(inherited)", 673 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", 674 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", 675 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", 676 + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", 677 + "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", 678 + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", 679 + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", 680 + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", 681 + ); 615 682 IPHONEOS_DEPLOYMENT_TARGET = 13.4; 616 683 LD = ""; 617 684 LDPLUSPLUS = ""; 618 - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 619 - LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 620 - MTL_ENABLE_DEBUG_INFO = NO; 621 - OTHER_LDFLAGS = ( 685 + LD_RUNPATH_SEARCH_PATHS = ( 686 + /usr/lib/swift, 622 687 "$(inherited)", 623 - " ", 624 688 ); 689 + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 690 + MTL_ENABLE_DEBUG_INFO = NO; 691 + OTHER_LDFLAGS = "$(inherited) "; 625 692 REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native"; 626 693 SDKROOT = iphoneos; 627 694 USE_HERMES = true;
+4
js/app/ios/Aquareum/AppDelegate.mm
··· 1 1 #import "AppDelegate.h" 2 + #import <Firebase/Firebase.h> 2 3 3 4 #import <React/RCTBundleURLProvider.h> 4 5 #import <React/RCTLinkingManager.h> ··· 7 8 8 9 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 9 10 { 11 + // @generated begin @react-native-firebase/app-didFinishLaunchingWithOptions - expo prebuild (DO NOT MODIFY) sync-ecd111c37e49fdd1ed6354203cd6b1e2a38cccda 12 + [FIRApp configure]; 13 + // @generated end @react-native-firebase/app-didFinishLaunchingWithOptions 10 14 self.moduleName = @"main"; 11 15 12 16 // You can add your custom initial props in the dictionary below.
+4 -1
js/app/ios/Aquareum/Aquareum.entitlements
··· 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 3 <plist version="1.0"> 4 - <dict/> 4 + <dict> 5 + <key>aps-environment</key> 6 + <string>development</string> 7 + </dict> 5 8 </plist>
+30
js/app/ios/Aquareum/GoogleService-Info.plist
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 + <plist version="1.0"> 4 + <dict> 5 + <key>API_KEY</key> 6 + <string>AIzaSyACfGDkEbxUnr_vsltGvZNIAyoUy5U4K6w</string> 7 + <key>GCM_SENDER_ID</key> 8 + <string>881925734448</string> 9 + <key>PLIST_VERSION</key> 10 + <string>1</string> 11 + <key>BUNDLE_ID</key> 12 + <string>tv.aquareum</string> 13 + <key>PROJECT_ID</key> 14 + <string>aquareum-tv</string> 15 + <key>STORAGE_BUCKET</key> 16 + <string>aquareum-tv.appspot.com</string> 17 + <key>IS_ADS_ENABLED</key> 18 + <false></false> 19 + <key>IS_ANALYTICS_ENABLED</key> 20 + <false></false> 21 + <key>IS_APPINVITE_ENABLED</key> 22 + <true></true> 23 + <key>IS_GCM_ENABLED</key> 24 + <true></true> 25 + <key>IS_SIGNIN_ENABLED</key> 26 + <true></true> 27 + <key>GOOGLE_APP_ID</key> 28 + <string>1:881925734448:ios:7c0a7b43219f309e40edf5</string> 29 + </dict> 30 + </plist>
+101 -102
js/app/ios/Aquareum/Info.plist
··· 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 3 <plist version="1.0"> 4 - <dict> 5 - <key>CADisableMinimumFrameDurationOnPhone</key> 6 - <true/> 7 - <key>CFBundleDevelopmentRegion</key> 8 - <string>$(DEVELOPMENT_LANGUAGE)</string> 9 - <key>CFBundleDisplayName</key> 10 - <string>Aquareum</string> 11 - <key>CFBundleExecutable</key> 12 - <string>$(EXECUTABLE_NAME)</string> 13 - <key>CFBundleIdentifier</key> 14 - <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 15 - <key>CFBundleInfoDictionaryVersion</key> 16 - <string>6.0</string> 17 - <key>CFBundleName</key> 18 - <string>$(PRODUCT_NAME)</string> 19 - <key>CFBundlePackageType</key> 20 - <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> 21 - <key>CFBundleShortVersionString</key> 22 - <string>0.0.1</string> 23 - <key>CFBundleSignature</key> 24 - <string>????</string> 25 - <key>CFBundleURLTypes</key> 26 - <array> 27 - <dict> 28 - <key>CFBundleURLSchemes</key> 29 - <array> 30 - <string>myapp</string> 31 - <string>tv.aquareum</string> 32 - </array> 33 - </dict> 34 - </array> 35 - <key>CFBundleVersion</key> 36 - <string>1</string> 37 - <key>LSRequiresIPhoneOS</key> 38 - <true/> 39 - <key>NSAppTransportSecurity</key> 40 - <dict> 41 - <key>NSAllowsArbitraryLoads</key> 42 - <false/> 43 - <key>NSAllowsLocalNetworking</key> 44 - <true/> 45 - </dict> 46 - <key>NSUserActivityTypes</key> 47 - <array> 48 - <string>$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route</string> 49 - <string>$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route</string> 50 - </array> 51 - <key>UIAppFonts</key> 52 - <array> 53 - <string>FiraCode-Bold.ttf</string> 54 - <string>FiraCode-Light.ttf</string> 55 - <string>FiraCode-Medium.ttf</string> 56 - <string>FiraCode-Regular.ttf</string> 57 - <string>FiraCode-Retina.ttf</string> 58 - <string>FiraSans-Black.ttf</string> 59 - <string>FiraSans-BlackItalic.ttf</string> 60 - <string>FiraSans-Bold.ttf</string> 61 - <string>FiraSans-BoldItalic.ttf</string> 62 - <string>FiraSans-ExtraBold.ttf</string> 63 - <string>FiraSans-ExtraBoldItalic.ttf</string> 64 - <string>FiraSans-ExtraLight.ttf</string> 65 - <string>FiraSans-ExtraLightItalic.ttf</string> 66 - <string>FiraSans-Italic.ttf</string> 67 - <string>FiraSans-Light.ttf</string> 68 - <string>FiraSans-LightItalic.ttf</string> 69 - <string>FiraSans-Medium.ttf</string> 70 - <string>FiraSans-MediumItalic.ttf</string> 71 - <string>FiraSans-Regular.ttf</string> 72 - <string>FiraSans-SemiBold.ttf</string> 73 - <string>FiraSans-SemiBoldItalic.ttf</string> 74 - <string>FiraSans-Thin.ttf</string> 75 - <string>FiraSans-ThinItalic.ttf</string> 76 - <string>SpaceMono-Regular.ttf</string> 77 - </array> 78 - <key>UILaunchStoryboardName</key> 79 - <string>SplashScreen</string> 80 - <key>UIRequiredDeviceCapabilities</key> 81 - <array> 82 - <string>arm64</string> 83 - </array> 84 - <key>UIRequiresFullScreen</key> 85 - <false/> 86 - <key>UIStatusBarStyle</key> 87 - <string>UIStatusBarStyleDefault</string> 88 - <key>UISupportedInterfaceOrientations</key> 89 - <array> 90 - <string>UIInterfaceOrientationPortrait</string> 91 - <string>UIInterfaceOrientationPortraitUpsideDown</string> 92 - </array> 93 - <key>UISupportedInterfaceOrientations~ipad</key> 94 - <array> 95 - <string>UIInterfaceOrientationPortrait</string> 96 - <string>UIInterfaceOrientationPortraitUpsideDown</string> 97 - <string>UIInterfaceOrientationLandscapeLeft</string> 98 - <string>UIInterfaceOrientationLandscapeRight</string> 99 - </array> 100 - <key>UIUserInterfaceStyle</key> 101 - <string>Automatic</string> 102 - <key>UIViewControllerBasedStatusBarAppearance</key> 103 - <false/> 104 - </dict> 105 - </plist> 4 + <dict> 5 + <key>CADisableMinimumFrameDurationOnPhone</key> 6 + <true/> 7 + <key>CFBundleDevelopmentRegion</key> 8 + <string>$(DEVELOPMENT_LANGUAGE)</string> 9 + <key>CFBundleDisplayName</key> 10 + <string>Aquareum</string> 11 + <key>CFBundleExecutable</key> 12 + <string>$(EXECUTABLE_NAME)</string> 13 + <key>CFBundleIdentifier</key> 14 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 15 + <key>CFBundleInfoDictionaryVersion</key> 16 + <string>6.0</string> 17 + <key>CFBundleName</key> 18 + <string>$(PRODUCT_NAME)</string> 19 + <key>CFBundlePackageType</key> 20 + <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> 21 + <key>CFBundleShortVersionString</key> 22 + <string>0.0.1</string> 23 + <key>CFBundleSignature</key> 24 + <string>????</string> 25 + <key>CFBundleURLTypes</key> 26 + <array> 27 + <dict> 28 + <key>CFBundleURLSchemes</key> 29 + <array> 30 + <string>myapp</string> 31 + <string>tv.aquareum</string> 32 + </array> 33 + </dict> 34 + </array> 35 + <key>CFBundleVersion</key> 36 + <string>1</string> 37 + <key>LSRequiresIPhoneOS</key> 38 + <true/> 39 + <key>NSAppTransportSecurity</key> 40 + <dict> 41 + <key>NSAllowsArbitraryLoads</key> 42 + <false/> 43 + <key>NSAllowsLocalNetworking</key> 44 + <true/> 45 + </dict> 46 + <key>NSUserActivityTypes</key> 47 + <array> 48 + <string>$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route</string> 49 + </array> 50 + <key>UIAppFonts</key> 51 + <array> 52 + <string>FiraCode-Bold.ttf</string> 53 + <string>FiraCode-Light.ttf</string> 54 + <string>FiraCode-Medium.ttf</string> 55 + <string>FiraCode-Regular.ttf</string> 56 + <string>FiraCode-Retina.ttf</string> 57 + <string>FiraSans-Black.ttf</string> 58 + <string>FiraSans-BlackItalic.ttf</string> 59 + <string>FiraSans-Bold.ttf</string> 60 + <string>FiraSans-BoldItalic.ttf</string> 61 + <string>FiraSans-ExtraBold.ttf</string> 62 + <string>FiraSans-ExtraBoldItalic.ttf</string> 63 + <string>FiraSans-ExtraLight.ttf</string> 64 + <string>FiraSans-ExtraLightItalic.ttf</string> 65 + <string>FiraSans-Italic.ttf</string> 66 + <string>FiraSans-Light.ttf</string> 67 + <string>FiraSans-LightItalic.ttf</string> 68 + <string>FiraSans-Medium.ttf</string> 69 + <string>FiraSans-MediumItalic.ttf</string> 70 + <string>FiraSans-Regular.ttf</string> 71 + <string>FiraSans-SemiBold.ttf</string> 72 + <string>FiraSans-SemiBoldItalic.ttf</string> 73 + <string>FiraSans-Thin.ttf</string> 74 + <string>FiraSans-ThinItalic.ttf</string> 75 + <string>SpaceMono-Regular.ttf</string> 76 + </array> 77 + <key>UILaunchStoryboardName</key> 78 + <string>SplashScreen</string> 79 + <key>UIRequiredDeviceCapabilities</key> 80 + <array> 81 + <string>arm64</string> 82 + </array> 83 + <key>UIRequiresFullScreen</key> 84 + <false/> 85 + <key>UIStatusBarStyle</key> 86 + <string>UIStatusBarStyleDefault</string> 87 + <key>UISupportedInterfaceOrientations</key> 88 + <array> 89 + <string>UIInterfaceOrientationPortrait</string> 90 + <string>UIInterfaceOrientationPortraitUpsideDown</string> 91 + </array> 92 + <key>UISupportedInterfaceOrientations~ipad</key> 93 + <array> 94 + <string>UIInterfaceOrientationPortrait</string> 95 + <string>UIInterfaceOrientationPortraitUpsideDown</string> 96 + <string>UIInterfaceOrientationLandscapeLeft</string> 97 + <string>UIInterfaceOrientationLandscapeRight</string> 98 + </array> 99 + <key>UIUserInterfaceStyle</key> 100 + <string>Automatic</string> 101 + <key>UIViewControllerBasedStatusBarAppearance</key> 102 + <false/> 103 + </dict> 104 + </plist>
+8 -6
js/app/ios/Aquareum/PrivacyInfo.xcprivacy
··· 6 6 <array> 7 7 <dict> 8 8 <key>NSPrivacyAccessedAPIType</key> 9 - <string>NSPrivacyAccessedAPICategoryUserDefaults</string> 9 + <string>NSPrivacyAccessedAPICategoryFileTimestamp</string> 10 10 <key>NSPrivacyAccessedAPITypeReasons</key> 11 11 <array> 12 - <string>CA92.1</string> 12 + <string>C617.1</string> 13 + <string>0A2A.1</string> 14 + <string>3B52.1</string> 13 15 </array> 14 16 </dict> 15 17 <dict> 16 18 <key>NSPrivacyAccessedAPIType</key> 17 - <string>NSPrivacyAccessedAPICategoryFileTimestamp</string> 19 + <string>NSPrivacyAccessedAPICategoryUserDefaults</string> 18 20 <key>NSPrivacyAccessedAPITypeReasons</key> 19 21 <array> 20 - <string>0A2A.1</string> 21 - <string>3B52.1</string> 22 - <string>C617.1</string> 22 + <string>CA92.1</string> 23 + <string>1C8F.1</string> 24 + <string>C56D.1</string> 23 25 </array> 24 26 </dict> 25 27 <dict>
+148 -38
js/app/ios/Podfile.lock
··· 7 7 - DoubleConversion (1.1.6) 8 8 - EASClient (0.12.0): 9 9 - ExpoModulesCore 10 + - EXApplication (5.9.1): 11 + - ExpoModulesCore 10 12 - EXConstants (16.0.2): 11 13 - ExpoModulesCore 12 14 - EXJSONUtils (0.13.1) 13 15 - EXManifests (0.14.3): 14 16 - ExpoModulesCore 15 - - Expo (51.0.14): 17 + - EXNotifications (0.28.9): 16 18 - ExpoModulesCore 17 - - ExpoAsset (10.0.9): 19 + - Expo (51.0.18): 20 + - ExpoModulesCore 21 + - ExpoAsset (10.0.10): 18 22 - ExpoModulesCore 19 23 - ExpoFileSystem (17.0.1): 20 24 - ExpoModulesCore 21 25 - ExpoFont (12.0.7): 22 26 - ExpoModulesCore 23 - - ExpoHead (3.5.16): 27 + - ExpoHead (3.5.17): 24 28 - ExpoModulesCore 25 29 - ExpoKeepAwake (13.0.2): 26 30 - ExpoModulesCore 27 - - ExpoModulesCore (1.12.15): 31 + - ExpoModulesCore (1.12.18): 28 32 - DoubleConversion 29 33 - glog 30 34 - hermes-engine ··· 47 51 - ReactCommon/turbomodule/bridging 48 52 - ReactCommon/turbomodule/core 49 53 - Yoga 50 - - ExpoSystemUI (3.0.6): 54 + - ExpoSystemUI (3.0.7): 51 55 - ExpoModulesCore 52 56 - ExpoWebBrowser (13.0.3): 53 57 - ExpoModulesCore ··· 74 78 - ReactCommon/turbomodule/core 75 79 - Yoga 76 80 - EXStructuredHeaders (3.8.0) 77 - - EXUpdates (0.25.17): 81 + - EXUpdates (0.25.18): 78 82 - DoubleConversion 79 83 - EASClient 80 84 - EXManifests ··· 105 109 - EXUpdatesInterface (0.16.2): 106 110 - ExpoModulesCore 107 111 - FBLazyVector (0.74.1) 112 + - Firebase/CoreOnly (10.27.0): 113 + - FirebaseCore (= 10.27.0) 114 + - Firebase/Messaging (10.27.0): 115 + - Firebase/CoreOnly 116 + - FirebaseMessaging (~> 10.27.0) 117 + - FirebaseCore (10.27.0): 118 + - FirebaseCoreInternal (~> 10.0) 119 + - GoogleUtilities/Environment (~> 7.12) 120 + - GoogleUtilities/Logger (~> 7.12) 121 + - FirebaseCoreExtension (10.28.0): 122 + - FirebaseCore (~> 10.0) 123 + - FirebaseCoreInternal (10.28.0): 124 + - "GoogleUtilities/NSData+zlib (~> 7.8)" 125 + - FirebaseInstallations (10.28.0): 126 + - FirebaseCore (~> 10.0) 127 + - GoogleUtilities/Environment (~> 7.8) 128 + - GoogleUtilities/UserDefaults (~> 7.8) 129 + - PromisesObjC (~> 2.1) 130 + - FirebaseMessaging (10.27.0): 131 + - FirebaseCore (~> 10.0) 132 + - FirebaseInstallations (~> 10.0) 133 + - GoogleDataTransport (~> 9.3) 134 + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) 135 + - GoogleUtilities/Environment (~> 7.8) 136 + - GoogleUtilities/Reachability (~> 7.8) 137 + - GoogleUtilities/UserDefaults (~> 7.8) 138 + - nanopb (< 2.30911.0, >= 2.30908.0) 108 139 - fmt (9.1.0) 109 140 - glog (0.3.5) 141 + - GoogleDataTransport (9.4.1): 142 + - GoogleUtilities/Environment (~> 7.7) 143 + - nanopb (< 2.30911.0, >= 2.30908.0) 144 + - PromisesObjC (< 3.0, >= 1.2) 145 + - GoogleUtilities/AppDelegateSwizzler (7.13.3): 146 + - GoogleUtilities/Environment 147 + - GoogleUtilities/Logger 148 + - GoogleUtilities/Network 149 + - GoogleUtilities/Privacy 150 + - GoogleUtilities/Environment (7.13.3): 151 + - GoogleUtilities/Privacy 152 + - PromisesObjC (< 3.0, >= 1.2) 153 + - GoogleUtilities/Logger (7.13.3): 154 + - GoogleUtilities/Environment 155 + - GoogleUtilities/Privacy 156 + - GoogleUtilities/Network (7.13.3): 157 + - GoogleUtilities/Logger 158 + - "GoogleUtilities/NSData+zlib" 159 + - GoogleUtilities/Privacy 160 + - GoogleUtilities/Reachability 161 + - "GoogleUtilities/NSData+zlib (7.13.3)": 162 + - GoogleUtilities/Privacy 163 + - GoogleUtilities/Privacy (7.13.3) 164 + - GoogleUtilities/Reachability (7.13.3): 165 + - GoogleUtilities/Logger 166 + - GoogleUtilities/Privacy 167 + - GoogleUtilities/UserDefaults (7.13.3): 168 + - GoogleUtilities/Logger 169 + - GoogleUtilities/Privacy 110 170 - hermes-engine (0.74.1): 111 171 - hermes-engine/Pre-built (= 0.74.1) 112 172 - hermes-engine/Pre-built (0.74.1) 173 + - nanopb (2.30910.0): 174 + - nanopb/decode (= 2.30910.0) 175 + - nanopb/encode (= 2.30910.0) 176 + - nanopb/decode (2.30910.0) 177 + - nanopb/encode (2.30910.0) 178 + - PromisesObjC (2.4.0) 113 179 - RCT-Folly (2024.01.01.00): 114 180 - boost 115 181 - DoubleConversion ··· 1270 1336 - React-logger (= 0.74.1) 1271 1337 - React-perflogger (= 0.74.1) 1272 1338 - React-utils (= 0.74.1) 1339 + - RNFBApp (20.1.0): 1340 + - Firebase/CoreOnly (= 10.27.0) 1341 + - React-Core 1342 + - RNFBMessaging (20.1.0): 1343 + - Firebase/Messaging (= 10.27.0) 1344 + - FirebaseCoreExtension 1345 + - React-Core 1346 + - RNFBApp 1273 1347 - RNReanimated (3.10.1): 1274 1348 - DoubleConversion 1275 1349 - glog ··· 1328 1402 - Burnt (from `../../../node_modules/burnt/ios`) 1329 1403 - DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 1330 1404 - EASClient (from `../../../node_modules/expo-eas-client/ios`) 1405 + - EXApplication (from `../../../node_modules/expo-application/ios`) 1331 1406 - EXConstants (from `../../../node_modules/expo-constants/ios`) 1332 1407 - EXJSONUtils (from `../../../node_modules/expo-json-utils/ios`) 1333 1408 - EXManifests (from `../../../node_modules/expo-manifests/ios`) 1409 + - EXNotifications (from `../../../node_modules/expo-notifications/ios`) 1334 1410 - Expo (from `../../../node_modules/expo`) 1335 1411 - ExpoAsset (from `../../../node_modules/expo-asset/ios`) 1336 1412 - ExpoFileSystem (from `../../../node_modules/expo-file-system/ios`) ··· 1398 1474 - React-runtimescheduler (from `../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 1399 1475 - React-utils (from `../../../node_modules/react-native/ReactCommon/react/utils`) 1400 1476 - ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`) 1477 + - "RNFBApp (from `../../../node_modules/@react-native-firebase/app`)" 1478 + - "RNFBMessaging (from `../../../node_modules/@react-native-firebase/messaging`)" 1401 1479 - RNReanimated (from `../../../node_modules/react-native-reanimated`) 1402 1480 - RNScreens (from `../../../node_modules/react-native-screens`) 1403 1481 - RNSVG (from `../../../node_modules/react-native-svg`) ··· 1405 1483 1406 1484 SPEC REPOS: 1407 1485 trunk: 1486 + - Firebase 1487 + - FirebaseCore 1488 + - FirebaseCoreExtension 1489 + - FirebaseCoreInternal 1490 + - FirebaseInstallations 1491 + - FirebaseMessaging 1492 + - GoogleDataTransport 1493 + - GoogleUtilities 1494 + - nanopb 1495 + - PromisesObjC 1408 1496 - ReachabilitySwift 1409 1497 - SocketRocket 1410 1498 - SPAlert ··· 1420 1508 :podspec: "../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 1421 1509 EASClient: 1422 1510 :path: "../../../node_modules/expo-eas-client/ios" 1511 + EXApplication: 1512 + :path: "../../../node_modules/expo-application/ios" 1423 1513 EXConstants: 1424 1514 :path: "../../../node_modules/expo-constants/ios" 1425 1515 EXJSONUtils: 1426 1516 :path: "../../../node_modules/expo-json-utils/ios" 1427 1517 EXManifests: 1428 1518 :path: "../../../node_modules/expo-manifests/ios" 1519 + EXNotifications: 1520 + :path: "../../../node_modules/expo-notifications/ios" 1429 1521 Expo: 1430 1522 :path: "../../../node_modules/expo" 1431 1523 ExpoAsset: ··· 1557 1649 :path: "../../../node_modules/react-native/ReactCommon/react/utils" 1558 1650 ReactCommon: 1559 1651 :path: "../../../node_modules/react-native/ReactCommon" 1652 + RNFBApp: 1653 + :path: "../../../node_modules/@react-native-firebase/app" 1654 + RNFBMessaging: 1655 + :path: "../../../node_modules/@react-native-firebase/messaging" 1560 1656 RNReanimated: 1561 1657 :path: "../../../node_modules/react-native-reanimated" 1562 1658 RNScreens: ··· 1571 1667 Burnt: dde5dd245f124a4594098e3938ba71aae4ec83c3 1572 1668 DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 1573 1669 EASClient: 1509a9a6b48b932ec61667644634daf2562983b8 1670 + EXApplication: c08200c34daca7af7fd76ac4b9d606077410e8ad 1574 1671 EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59 1575 1672 EXJSONUtils: 30c17fd9cc364d722c0946a550dfbf1be92ef6a4 1576 1673 EXManifests: c1fab4c3237675e7b0299ea8df0bcb14baca4f42 1577 - Expo: 9c87c876b45a6934894ba5e9353ee94fdba48125 1578 - ExpoAsset: 39e60dc31b16e204a9949caf3edb6dcda322e667 1674 + EXNotifications: fcecd5a47fc8448d4f6173490b6fa8ee747f687d 1675 + Expo: 56b642d0930789fc847dc7f424d2d599dfe59a5e 1676 + ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875 1579 1677 ExpoFileSystem: 80bfe850b1f9922c16905822ecbf97acd711dc51 1580 1678 ExpoFont: 43b69559cef3d773db57c7ae7edd3cb0aa0dc610 1581 - ExpoHead: 430fba41a1d7a4f7bd440291ae992bd8e0f8d5e2 1679 + ExpoHead: 439510c5bec19592d5a0d78860e0cb6c59e28a34 1582 1680 ExpoKeepAwake: 3b8815d9dd1d419ee474df004021c69fdd316d08 1583 - ExpoModulesCore: 54c85b57000a2a82e5212d5e42cd7a36524be4ac 1584 - ExpoSystemUI: 65007dd0537cb38649ee55b4670a6ed222769b3a 1681 + ExpoModulesCore: b2fa8cc3c12f0ba45a9ae125c0e3bcad04f3fb7b 1682 + ExpoSystemUI: d4f065a016cae6721b324eb659cdee4d4cf0cb26 1585 1683 ExpoWebBrowser: 7595ccac6938eb65b076385fd23d035db9ecdc8e 1586 - EXSplashScreen: fbf0ec78e9cee911df188bf17b4fe51d15a84b87 1684 + EXSplashScreen: d8b3c547b9b18a41d80c6f6b274c4c26664febd4 1587 1685 EXStructuredHeaders: cb8d1f698e144f4c5547b4c4963e1552f5d2b457 1588 - EXUpdates: 8f7e032aeb1462ce7ddef9d3d842c75199af7181 1686 + EXUpdates: 974b7756e4a021159216df12d41ad2a89068a0f4 1589 1687 EXUpdatesInterface: 996527fd7d1a5d271eb523258d603f8f92038f24 1590 1688 FBLazyVector: 898d14d17bf19e2435cafd9ea2a1033efe445709 1689 + Firebase: 26b040b20866a55f55eb3611b9fcf3ae64816b86 1690 + FirebaseCore: a2b95ae4ce7c83ceecfbbbe3b6f1cddc7415a808 1691 + FirebaseCoreExtension: f63147b723e2a700fe0f34ec6fb7f358d6fe83e0 1692 + FirebaseCoreInternal: 58d07f1362fddeb0feb6a857d1d1d1c5e558e698 1693 + FirebaseInstallations: 60c1d3bc1beef809fd1ad1189a8057a040c59f2e 1694 + FirebaseMessaging: 585984d0a1df120617eb10b44cad8968b859815e 1591 1695 fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 1592 1696 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 1697 + GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a 1698 + GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 1593 1699 hermes-engine: 16b8530de1b383cdada1476cf52d1b52f0692cbc 1700 + nanopb: 438bc412db1928dac798aa6fd75726007be04262 1701 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 1594 1702 RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 1595 1703 RCTDeprecation: efb313d8126259e9294dc4ee0002f44a6f676aba 1596 1704 RCTRequired: f49ea29cece52aee20db633ae7edc4b271435562 ··· 1598 1706 ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979 1599 1707 React: 88794fad7f460349dbc9df8a274d95f37a009f5d 1600 1708 React-callinvoker: 7a7023e34a55c89ea2aa62486bb3c1164ab0be0c 1601 - React-Codegen: f824dfd08f6c0e021580225427ae2fac6ec15f24 1709 + React-Codegen: 9a6965c59b2066ecc31ca8b98687badaedb8387d 1602 1710 React-Core: 60075333bc22b5a793d3f62e207368b79bff2e64 1603 1711 React-CoreModules: 147c314d6b3b1e069c9ad64cbbbeba604854ff86 1604 1712 React-cxxreact: 5de27fd8bff4764acb2eac3ee66001e0e2b910e7 1605 - React-debug: 6397f0baf751b40511d01e984b01467d7e6d8127 1606 - React-Fabric: 6fa475e16e0a37b38d462cec32b70fd5cf886305 1607 - React-FabricImage: 7e09b3704e3fa084b4d44b5b5ef6e2e3d3334ec0 1608 - React-featureflags: 2eb79dd9df4095bff519379f2a4c915069e330bb 1609 - React-graphics: 82a482a3aa5d9659b74cdf2c8b57faf67eaa10fb 1713 + React-debug: 3d88e9b63330a2460377eafcfc94f68c791bba67 1714 + React-Fabric: ef286f7f6fa4958e44793e002ca15473425b37e6 1715 + React-FabricImage: c0554a6af432d06332be7b291a62d3832be65e98 1716 + React-featureflags: df181841fe84a8f661df764838cb028cef3910b7 1717 + React-graphics: 4fe219afa8fdeba3a79c50fb01cebd98c87a19c8 1610 1718 React-hermes: d93936b02de2fd7e67c11e92c16d4278a14d0134 1611 - React-ImageManager: ebb3c4812e2c5acba5a89728c2d77729471329ad 1612 - React-jserrorhandler: a08e0adcf1612900dde82b8bf8e93e7d2ad953b3 1719 + React-ImageManager: 1d17717952083b760b5c44c55f8e42313d8647b6 1720 + React-jserrorhandler: 973a6035b761b1bdf730762843e47b390f0d8086 1613 1721 React-jsi: f46d09ee5079a4f3b637d30d0e59b8ea6470632c 1614 1722 React-jsiexecutor: e73579560957aa3ca9dc02ab90e163454279d48c 1615 - React-jsinspector: e8ba20dde269c7c1d45784b858fa1cf4383f0bbb 1616 - React-jsitracing: 233d1a798fe0ff33b8e630b8f00f62c4a8115fbc 1723 + React-jsinspector: 42273c87f84c5a6ffccdcad759f4659a616bb582 1724 + React-jsitracing: 3de522f8f794dccd3c54af9160dc992ee65bd494 1617 1725 React-logger: 7e7403a2b14c97f847d90763af76b84b152b6fce 1618 - React-Mapbuffer: 11029dcd47c5c9e057a4092ab9c2a8d10a496a33 1726 + React-Mapbuffer: c5844bf3c2206f5475c0fc2340a89b049ea23c97 1619 1727 react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d 1620 - React-nativeconfig: b0073a590774e8b35192fead188a36d1dca23dec 1621 - React-NativeModulesApple: df46ff3e3de5b842b30b4ca8a6caae6d7c8ab09f 1728 + React-nativeconfig: 21d89c65ca39875fad2c5c465e0e013e514eba21 1729 + React-NativeModulesApple: e2e180dae4486b2978fcf3564cc4c8de4b453a68 1622 1730 React-perflogger: 3d31e0d1e8ad891e43a09ac70b7b17a79773003a 1623 1731 React-RCTActionSheet: c4a3a134f3434c9d7b0c1054f1a8cfed30c7a093 1624 1732 React-RCTAnimation: 0e5d15320eeece667fcceb6c785acf9a184e9da1 1625 1733 React-RCTAppDelegate: c4f6c0700b8950a8b18c2e004996eec1807d430a 1626 1734 React-RCTBlob: c46aaaee693d371a1c7cae2a8c8ee2aa7fbc1adb 1627 - React-RCTFabric: 0dbf28ce96c7f2843483e32a725a5b5793584ff3 1735 + React-RCTFabric: 1a4416c3b4e775b30049fca6174bbb3fe189c138 1628 1736 React-RCTImage: a04dba5fcc823244f5822192c130ecf09623a57f 1629 1737 React-RCTLinking: 533bf13c745fcb2a0c14e0e49fd149586a7f0d14 1630 1738 React-RCTNetwork: a29e371e0d363d7b4c10ab907bc4d6ae610541e9 1631 1739 React-RCTSettings: 127813224780861d0d30ecda17a40d1dfebe7d73 1632 1740 React-RCTText: 8a823f245ecf82edb7569646e3c4d8041deb800a 1633 1741 React-RCTVibration: 46b5fae74e63f240f22f39de16ad6433da3b65d9 1634 - React-rendererdebug: 4653f8da6ab1d7b01af796bdf8ca47a927539e39 1635 - React-rncore: 4f1e645acb5107bd4b4cf29eff17b04a7cd422f3 1636 - React-RuntimeApple: 013b606e743efb5ee14ef03c32379b78bfe74354 1637 - React-RuntimeCore: 7205be45a25713b5418bbf2db91ddfcca0761d8b 1742 + React-rendererdebug: fec09d89613086791afb57a741bda8716c5ff4dd 1743 + React-rncore: 9c134c48554a6d8d4c8d561d929a2018e8de71f9 1744 + React-RuntimeApple: e36b278668707bd7fed473ff9d3620124e6f40e5 1745 + React-RuntimeCore: 66d48e7a7bdea2481f1d6351173b991ac6bd72fb 1638 1746 React-runtimeexecutor: a278d4249921853d4a3f24e4d6e0ff30688f3c16 1639 - React-RuntimeHermes: 44c628568ce8feedc3acfbd48fc07b7f0f6d2731 1640 - React-runtimescheduler: e2152ed146b6a35c07386fc2ac4827b27e6aad12 1641 - React-utils: 3285151c9d1e3a28a9586571fc81d521678c196d 1642 - ReactCommon: f42444e384d82ab89184aed5d6f3142748b54768 1643 - RNReanimated: 33c6135cdf421b795c2f1173075a11cca2a39bf2 1644 - RNScreens: b32a9ff15bea7fcdbe5dff6477bc503f792b1208 1747 + React-RuntimeHermes: 927011fec9502e4823113ef8957056c3f151b29a 1748 + React-runtimescheduler: 86b9c5bccd239d91da33e08b4c58c6a40b7fdb48 1749 + React-utils: 8e9c5cd66f0788e156a1fcb5cd69593ec8607611 1750 + ReactCommon: eb4c4a9c43fcc0d93f922d0fdada24638429e515 1751 + RNFBApp: 1ae7462cddf74a49df206d3418bc0170f8fa53e5 1752 + RNFBMessaging: 85f661b9f16e2b081e6809ef63d3daa4458b9042 1753 + RNReanimated: da754bc4658fb6089cceb9c6a896a875a57ffd65 1754 + RNScreens: 30249f9331c3b00ae7cb7922e11f58b3ed369c07 1645 1755 RNSVG: 43b64ed39c14ce830d840903774154ca0c1f27ec 1646 1756 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d 1647 1757 SPAlert: 735da1f16a887e294719217572ce1f936d8c8782 1648 1758 SPIndicator: 93e0a4fb23de51294ac48e874c0f081a5e293e4f 1649 1759 sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a 1650 - Yoga: 348f8b538c3ed4423eb58a8e5730feec50bce372 1760 + Yoga: dafebc41bc66910af33077aaa41078e89fd635bf 1651 1761 1652 1762 PODFILE CHECKSUM: 8eae13bae4c88d2aecec6be52eeceaffda5a77ca 1653 1763
+5 -1
js/app/ios/Podfile.properties.json
··· 1 1 { 2 2 "expo.jsEngine": "hermes", 3 - "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" 3 + "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true", 4 + "ios.useFrameworks": "static", 5 + "apple.extraPods": "[]", 6 + "apple.ccacheEnabled": "false", 7 + "apple.privacyManifestAggregationEnabled": "true" 4 8 }
+6 -1
js/app/package.json
··· 12 12 "test": "jest --watchAll", 13 13 "build": "expo export -p web || expo export -p web", 14 14 "prepare": "rm -rf android/app/src/main/assets/fonts && mkdir -p ./android/app/src/main/assets/fonts && cp -R ./assets/fonts ./android/app/src/main/assets", 15 - "check": "npx tsc -p . --outFile $(mktemp)" 15 + "check": "npx tsc -p . --outFile $(mktemp)", 16 + "prebuild": "expo prebuild --clean && sed -i '' 's/org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m/org.gradle.jvmargs=-Xmx8192m -XX:MaxMetaspaceSize=2048m/' android/gradle.properties && echo '\nnetworkTimeout=100000' >> android/gradle.properties" 16 17 }, 17 18 "jest": { 18 19 "preset": "jest-expo" 19 20 }, 20 21 "dependencies": { 22 + "@react-native-firebase/app": "^20.1.0", 23 + "@react-native-firebase/messaging": "^20.1.0", 21 24 "@react-navigation/native": "^6.1.17", 22 25 "@tamagui/config": "^1.100.6", 23 26 "@tamagui/lucide-icons": "^1.100.6", ··· 26 29 "burnt": "^0.12.2", 27 30 "chrono-node": "^2.7.6", 28 31 "expo": "~51.0.9", 32 + "expo-build-properties": "^0.12.3", 29 33 "expo-font": "~12.0.6", 30 34 "expo-linking": "~6.3.1", 35 + "expo-notifications": "~0.28.9", 31 36 "expo-router": "~3.5.15", 32 37 "expo-splash-screen": "~0.27.4", 33 38 "expo-status-bar": "^1.12.1",
+5 -2
package.json
··· 7 7 "scripts": { 8 8 "check": "yarn workspaces foreach --all run check && git ls-files | xargs prettier --check --ignore-unknown", 9 9 "fix": "git ls-files | xargs prettier --write --ignore-unknown", 10 - "prepare": "husky", 10 + "postinstall": "husky && yarn run build", 11 11 "build": "yarn workspaces foreach --all run build" 12 12 }, 13 13 "keywords": [], ··· 21 21 "workspaces": [ 22 22 "js/*" 23 23 ], 24 - "packageManager": "yarn@4.3.0" 24 + "packageManager": "yarn@4.3.0", 25 + "dependencies": { 26 + "firebase-admin": "^12.2.0" 27 + } 25 28 }
+73 -24
pkg/api/api.go
··· 5 5 "encoding/json" 6 6 "fmt" 7 7 "io" 8 + "log/slog" 8 9 "net" 9 10 "net/http" 10 11 "time" 12 + 13 + sloghttp "github.com/samber/slog-http" 11 14 12 15 "aquareum.tv/aquareum/js/app" 13 16 "aquareum.tv/aquareum/pkg/config" ··· 15 18 "aquareum.tv/aquareum/pkg/model" 16 19 ) 17 20 18 - func Handler(ctx context.Context, mod model.Model) (http.Handler, error) { 21 + func Handler(ctx context.Context, cli config.CLI, mod model.Model) (http.Handler, error) { 19 22 mux := http.NewServeMux() 20 23 files, err := app.Files() 21 24 if err != nil { 22 25 return nil, err 23 26 } 24 - mux.Handle("/notification", HandleNotificationCreate(ctx, mod)) 27 + mux.Handle("/api/notification", HandleNotification(ctx, cli, mod)) 28 + mux.Handle("/api", HandleAPI404(ctx, mod)) 25 29 mux.Handle("/", http.FileServer(http.FS(files))) 26 - return mux, nil 30 + handler := sloghttp.Recovery(mux) 31 + handler = sloghttp.New(slog.Default())(handler) 32 + return handler, nil 27 33 } 28 34 29 35 func RedirectHandler(ctx context.Context, cli config.CLI, mod model.Model) (http.Handler, error) { ··· 54 60 Token string `json:"token"` 55 61 } 56 62 57 - func HandleNotificationCreate(ctx context.Context, mod model.Model) http.HandlerFunc { 63 + func HandleAPI404(ctx context.Context, mod model.Model) http.HandlerFunc { 58 64 return func(w http.ResponseWriter, req *http.Request) { 59 - payload, err := io.ReadAll(req.Body) 60 - if err != nil { 61 - log.Log(ctx, "error reading notification create", "error", err) 62 - w.WriteHeader(400) 63 - return 64 - } 65 - n := NotificationPayload{} 66 - err = json.Unmarshal(payload, &n) 67 - if err != nil { 68 - log.Log(ctx, "error unmarshalling notification create", "error", err) 69 - w.WriteHeader(400) 70 - return 71 - } 72 - err = mod.CreateNotification(n.Token) 73 - if err != nil { 74 - log.Log(ctx, "error creating notification", "error", err) 75 - w.WriteHeader(400) 65 + w.WriteHeader(404) 66 + } 67 + } 68 + 69 + func HandleNotification(ctx context.Context, cli config.CLI, mod model.Model) http.HandlerFunc { 70 + return func(w http.ResponseWriter, req *http.Request) { 71 + if req.Method == "POST" { 72 + payload, err := io.ReadAll(req.Body) 73 + if err != nil { 74 + log.Log(ctx, "error reading notification create", "error", err) 75 + w.WriteHeader(400) 76 + return 77 + } 78 + n := NotificationPayload{} 79 + err = json.Unmarshal(payload, &n) 80 + if err != nil { 81 + log.Log(ctx, "error unmarshalling notification create", "error", err) 82 + w.WriteHeader(400) 83 + return 84 + } 85 + err = mod.CreateNotification(n.Token) 86 + if err != nil { 87 + log.Log(ctx, "error creating notification", "error", err) 88 + w.WriteHeader(400) 89 + return 90 + } 91 + log.Log(ctx, "successfully created notification", "token", n.Token) 92 + w.WriteHeader(200) 93 + } else if req.Method == "GET" { 94 + // disallow unless we have an admin token 95 + if cli.AdminSecret == "" { 96 + w.WriteHeader(http.StatusNotImplemented) 97 + return 98 + } 99 + log.Log(ctx, cli.AdminSecret) 100 + auth := req.Header.Get("Authorization") 101 + if auth == "" { 102 + w.WriteHeader(http.StatusUnauthorized) 103 + return 104 + } 105 + expected := fmt.Sprintf("Bearer %s", cli.AdminSecret) 106 + if auth != expected { 107 + w.WriteHeader(http.StatusForbidden) 108 + return 109 + } 110 + nots, err := mod.ListNotifications() 111 + if err != nil { 112 + log.Log(ctx, "error listing notifications", "error", err) 113 + w.WriteHeader(500) 114 + return 115 + } 116 + bs, err := json.Marshal(nots) 117 + if err != nil { 118 + log.Log(ctx, "error marshalling notifications", "error", err) 119 + w.WriteHeader(500) 120 + return 121 + } 122 + w.WriteHeader(200) 123 + w.Write(bs) 124 + } else { 125 + w.WriteHeader(http.StatusMethodNotAllowed) 76 126 return 77 127 } 78 - w.WriteHeader(200) 79 128 } 80 129 } 81 130 82 131 func ServeHTTP(ctx context.Context, cli config.CLI, mod model.Model) error { 83 - handler, err := Handler(ctx, mod) 132 + handler, err := Handler(ctx, cli, mod) 84 133 if err != nil { 85 134 return err 86 135 } ··· 104 153 } 105 154 106 155 func ServeHTTPS(ctx context.Context, cli config.CLI, mod model.Model) error { 107 - handler, err := Handler(ctx, mod) 156 + handler, err := Handler(ctx, cli, mod) 108 157 if err != nil { 109 158 return err 110 159 }
+1
pkg/cmd/aquareum.go
··· 51 51 fs.StringVar(&cli.TLSCertPath, "tls-cert", tlsCertFile, "Path to TLS certificate") 52 52 fs.StringVar(&cli.TLSKeyPath, "tls-key", tlsKeyFile, "Path to TLS key") 53 53 fs.StringVar(&cli.DBPath, "db-path", dbFile, "path to sqlite database file") 54 + fs.StringVar(&cli.AdminSecret, "admin-secret", "", "secret admin token (to be replaced soon)") 54 55 55 56 ff.Parse( 56 57 fs, os.Args[1:],
+1
pkg/config/config.go
··· 7 7 Insecure bool 8 8 HttpAddr string 9 9 HttpsAddr string 10 + AdminSecret string 10 11 }
+10
pkg/model/model.go
··· 21 21 22 22 type Model interface { 23 23 CreateNotification(token string) error 24 + ListNotifications() ([]Notification, error) 24 25 } 25 26 26 27 type Notification struct { ··· 71 72 } 72 73 return nil 73 74 } 75 + 76 + func (m *DBModel) ListNotifications() ([]Notification, error) { 77 + nots := []Notification{} 78 + err := m.DB.Find(&nots).Error 79 + if err != nil { 80 + return nil, fmt.Errorf("error retrieving notifications: %w", err) 81 + } 82 + return nots, nil 83 + }
+1153 -23
yarn.lock
··· 1759 1759 languageName: node 1760 1760 linkType: hard 1761 1761 1762 + "@fastify/busboy@npm:^2.1.0": 1763 + version: 2.1.1 1764 + resolution: "@fastify/busboy@npm:2.1.1" 1765 + checksum: 10/2bb8a7eca8289ed14c9eb15239bc1019797454624e769b39a0b90ed204d032403adc0f8ed0d2aef8a18c772205fa7808cf5a1b91f21c7bfc7b6032150b1062c5 1766 + languageName: node 1767 + linkType: hard 1768 + 1769 + "@firebase/app-check-interop-types@npm:0.3.2": 1770 + version: 0.3.2 1771 + resolution: "@firebase/app-check-interop-types@npm:0.3.2" 1772 + checksum: 10/3effe656a4762c541838f4bde91b4498e51d48389046b930dc3dbb012e54b6ab0727f7c68a3e94198f633d57833346fc337a0847b6b03d2407030e1489d466fe 1773 + languageName: node 1774 + linkType: hard 1775 + 1776 + "@firebase/app-types@npm:0.9.2": 1777 + version: 0.9.2 1778 + resolution: "@firebase/app-types@npm:0.9.2" 1779 + checksum: 10/566b3714a4d7e8180514258e4b1549bf5b28ae0383b4ff53d3532a45e114048afdd27c1fef8688d871dd9e5ad5307e749776e23f094122655ac6b0fb550eb11a 1780 + languageName: node 1781 + linkType: hard 1782 + 1783 + "@firebase/auth-interop-types@npm:0.2.3": 1784 + version: 0.2.3 1785 + resolution: "@firebase/auth-interop-types@npm:0.2.3" 1786 + checksum: 10/e55b8ded6bd1a5e6a2845c9c7ed520bb9a8a76e4ddf90249bf685986ac7b1fb079be2fa4edcb6a3aa81d1d56870a470eadcd5a8f20b797dccd803d72ed4c80aa 1787 + languageName: node 1788 + linkType: hard 1789 + 1790 + "@firebase/component@npm:0.6.8": 1791 + version: 0.6.8 1792 + resolution: "@firebase/component@npm:0.6.8" 1793 + dependencies: 1794 + "@firebase/util": "npm:1.9.7" 1795 + tslib: "npm:^2.1.0" 1796 + checksum: 10/0df2a61a9d3a32981a82889b4f23923c9adc468e89cadec5984b52d2422bb2b184c1219ed78dc7ec0b7f973ac0b7c2e8f486dee4a32a6741c0627648960e4314 1797 + languageName: node 1798 + linkType: hard 1799 + 1800 + "@firebase/database-compat@npm:^1.0.2": 1801 + version: 1.0.6 1802 + resolution: "@firebase/database-compat@npm:1.0.6" 1803 + dependencies: 1804 + "@firebase/component": "npm:0.6.8" 1805 + "@firebase/database": "npm:1.0.6" 1806 + "@firebase/database-types": "npm:1.0.4" 1807 + "@firebase/logger": "npm:0.4.2" 1808 + "@firebase/util": "npm:1.9.7" 1809 + tslib: "npm:^2.1.0" 1810 + checksum: 10/a4bd30a47bb17de6c1b9508b0141f94a25fa8b73c7f85451200390fcdb6500cdb5e1f14bc699e001798f5552b75a7884cf59361d0eb450374504781e64393a66 1811 + languageName: node 1812 + linkType: hard 1813 + 1814 + "@firebase/database-types@npm:1.0.4, @firebase/database-types@npm:^1.0.0": 1815 + version: 1.0.4 1816 + resolution: "@firebase/database-types@npm:1.0.4" 1817 + dependencies: 1818 + "@firebase/app-types": "npm:0.9.2" 1819 + "@firebase/util": "npm:1.9.7" 1820 + checksum: 10/d76125998d322d1fa31a6bf028e21ba03eafb26d7ae3b408ea8f84f52caf1dea716a236a21c64deb857c5eb091ea53cf148b9a2b99f4e97efc5b7c8cabae9acd 1821 + languageName: node 1822 + linkType: hard 1823 + 1824 + "@firebase/database@npm:1.0.6": 1825 + version: 1.0.6 1826 + resolution: "@firebase/database@npm:1.0.6" 1827 + dependencies: 1828 + "@firebase/app-check-interop-types": "npm:0.3.2" 1829 + "@firebase/auth-interop-types": "npm:0.2.3" 1830 + "@firebase/component": "npm:0.6.8" 1831 + "@firebase/logger": "npm:0.4.2" 1832 + "@firebase/util": "npm:1.9.7" 1833 + faye-websocket: "npm:0.11.4" 1834 + tslib: "npm:^2.1.0" 1835 + checksum: 10/9d55b61624934703f1636692e4e6765ade127cb636a0d3adda75889cb2be4735eb03347caf4f0184eaef829ade11c5ab210df0327b1ae629f8f0484faa1f8124 1836 + languageName: node 1837 + linkType: hard 1838 + 1839 + "@firebase/logger@npm:0.4.2": 1840 + version: 0.4.2 1841 + resolution: "@firebase/logger@npm:0.4.2" 1842 + dependencies: 1843 + tslib: "npm:^2.1.0" 1844 + checksum: 10/961b4605220c0a56c5f3ccf4e6049e44c27303c1ca998c6fa1d19de785c76d93e3b1a3da455e9f40655711345d8d779912366e4f369d93eda8d08c407cc5b140 1845 + languageName: node 1846 + linkType: hard 1847 + 1848 + "@firebase/util@npm:1.9.7": 1849 + version: 1.9.7 1850 + resolution: "@firebase/util@npm:1.9.7" 1851 + dependencies: 1852 + tslib: "npm:^2.1.0" 1853 + checksum: 10/c31290f45794af68a3ab571db1c0e3cb4d15443adfdc50107b835274b4ad525f839ee79a0da2898dd8b31e64ff811c126d338b0bab117be59c0a065ce984a89a 1854 + languageName: node 1855 + linkType: hard 1856 + 1762 1857 "@floating-ui/core@npm:^1.0.0, @floating-ui/core@npm:^1.6.0": 1763 1858 version: 1.6.4 1764 1859 resolution: "@floating-ui/core@npm:1.6.4" ··· 1823 1918 languageName: node 1824 1919 linkType: hard 1825 1920 1921 + "@google-cloud/firestore@npm:^7.7.0": 1922 + version: 7.9.0 1923 + resolution: "@google-cloud/firestore@npm:7.9.0" 1924 + dependencies: 1925 + fast-deep-equal: "npm:^3.1.1" 1926 + functional-red-black-tree: "npm:^1.0.1" 1927 + google-gax: "npm:^4.3.3" 1928 + protobufjs: "npm:^7.2.6" 1929 + checksum: 10/679ccfb33c837a718f26a9cebb4cf08ba0bc451316824c16c9077998546353b011363983b9148232e22e939e216f88fb01fdabef2ba63d116d4afc3e48883cb8 1930 + languageName: node 1931 + linkType: hard 1932 + 1933 + "@google-cloud/paginator@npm:^5.0.0": 1934 + version: 5.0.2 1935 + resolution: "@google-cloud/paginator@npm:5.0.2" 1936 + dependencies: 1937 + arrify: "npm:^2.0.0" 1938 + extend: "npm:^3.0.2" 1939 + checksum: 10/b64ba2029b77fdcf3c827aea0b6d128122fd1d2f4aa8c1ba70747cba0659d4216a283769fb3bbeb8f726176f5282624637f02c30f118a010e05838411da0cb76 1940 + languageName: node 1941 + linkType: hard 1942 + 1943 + "@google-cloud/projectify@npm:^4.0.0": 1944 + version: 4.0.0 1945 + resolution: "@google-cloud/projectify@npm:4.0.0" 1946 + checksum: 10/fdccdda0b50855c35541d71c46a6603f3302ff1a00108d946272cb2167435da00e2a2da5963fe489f4f5a4a9eb6320abeb97d3269974a972ae89f5df8451922d 1947 + languageName: node 1948 + linkType: hard 1949 + 1950 + "@google-cloud/promisify@npm:^4.0.0": 1951 + version: 4.0.0 1952 + resolution: "@google-cloud/promisify@npm:4.0.0" 1953 + checksum: 10/c5de81321b3a5c567edcbe0b941fb32644611147f3ba22f20575918c225a979988a99bc2ebda05ac914fa8714b0a54c69be72c3f46c7a64c3b19db7d7fba8d04 1954 + languageName: node 1955 + linkType: hard 1956 + 1957 + "@google-cloud/storage@npm:^7.7.0": 1958 + version: 7.11.3 1959 + resolution: "@google-cloud/storage@npm:7.11.3" 1960 + dependencies: 1961 + "@google-cloud/paginator": "npm:^5.0.0" 1962 + "@google-cloud/projectify": "npm:^4.0.0" 1963 + "@google-cloud/promisify": "npm:^4.0.0" 1964 + abort-controller: "npm:^3.0.0" 1965 + async-retry: "npm:^1.3.3" 1966 + duplexify: "npm:^4.1.3" 1967 + fast-xml-parser: "npm:^4.3.0" 1968 + gaxios: "npm:^6.0.2" 1969 + google-auth-library: "npm:^9.6.3" 1970 + html-entities: "npm:^2.5.2" 1971 + mime: "npm:^3.0.0" 1972 + p-limit: "npm:^3.0.1" 1973 + retry-request: "npm:^7.0.0" 1974 + teeny-request: "npm:^9.0.0" 1975 + uuid: "npm:^8.0.0" 1976 + checksum: 10/69f32dc73d8017049eaf43a79ba105bdda1ec413a74703b0b19839573c1bfaf8d9be6a48a784cf9daf19b89365cdd17c9c19bbe921c14650f94d01106363017e 1977 + languageName: node 1978 + linkType: hard 1979 + 1826 1980 "@graphql-typed-document-node/core@npm:^3.1.0": 1827 1981 version: 3.2.0 1828 1982 resolution: "@graphql-typed-document-node/core@npm:3.2.0" ··· 1832 1986 languageName: node 1833 1987 linkType: hard 1834 1988 1989 + "@grpc/grpc-js@npm:^1.10.9": 1990 + version: 1.10.10 1991 + resolution: "@grpc/grpc-js@npm:1.10.10" 1992 + dependencies: 1993 + "@grpc/proto-loader": "npm:^0.7.13" 1994 + "@js-sdsl/ordered-map": "npm:^4.4.2" 1995 + checksum: 10/eb794804305ae4ce6c55564d5fea97e76462eee0b8c4bf3ba1cc220143e7dea26553dd131662047b87d30f90ac4c84bd5ed4604720cd758c8f039848a1c4db69 1996 + languageName: node 1997 + linkType: hard 1998 + 1999 + "@grpc/proto-loader@npm:^0.7.13": 2000 + version: 0.7.13 2001 + resolution: "@grpc/proto-loader@npm:0.7.13" 2002 + dependencies: 2003 + lodash.camelcase: "npm:^4.3.0" 2004 + long: "npm:^5.0.0" 2005 + protobufjs: "npm:^7.2.5" 2006 + yargs: "npm:^17.7.2" 2007 + bin: 2008 + proto-loader-gen-types: build/bin/proto-loader-gen-types.js 2009 + checksum: 10/7e2d842c2061cbaf6450c71da0077263be3bab165454d5c8a3e1ae4d3c6d2915f02fd27da63ff01f05e127b1221acd40705273f5d29303901e60514e852992f4 2010 + languageName: node 2011 + linkType: hard 2012 + 1835 2013 "@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": 1836 2014 version: 9.3.0 1837 2015 resolution: "@hapi/hoek@npm:9.3.0" ··· 1845 2023 dependencies: 1846 2024 "@hapi/hoek": "npm:^9.0.0" 1847 2025 checksum: 10/084bfa647015f4fd3fdd51fadb2747d09ef2f5e1443d6cbada2988b0c88494f85edf257ec606c790db146ac4e34ff57f3fcb22e3299b8e06ed5c87ba7583495c 2026 + languageName: node 2027 + linkType: hard 2028 + 2029 + "@ide/backoff@npm:^1.0.0": 2030 + version: 1.0.0 2031 + resolution: "@ide/backoff@npm:1.0.0" 2032 + checksum: 10/05860fd05952c83e7bc2f23e5f25b9301a60d99254ee4a8d63f5907da0f908af9db718c9027dd2cdaec8203fa05e9dd6afaca767e7e69cefd0a0eef33d9a17ea 1848 2033 languageName: node 1849 2034 linkType: hard 1850 2035 ··· 1992 2177 languageName: node 1993 2178 linkType: hard 1994 2179 2180 + "@js-sdsl/ordered-map@npm:^4.4.2": 2181 + version: 4.4.2 2182 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" 2183 + checksum: 10/ac64e3f0615ecc015461c9f527f124d2edaa9e68de153c1e270c627e01e83d046522d7e872692fd57a8c514578b539afceff75831c0d8b2a9a7a347fbed35af4 2184 + languageName: node 2185 + linkType: hard 2186 + 1995 2187 "@nodelib/fs.scandir@npm:2.1.5": 1996 2188 version: 2.1.5 1997 2189 resolution: "@nodelib/fs.scandir@npm:2.1.5" ··· 2045 2237 version: 0.11.0 2046 2238 resolution: "@pkgjs/parseargs@npm:0.11.0" 2047 2239 checksum: 10/115e8ceeec6bc69dff2048b35c0ab4f8bbee12d8bb6c1f4af758604586d802b6e669dcb02dda61d078de42c2b4ddce41b3d9e726d7daa6b4b850f4adbf7333ff 2240 + languageName: node 2241 + linkType: hard 2242 + 2243 + "@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": 2244 + version: 1.1.2 2245 + resolution: "@protobufjs/aspromise@npm:1.1.2" 2246 + checksum: 10/8a938d84fe4889411296db66b29287bd61ea3c14c2d23e7a8325f46a2b8ce899857c5f038d65d7641805e6c1d06b495525c7faf00c44f85a7ee6476649034969 2247 + languageName: node 2248 + linkType: hard 2249 + 2250 + "@protobufjs/base64@npm:^1.1.2": 2251 + version: 1.1.2 2252 + resolution: "@protobufjs/base64@npm:1.1.2" 2253 + checksum: 10/c71b100daeb3c9bdccab5cbc29495b906ba0ae22ceedc200e1ba49717d9c4ab15a6256839cebb6f9c6acae4ed7c25c67e0a95e734f612b258261d1a3098fe342 2254 + languageName: node 2255 + linkType: hard 2256 + 2257 + "@protobufjs/codegen@npm:^2.0.4": 2258 + version: 2.0.4 2259 + resolution: "@protobufjs/codegen@npm:2.0.4" 2260 + checksum: 10/c6ee5fa172a8464f5253174d3c2353ea520c2573ad7b6476983d9b1346f4d8f2b44aa29feb17a949b83c1816bc35286a5ea265ed9d8fdd2865acfa09668c0447 2261 + languageName: node 2262 + linkType: hard 2263 + 2264 + "@protobufjs/eventemitter@npm:^1.1.0": 2265 + version: 1.1.0 2266 + resolution: "@protobufjs/eventemitter@npm:1.1.0" 2267 + checksum: 10/03af3e99f17ad421283d054c88a06a30a615922a817741b43ca1b13e7c6b37820a37f6eba9980fb5150c54dba6e26cb6f7b64a6f7d8afa83596fafb3afa218c3 2268 + languageName: node 2269 + linkType: hard 2270 + 2271 + "@protobufjs/fetch@npm:^1.1.0": 2272 + version: 1.1.0 2273 + resolution: "@protobufjs/fetch@npm:1.1.0" 2274 + dependencies: 2275 + "@protobufjs/aspromise": "npm:^1.1.1" 2276 + "@protobufjs/inquire": "npm:^1.1.0" 2277 + checksum: 10/67ae40572ad536e4ef94269199f252c024b66e3059850906bdaee161ca1d75c73d04d35cd56f147a8a5a079f5808e342b99e61942c1dae15604ff0600b09a958 2278 + languageName: node 2279 + linkType: hard 2280 + 2281 + "@protobufjs/float@npm:^1.0.2": 2282 + version: 1.0.2 2283 + resolution: "@protobufjs/float@npm:1.0.2" 2284 + checksum: 10/634c2c989da0ef2f4f19373d64187e2a79f598c5fb7991afb689d29a2ea17c14b796b29725945fa34b9493c17fb799e08ac0a7ccaae460ee1757d3083ed35187 2285 + languageName: node 2286 + linkType: hard 2287 + 2288 + "@protobufjs/inquire@npm:^1.1.0": 2289 + version: 1.1.0 2290 + resolution: "@protobufjs/inquire@npm:1.1.0" 2291 + checksum: 10/c09efa34a5465cb120775e1a482136f2340a58b4abce7e93d72b8b5a9324a0e879275016ef9fcd73d72a4731639c54f2bb755bb82f916e4a78892d1d840bb3d2 2292 + languageName: node 2293 + linkType: hard 2294 + 2295 + "@protobufjs/path@npm:^1.1.2": 2296 + version: 1.1.2 2297 + resolution: "@protobufjs/path@npm:1.1.2" 2298 + checksum: 10/bb709567935fd385a86ad1f575aea98131bbd719c743fb9b6edd6b47ede429ff71a801cecbd64fc72deebf4e08b8f1bd8062793178cdaed3713b8d15771f9b83 2299 + languageName: node 2300 + linkType: hard 2301 + 2302 + "@protobufjs/pool@npm:^1.1.0": 2303 + version: 1.1.0 2304 + resolution: "@protobufjs/pool@npm:1.1.0" 2305 + checksum: 10/b9c7047647f6af28e92aac54f6f7c1f7ff31b201b4bfcc7a415b2861528854fce3ec666d7e7e10fd744da905f7d4aef2205bbcc8944ca0ca7a82e18134d00c46 2306 + languageName: node 2307 + linkType: hard 2308 + 2309 + "@protobufjs/utf8@npm:^1.1.0": 2310 + version: 1.1.0 2311 + resolution: "@protobufjs/utf8@npm:1.1.0" 2312 + checksum: 10/131e289c57534c1d73a0e55782d6751dd821db1583cb2f7f7e017c9d6747addaebe79f28120b2e0185395d990aad347fb14ffa73ef4096fa38508d61a0e64602 2048 2313 languageName: node 2049 2314 linkType: hard 2050 2315 ··· 2433 2698 languageName: node 2434 2699 linkType: hard 2435 2700 2701 + "@react-native-firebase/app@npm:^20.1.0": 2702 + version: 20.1.0 2703 + resolution: "@react-native-firebase/app@npm:20.1.0" 2704 + dependencies: 2705 + opencollective-postinstall: "npm:^2.0.3" 2706 + superstruct: "npm:^0.6.2" 2707 + peerDependencies: 2708 + expo: ">=47.0.0" 2709 + react: "*" 2710 + react-native: "*" 2711 + peerDependenciesMeta: 2712 + expo: 2713 + optional: true 2714 + checksum: 10/5a06d1f60fb813f1e114066a03c57e46efd58f753fc7d00cadcd47399a8b9f88f221e2ccb31b5d095b00b06d4921fa3b5be720b67450d69315ea730f7499716e 2715 + languageName: node 2716 + linkType: hard 2717 + 2718 + "@react-native-firebase/messaging@npm:^20.1.0": 2719 + version: 20.1.0 2720 + resolution: "@react-native-firebase/messaging@npm:20.1.0" 2721 + peerDependencies: 2722 + "@react-native-firebase/app": 20.1.0 2723 + expo: ">=47.0.0" 2724 + peerDependenciesMeta: 2725 + expo: 2726 + optional: true 2727 + checksum: 10/8948f45373b58f128c5460fc5786b413b29d07158081f9c381c94fc29e208b1f5f77381eb1c621e161a1ce82a3130287d56db260c7bed3f06e3b07446eb054ec 2728 + languageName: node 2729 + linkType: hard 2730 + 2436 2731 "@react-native/assets-registry@npm:0.74.83": 2437 2732 version: 0.74.83 2438 2733 resolution: "@react-native/assets-registry@npm:0.74.83" ··· 4671 4966 languageName: node 4672 4967 linkType: hard 4673 4968 4969 + "@tootallnate/once@npm:2": 4970 + version: 2.0.0 4971 + resolution: "@tootallnate/once@npm:2.0.0" 4972 + checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 4973 + languageName: node 4974 + linkType: hard 4975 + 4976 + "@types/body-parser@npm:*": 4977 + version: 1.19.5 4978 + resolution: "@types/body-parser@npm:1.19.5" 4979 + dependencies: 4980 + "@types/connect": "npm:*" 4981 + "@types/node": "npm:*" 4982 + checksum: 10/1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 4983 + languageName: node 4984 + linkType: hard 4985 + 4986 + "@types/caseless@npm:*": 4987 + version: 0.12.5 4988 + resolution: "@types/caseless@npm:0.12.5" 4989 + checksum: 10/f6a3628add76d27005495914c9c3873a93536957edaa5b69c63b46fe10b4649a6fecf16b676c1695f46aab851da47ec6047dcf3570fa8d9b6883492ff6d074e0 4990 + languageName: node 4991 + linkType: hard 4992 + 4993 + "@types/connect@npm:*": 4994 + version: 3.4.38 4995 + resolution: "@types/connect@npm:3.4.38" 4996 + dependencies: 4997 + "@types/node": "npm:*" 4998 + checksum: 10/7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 4999 + languageName: node 5000 + linkType: hard 5001 + 4674 5002 "@types/cookie@npm:^0.6.0": 4675 5003 version: 0.6.0 4676 5004 resolution: "@types/cookie@npm:0.6.0" ··· 4678 5006 languageName: node 4679 5007 linkType: hard 4680 5008 5009 + "@types/express-serve-static-core@npm:^4.17.33": 5010 + version: 4.19.5 5011 + resolution: "@types/express-serve-static-core@npm:4.19.5" 5012 + dependencies: 5013 + "@types/node": "npm:*" 5014 + "@types/qs": "npm:*" 5015 + "@types/range-parser": "npm:*" 5016 + "@types/send": "npm:*" 5017 + checksum: 10/49350c6315eeb7d640e13e6138ba6005121b3b610b1e25746fccd5b86b559be810a4ba384b9bd7eee288975b5bd8cf67c1772c646254b812beaa488774eb5513 5018 + languageName: node 5019 + linkType: hard 5020 + 5021 + "@types/express@npm:^4.17.17": 5022 + version: 4.17.21 5023 + resolution: "@types/express@npm:4.17.21" 5024 + dependencies: 5025 + "@types/body-parser": "npm:*" 5026 + "@types/express-serve-static-core": "npm:^4.17.33" 5027 + "@types/qs": "npm:*" 5028 + "@types/serve-static": "npm:*" 5029 + checksum: 10/7a6d26cf6f43d3151caf4fec66ea11c9d23166e4f3102edfe45a94170654a54ea08cf3103d26b3928d7ebcc24162c90488e33986b7e3a5f8941225edd5eb18c7 5030 + languageName: node 5031 + linkType: hard 5032 + 4681 5033 "@types/fs-extra@npm:^9.0.13": 4682 5034 version: 9.0.13 4683 5035 resolution: "@types/fs-extra@npm:9.0.13" 4684 5036 dependencies: 4685 5037 "@types/node": "npm:*" 4686 5038 checksum: 10/ac545e377248039c596ef27d9f277b813507ebdd95d05f32fe7e9c67eb1ed567dafb4ba59f5fdcb6601dd7fd396ff9ba24f8c122e89cef096cdc17987c50a7fa 5039 + languageName: node 5040 + linkType: hard 5041 + 5042 + "@types/http-errors@npm:*": 5043 + version: 2.0.4 5044 + resolution: "@types/http-errors@npm:2.0.4" 5045 + checksum: 10/1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 4687 5046 languageName: node 4688 5047 linkType: hard 4689 5048 ··· 4726 5085 languageName: node 4727 5086 linkType: hard 4728 5087 5088 + "@types/jsonwebtoken@npm:^9.0.2": 5089 + version: 9.0.6 5090 + resolution: "@types/jsonwebtoken@npm:9.0.6" 5091 + dependencies: 5092 + "@types/node": "npm:*" 5093 + checksum: 10/1f2145222f62da1b3dbfc586160c4f9685782a671f4a4f4a72151c773945fe25807fd88ed1c270536b76f49053ed932c5dbf714ea0ed77f785665abb75beef05 5094 + languageName: node 5095 + linkType: hard 5096 + 5097 + "@types/long@npm:^4.0.0": 5098 + version: 4.0.2 5099 + resolution: "@types/long@npm:4.0.2" 5100 + checksum: 10/68afa05fb20949d88345876148a76f6ccff5433310e720db51ac5ca21cb8cc6714286dbe04713840ddbd25a8b56b7a23aa87d08472fabf06463a6f2ed4967707 5101 + languageName: node 5102 + linkType: hard 5103 + 5104 + "@types/mime@npm:^1": 5105 + version: 1.3.5 5106 + resolution: "@types/mime@npm:1.3.5" 5107 + checksum: 10/e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 5108 + languageName: node 5109 + linkType: hard 5110 + 4729 5111 "@types/node-forge@npm:^1.3.0": 4730 5112 version: 1.3.11 4731 5113 resolution: "@types/node-forge@npm:1.3.11" ··· 4735 5117 languageName: node 4736 5118 linkType: hard 4737 5119 4738 - "@types/node@npm:*": 5120 + "@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.10.3": 4739 5121 version: 20.14.10 4740 5122 resolution: "@types/node@npm:20.14.10" 4741 5123 dependencies: ··· 4760 5142 languageName: node 4761 5143 linkType: hard 4762 5144 5145 + "@types/qs@npm:*": 5146 + version: 6.9.15 5147 + resolution: "@types/qs@npm:6.9.15" 5148 + checksum: 10/97d8208c2b82013b618e7a9fc14df6bd40a73e1385ac479b6896bafc7949a46201c15f42afd06e86a05e914f146f495f606b6fb65610cc60cf2e0ff743ec38a2 5149 + languageName: node 5150 + linkType: hard 5151 + 5152 + "@types/range-parser@npm:*": 5153 + version: 1.2.7 5154 + resolution: "@types/range-parser@npm:1.2.7" 5155 + checksum: 10/95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a 5156 + languageName: node 5157 + linkType: hard 5158 + 4763 5159 "@types/react-native@npm:^0.73.0": 4764 5160 version: 0.73.0 4765 5161 resolution: "@types/react-native@npm:0.73.0" ··· 4779 5175 languageName: node 4780 5176 linkType: hard 4781 5177 5178 + "@types/request@npm:^2.48.8": 5179 + version: 2.48.12 5180 + resolution: "@types/request@npm:2.48.12" 5181 + dependencies: 5182 + "@types/caseless": "npm:*" 5183 + "@types/node": "npm:*" 5184 + "@types/tough-cookie": "npm:*" 5185 + form-data: "npm:^2.5.0" 5186 + checksum: 10/a7b3f9f14cacc18fe235bb8e57eff1232a04bd3fa3dad29371f24a5d96db2cd295a0c8b6b34ed7efa3efbbcff845febb02c9635cd68c54811c947ea66ae22090 5187 + languageName: node 5188 + linkType: hard 5189 + 5190 + "@types/send@npm:*": 5191 + version: 0.17.4 5192 + resolution: "@types/send@npm:0.17.4" 5193 + dependencies: 5194 + "@types/mime": "npm:^1" 5195 + "@types/node": "npm:*" 5196 + checksum: 10/28320a2aa1eb704f7d96a65272a07c0bf3ae7ed5509c2c96ea5e33238980f71deeed51d3631927a77d5250e4091b3e66bce53b42d770873282c6a20bb8b0280d 5197 + languageName: node 5198 + linkType: hard 5199 + 5200 + "@types/serve-static@npm:*": 5201 + version: 1.15.7 5202 + resolution: "@types/serve-static@npm:1.15.7" 5203 + dependencies: 5204 + "@types/http-errors": "npm:*" 5205 + "@types/node": "npm:*" 5206 + "@types/send": "npm:*" 5207 + checksum: 10/c5a7171d5647f9fbd096ed1a26105759f3153ccf683824d99fee4c7eb9cde2953509621c56a070dd9fb1159e799e86d300cbe4e42245ebc5b0c1767e8ca94a67 5208 + languageName: node 5209 + linkType: hard 5210 + 4782 5211 "@types/stack-utils@npm:^2.0.0": 4783 5212 version: 2.0.3 4784 5213 resolution: "@types/stack-utils@npm:2.0.3" 4785 5214 checksum: 10/72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 5215 + languageName: node 5216 + linkType: hard 5217 + 5218 + "@types/tough-cookie@npm:*": 5219 + version: 4.0.5 5220 + resolution: "@types/tough-cookie@npm:4.0.5" 5221 + checksum: 10/01fd82efc8202670865928629697b62fe9bf0c0dcbc5b1c115831caeb073a2c0abb871ff393d7df1ae94ea41e256cb87d2a5a91fd03cdb1b0b4384e08d4ee482 4786 5222 languageName: node 4787 5223 linkType: hard 4788 5224 ··· 4961 5397 languageName: node 4962 5398 linkType: hard 4963 5399 4964 - "ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.9.0": 5400 + "ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.11.0, ajv@npm:^8.9.0": 4965 5401 version: 8.16.0 4966 5402 resolution: "ajv@npm:8.16.0" 4967 5403 dependencies: ··· 5095 5531 version: 0.0.0-use.local 5096 5532 resolution: "aquareum-monorepo@workspace:." 5097 5533 dependencies: 5534 + firebase-admin: "npm:^12.2.0" 5098 5535 husky: "npm:^9.0.11" 5099 5536 lint-staged: "npm:^15.2.7" 5100 5537 prettier: "npm:^3.3.2" ··· 5108 5545 "@babel/core": "npm:^7.24.6" 5109 5546 "@expo/metro-config": "npm:~0.18.4" 5110 5547 "@expo/metro-runtime": "npm:~3.2.1" 5548 + "@react-native-firebase/app": "npm:^20.1.0" 5549 + "@react-native-firebase/messaging": "npm:^20.1.0" 5111 5550 "@react-navigation/native": "npm:^6.1.17" 5112 5551 "@tamagui/babel-plugin": "npm:^1.100.6" 5113 5552 "@tamagui/config": "npm:^1.100.6" ··· 5120 5559 burnt: "npm:^0.12.2" 5121 5560 chrono-node: "npm:^2.7.6" 5122 5561 expo: "npm:~51.0.9" 5562 + expo-build-properties: "npm:^0.12.3" 5123 5563 expo-font: "npm:~12.0.6" 5124 5564 expo-linking: "npm:~6.3.1" 5565 + expo-notifications: "npm:~0.28.9" 5125 5566 expo-router: "npm:~3.5.15" 5126 5567 expo-splash-screen: "npm:~0.27.4" 5127 5568 expo-status-bar: "npm:^1.12.1" ··· 5214 5655 languageName: node 5215 5656 linkType: hard 5216 5657 5658 + "arrify@npm:^2.0.0": 5659 + version: 2.0.1 5660 + resolution: "arrify@npm:2.0.1" 5661 + checksum: 10/067c4c1afd182806a82e4c1cb8acee16ab8b5284fbca1ce29408e6e91281c36bb5b612f6ddfbd40a0f7a7e0c75bf2696eb94c027f6e328d6e9c52465c98e4209 5662 + languageName: node 5663 + linkType: hard 5664 + 5217 5665 "asap@npm:~2.0.3, asap@npm:~2.0.6": 5218 5666 version: 2.0.6 5219 5667 resolution: "asap@npm:2.0.6" ··· 5221 5669 languageName: node 5222 5670 linkType: hard 5223 5671 5672 + "assert@npm:^2.0.0": 5673 + version: 2.1.0 5674 + resolution: "assert@npm:2.1.0" 5675 + dependencies: 5676 + call-bind: "npm:^1.0.2" 5677 + is-nan: "npm:^1.3.2" 5678 + object-is: "npm:^1.1.5" 5679 + object.assign: "npm:^4.1.4" 5680 + util: "npm:^0.12.5" 5681 + checksum: 10/6b9d813c8eef1c0ac13feac5553972e4bd180ae16000d4eb5c0ded2489188737c75a5aacefc97a985008b37502f62fe1bad34da1a7481a54bbfabec3964c8aa7 5682 + languageName: node 5683 + linkType: hard 5684 + 5224 5685 "ast-types@npm:0.15.2": 5225 5686 version: 0.15.2 5226 5687 resolution: "ast-types@npm:0.15.2" ··· 5248 5709 version: 1.0.1 5249 5710 resolution: "async-limiter@npm:1.0.1" 5250 5711 checksum: 10/2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b 5712 + languageName: node 5713 + linkType: hard 5714 + 5715 + "async-retry@npm:^1.3.3": 5716 + version: 1.3.3 5717 + resolution: "async-retry@npm:1.3.3" 5718 + dependencies: 5719 + retry: "npm:0.13.1" 5720 + checksum: 10/38a7152ff7265a9321ea214b9c69e8224ab1febbdec98efbbde6e562f17ff68405569b796b1c5271f354aef8783665d29953f051f68c1fc45306e61aec82fdc4 5251 5721 languageName: node 5252 5722 linkType: hard 5253 5723 ··· 5397 5867 languageName: node 5398 5868 linkType: hard 5399 5869 5870 + "badgin@npm:^1.1.5": 5871 + version: 1.2.3 5872 + resolution: "badgin@npm:1.2.3" 5873 + checksum: 10/14465ad87d9e949e825120db14fc351d39ba66a51396ae4fede2a55505ddc75c7d1a30ac28f2583896e76ed76ddb725a2038f9d7fe9404c0abc038bad58b1e53 5874 + languageName: node 5875 + linkType: hard 5876 + 5400 5877 "balanced-match@npm:^1.0.0": 5401 5878 version: 1.0.2 5402 5879 resolution: "balanced-match@npm:1.0.2" ··· 5404 5881 languageName: node 5405 5882 linkType: hard 5406 5883 5407 - "base64-js@npm:^1.2.3, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": 5884 + "base64-js@npm:^1.2.3, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": 5408 5885 version: 1.5.1 5409 5886 resolution: "base64-js@npm:1.5.1" 5410 5887 checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 ··· 5424 5901 version: 1.6.52 5425 5902 resolution: "big-integer@npm:1.6.52" 5426 5903 checksum: 10/4bc6ae152a96edc9f95020f5fc66b13d26a9ad9a021225a9f0213f7e3dc44269f423aa8c42e19d6ac4a63bb2b22140b95d10be8f9ca7a6d9aa1b22b330d1f514 5904 + languageName: node 5905 + linkType: hard 5906 + 5907 + "bignumber.js@npm:^9.0.0": 5908 + version: 9.1.2 5909 + resolution: "bignumber.js@npm:9.1.2" 5910 + checksum: 10/d89b8800a987225d2c00dcbf8a69dc08e92aa0880157c851c287b307d31ceb2fc2acb0c62c3e3a3d42b6c5fcae9b004035f13eb4386e56d529d7edac18d5c9d8 5427 5911 languageName: node 5428 5912 linkType: hard 5429 5913 ··· 5544 6028 buffer-alloc-unsafe: "npm:^1.1.0" 5545 6029 buffer-fill: "npm:^1.0.0" 5546 6030 checksum: 10/560cd27f3cbe73c614867da373407d4506309c62fe18de45a1ce191f3785ec6ca2488d802ff82065798542422980ca25f903db078c57822218182c37c3576df5 6031 + languageName: node 6032 + linkType: hard 6033 + 6034 + "buffer-equal-constant-time@npm:1.0.1": 6035 + version: 1.0.1 6036 + resolution: "buffer-equal-constant-time@npm:1.0.1" 6037 + checksum: 10/80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab 5547 6038 languageName: node 5548 6039 linkType: hard 5549 6040 ··· 5619 6110 languageName: node 5620 6111 linkType: hard 5621 6112 5622 - "call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": 6113 + "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": 5623 6114 version: 1.0.7 5624 6115 resolution: "call-bind@npm:1.0.7" 5625 6116 dependencies: ··· 5875 6366 languageName: node 5876 6367 linkType: hard 5877 6368 6369 + "clone-deep@npm:^2.0.1": 6370 + version: 2.0.2 6371 + resolution: "clone-deep@npm:2.0.2" 6372 + dependencies: 6373 + for-own: "npm:^1.0.0" 6374 + is-plain-object: "npm:^2.0.4" 6375 + kind-of: "npm:^6.0.0" 6376 + shallow-clone: "npm:^1.0.0" 6377 + checksum: 10/c33ae31e332cdfd477a8115c9d044984eb69bf009fce3e1f0ff002176652f572d8742aa5e6caeaf16cf5d6084e33fe51bfa482fec53f43e767b3518c797955b1 6378 + languageName: node 6379 + linkType: hard 6380 + 5878 6381 "clone-deep@npm:^4.0.1": 5879 6382 version: 4.0.1 5880 6383 resolution: "clone-deep@npm:4.0.1" ··· 5973 6476 languageName: node 5974 6477 linkType: hard 5975 6478 5976 - "combined-stream@npm:^1.0.8": 6479 + "combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8": 5977 6480 version: 1.0.8 5978 6481 resolution: "combined-stream@npm:1.0.8" 5979 6482 dependencies: ··· 6411 6914 languageName: node 6412 6915 linkType: hard 6413 6916 6414 - "define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": 6917 + "define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": 6415 6918 version: 1.2.1 6416 6919 resolution: "define-properties@npm:1.2.1" 6417 6920 dependencies: ··· 6545 7048 languageName: node 6546 7049 linkType: hard 6547 7050 7051 + "duplexify@npm:^4.0.0, duplexify@npm:^4.1.3": 7052 + version: 4.1.3 7053 + resolution: "duplexify@npm:4.1.3" 7054 + dependencies: 7055 + end-of-stream: "npm:^1.4.1" 7056 + inherits: "npm:^2.0.3" 7057 + readable-stream: "npm:^3.1.1" 7058 + stream-shift: "npm:^1.0.2" 7059 + checksum: 10/b44b98ba0ffac3a658b4b1bf877219e996db288c5ae6f3dc55ca9b2cbef7df60c10eabfdd947f3d73a623eb9975a74a66d6d61e6f26bff90155315adb362aa77 7060 + languageName: node 7061 + linkType: hard 7062 + 6548 7063 "eastasianwidth@npm:^0.2.0": 6549 7064 version: 0.2.0 6550 7065 resolution: "eastasianwidth@npm:0.2.0" 6551 7066 checksum: 10/9b1d3e1baefeaf7d70799db8774149cef33b97183a6addceeba0cf6b85ba23ee2686f302f14482006df32df75d32b17c509c143a3689627929e4a8efaf483952 7067 + languageName: node 7068 + linkType: hard 7069 + 7070 + "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": 7071 + version: 1.0.11 7072 + resolution: "ecdsa-sig-formatter@npm:1.0.11" 7073 + dependencies: 7074 + safe-buffer: "npm:^5.0.1" 7075 + checksum: 10/878e1aab8a42773320bc04c6de420bee21aebd71810e40b1799880a8a1c4594bcd6adc3d4213a0fb8147d4c3f529d8f9a618d7f59ad5a9a41b142058aceda23f 6552 7076 languageName: node 6553 7077 linkType: hard 6554 7078 ··· 6616 7140 languageName: node 6617 7141 linkType: hard 6618 7142 6619 - "end-of-stream@npm:^1.1.0": 7143 + "end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": 6620 7144 version: 1.4.4 6621 7145 resolution: "end-of-stream@npm:1.4.4" 6622 7146 dependencies: ··· 7034 7558 languageName: node 7035 7559 linkType: hard 7036 7560 7561 + "expo-application@npm:~5.9.0": 7562 + version: 5.9.1 7563 + resolution: "expo-application@npm:5.9.1" 7564 + peerDependencies: 7565 + expo: "*" 7566 + checksum: 10/802463b96110021fb1a0f7a126fb773c152dd37b15c620e2b7be55d70aee544439f156582b75d145b955c43a8bc9690f10d7b7d8fbfcb7af7718e79fac1149d7 7567 + languageName: node 7568 + linkType: hard 7569 + 7037 7570 "expo-asset@npm:~10.0.10": 7038 7571 version: 10.0.10 7039 7572 resolution: "expo-asset@npm:10.0.10" ··· 7044 7577 peerDependencies: 7045 7578 expo: "*" 7046 7579 checksum: 10/6b1f90216ea5e2c785193528bdf2d5855f7089a39235149793130de77fa49b91ed4b6c131935e035598c08859b0fe0f7279a444f7c88d1261389dff303266409 7580 + languageName: node 7581 + linkType: hard 7582 + 7583 + "expo-build-properties@npm:^0.12.3": 7584 + version: 0.12.3 7585 + resolution: "expo-build-properties@npm:0.12.3" 7586 + dependencies: 7587 + ajv: "npm:^8.11.0" 7588 + semver: "npm:^7.6.0" 7589 + peerDependencies: 7590 + expo: "*" 7591 + checksum: 10/c59a3f7d65f7542f4e44e0468efb156d667a984e218afc8f70df093a22e8f5f8dd13dd7afae1d7a6e3a44646f867a179be03cd1996c8dd41fd97b327e3c7bb90 7047 7592 languageName: node 7048 7593 linkType: hard 7049 7594 ··· 7148 7693 languageName: node 7149 7694 linkType: hard 7150 7695 7696 + "expo-notifications@npm:~0.28.9": 7697 + version: 0.28.9 7698 + resolution: "expo-notifications@npm:0.28.9" 7699 + dependencies: 7700 + "@expo/image-utils": "npm:^0.5.0" 7701 + "@ide/backoff": "npm:^1.0.0" 7702 + abort-controller: "npm:^3.0.0" 7703 + assert: "npm:^2.0.0" 7704 + badgin: "npm:^1.1.5" 7705 + expo-application: "npm:~5.9.0" 7706 + expo-constants: "npm:~16.0.0" 7707 + fs-extra: "npm:^9.1.0" 7708 + peerDependencies: 7709 + expo: "*" 7710 + checksum: 10/96fd51b274e08ea4bd31a6fb877540fcfb03f52d218a06b0e3444bf07857e678efacd45d0b5599e21221fd2b5044ef1c82f504369d1e980285cc41b7cb2707fc 7711 + languageName: node 7712 + linkType: hard 7713 + 7151 7714 "expo-router@npm:~3.5.15": 7152 7715 version: 3.5.17 7153 7716 resolution: "expo-router@npm:3.5.17" ··· 7295 7858 languageName: node 7296 7859 linkType: hard 7297 7860 7298 - "fast-deep-equal@npm:^3.1.3": 7861 + "extend@npm:^3.0.2": 7862 + version: 3.0.2 7863 + resolution: "extend@npm:3.0.2" 7864 + checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e 7865 + languageName: node 7866 + linkType: hard 7867 + 7868 + "farmhash-modern@npm:^1.1.0": 7869 + version: 1.1.0 7870 + resolution: "farmhash-modern@npm:1.1.0" 7871 + checksum: 10/48db630b5890556678cc5da85bb284b9bd65846bb60e10163d250d66533860a50cb2c84b4b6a97f784eb2a9ff3aef5b65c4a83734601518f13f6c99fd62009ad 7872 + languageName: node 7873 + linkType: hard 7874 + 7875 + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": 7299 7876 version: 3.1.3 7300 7877 resolution: "fast-deep-equal@npm:3.1.3" 7301 7878 checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d ··· 7322 7899 languageName: node 7323 7900 linkType: hard 7324 7901 7325 - "fast-xml-parser@npm:^4.0.12, fast-xml-parser@npm:^4.2.4": 7902 + "fast-xml-parser@npm:^4.0.12, fast-xml-parser@npm:^4.2.4, fast-xml-parser@npm:^4.3.0": 7326 7903 version: 4.4.0 7327 7904 resolution: "fast-xml-parser@npm:4.4.0" 7328 7905 dependencies: ··· 7339 7916 dependencies: 7340 7917 reusify: "npm:^1.0.4" 7341 7918 checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69 7919 + languageName: node 7920 + linkType: hard 7921 + 7922 + "faye-websocket@npm:0.11.4": 7923 + version: 0.11.4 7924 + resolution: "faye-websocket@npm:0.11.4" 7925 + dependencies: 7926 + websocket-driver: "npm:>=0.5.1" 7927 + checksum: 10/22433c14c60925e424332d2794463a8da1c04848539b5f8db5fced62a7a7c71a25335a4a8b37334e3a32318835e2b87b1733d008561964121c4a0bd55f0878c3 7342 7928 languageName: node 7343 7929 linkType: hard 7344 7930 ··· 7494 8080 languageName: node 7495 8081 linkType: hard 7496 8082 8083 + "firebase-admin@npm:^12.2.0": 8084 + version: 12.2.0 8085 + resolution: "firebase-admin@npm:12.2.0" 8086 + dependencies: 8087 + "@fastify/busboy": "npm:^2.1.0" 8088 + "@firebase/database-compat": "npm:^1.0.2" 8089 + "@firebase/database-types": "npm:^1.0.0" 8090 + "@google-cloud/firestore": "npm:^7.7.0" 8091 + "@google-cloud/storage": "npm:^7.7.0" 8092 + "@types/node": "npm:^20.10.3" 8093 + farmhash-modern: "npm:^1.1.0" 8094 + jsonwebtoken: "npm:^9.0.0" 8095 + jwks-rsa: "npm:^3.1.0" 8096 + long: "npm:^5.2.3" 8097 + node-forge: "npm:^1.3.1" 8098 + uuid: "npm:^10.0.0" 8099 + dependenciesMeta: 8100 + "@google-cloud/firestore": 8101 + optional: true 8102 + "@google-cloud/storage": 8103 + optional: true 8104 + checksum: 10/ef901d47d208063e25c79bc92742fd21eaa8c92a0b84ec83a2c8a54d6c0e774c109c611592dc822b84e369a3bc085f83ce173ec12a28881a69ec10ddc0598acf 8105 + languageName: node 8106 + linkType: hard 8107 + 7497 8108 "flow-enums-runtime@npm:^0.0.6": 7498 8109 version: 0.0.6 7499 8110 resolution: "flow-enums-runtime@npm:0.0.6" ··· 7524 8135 languageName: node 7525 8136 linkType: hard 7526 8137 8138 + "for-in@npm:^0.1.3": 8139 + version: 0.1.8 8140 + resolution: "for-in@npm:0.1.8" 8141 + checksum: 10/f5bdad7811700ee6a0f96b33d72a1db966aea75a1f03c7245d147f8369305e709f53a55ee7ae8eaddcfa85c7c89bca78472be8f1bc605475ce5bb2c70f77f8da 8142 + languageName: node 8143 + linkType: hard 8144 + 8145 + "for-in@npm:^1.0.1": 8146 + version: 1.0.2 8147 + resolution: "for-in@npm:1.0.2" 8148 + checksum: 10/09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d 8149 + languageName: node 8150 + linkType: hard 8151 + 8152 + "for-own@npm:^1.0.0": 8153 + version: 1.0.0 8154 + resolution: "for-own@npm:1.0.0" 8155 + dependencies: 8156 + for-in: "npm:^1.0.1" 8157 + checksum: 10/233238f6e9060f61295a7f7c7e3e9de11aaef57e82a108e7f350dc92ae84fe2189848077ac4b8db47fd8edd45337ed8d9f66bd0b1efa4a6a1b3f38aa21b7ab2e 8158 + languageName: node 8159 + linkType: hard 8160 + 7527 8161 "foreground-child@npm:^3.1.0": 7528 8162 version: 3.2.1 7529 8163 resolution: "foreground-child@npm:3.2.1" ··· 7534 8168 languageName: node 7535 8169 linkType: hard 7536 8170 8171 + "form-data@npm:^2.5.0": 8172 + version: 2.5.1 8173 + resolution: "form-data@npm:2.5.1" 8174 + dependencies: 8175 + asynckit: "npm:^0.4.0" 8176 + combined-stream: "npm:^1.0.6" 8177 + mime-types: "npm:^2.1.12" 8178 + checksum: 10/2e2e5e927979ba3623f9b4c4bcc939275fae3f2dea9dafc8db3ca656a3d75476605de2c80f0e6f1487987398e056f0b4c738972d6e1edd83392d5686d0952eed 8179 + languageName: node 8180 + linkType: hard 8181 + 7537 8182 "form-data@npm:^3.0.1": 7538 8183 version: 3.0.1 7539 8184 resolution: "form-data@npm:3.0.1" ··· 7668 8313 languageName: node 7669 8314 linkType: hard 7670 8315 8316 + "functional-red-black-tree@npm:^1.0.1": 8317 + version: 1.0.1 8318 + resolution: "functional-red-black-tree@npm:1.0.1" 8319 + checksum: 10/debe73e92204341d1fa5f89614e44284d3add26dee660722978d8c50829170f87d1c74768f68c251d215ae461c11db7bac13101c77f4146ff051da75466f7a12 8320 + languageName: node 8321 + linkType: hard 8322 + 7671 8323 "functions-have-names@npm:^1.2.3": 7672 8324 version: 1.2.3 7673 8325 resolution: "functions-have-names@npm:1.2.3" 7674 8326 checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 8327 + languageName: node 8328 + linkType: hard 8329 + 8330 + "gaxios@npm:^6.0.0, gaxios@npm:^6.0.2, gaxios@npm:^6.1.1": 8331 + version: 6.7.0 8332 + resolution: "gaxios@npm:6.7.0" 8333 + dependencies: 8334 + extend: "npm:^3.0.2" 8335 + https-proxy-agent: "npm:^7.0.1" 8336 + is-stream: "npm:^2.0.0" 8337 + node-fetch: "npm:^2.6.9" 8338 + uuid: "npm:^10.0.0" 8339 + checksum: 10/7ec9a430f6e13730dd957bc5971c74c738e7fdc6f6146c85c8fc353c1d5d036c188e2c5acf1f3806c5e3034f987b4d83ef705642ec9b60b73888927ffd1424c3 8340 + languageName: node 8341 + linkType: hard 8342 + 8343 + "gcp-metadata@npm:^6.1.0": 8344 + version: 6.1.0 8345 + resolution: "gcp-metadata@npm:6.1.0" 8346 + dependencies: 8347 + gaxios: "npm:^6.0.0" 8348 + json-bigint: "npm:^1.0.0" 8349 + checksum: 10/a0d12a9cb7499fdb9de0fff5406aa220310c1326b80056be8d9b747aae26414f99d14bd795c0ec52ef7d0473eef9d61bb657b8cd3d8186c8a84c4ddbff025fe9 7675 8350 languageName: node 7676 8351 linkType: hard 7677 8352 ··· 7874 8549 languageName: node 7875 8550 linkType: hard 7876 8551 8552 + "google-auth-library@npm:^9.3.0, google-auth-library@npm:^9.6.3": 8553 + version: 9.11.0 8554 + resolution: "google-auth-library@npm:9.11.0" 8555 + dependencies: 8556 + base64-js: "npm:^1.3.0" 8557 + ecdsa-sig-formatter: "npm:^1.0.11" 8558 + gaxios: "npm:^6.1.1" 8559 + gcp-metadata: "npm:^6.1.0" 8560 + gtoken: "npm:^7.0.0" 8561 + jws: "npm:^4.0.0" 8562 + checksum: 10/450de7104c906a3e7aecaed75d1935e2a04f4305958e7de06d0019bd740e572fb8c329926d200e8c99b09be914ed16622d7a6ba5142c2c3da37ae81001ba17d0 8563 + languageName: node 8564 + linkType: hard 8565 + 8566 + "google-gax@npm:^4.3.3": 8567 + version: 4.3.8 8568 + resolution: "google-gax@npm:4.3.8" 8569 + dependencies: 8570 + "@grpc/grpc-js": "npm:^1.10.9" 8571 + "@grpc/proto-loader": "npm:^0.7.13" 8572 + "@types/long": "npm:^4.0.0" 8573 + abort-controller: "npm:^3.0.0" 8574 + duplexify: "npm:^4.0.0" 8575 + google-auth-library: "npm:^9.3.0" 8576 + node-fetch: "npm:^2.6.1" 8577 + object-hash: "npm:^3.0.0" 8578 + proto3-json-serializer: "npm:^2.0.2" 8579 + protobufjs: "npm:^7.3.2" 8580 + retry-request: "npm:^7.0.0" 8581 + uuid: "npm:^9.0.1" 8582 + checksum: 10/6a2a6f1803c7ff7438131fec79f42b3a39af796069f23b7d940656430e710ef0207ca26fe2f828d217d5183145c4608a3a07649f1e5495ef31713cb041d38163 8583 + languageName: node 8584 + linkType: hard 8585 + 7877 8586 "gopd@npm:^1.0.1": 7878 8587 version: 1.0.1 7879 8588 resolution: "gopd@npm:1.0.1" ··· 7908 8617 languageName: node 7909 8618 linkType: hard 7910 8619 8620 + "gtoken@npm:^7.0.0": 8621 + version: 7.1.0 8622 + resolution: "gtoken@npm:7.1.0" 8623 + dependencies: 8624 + gaxios: "npm:^6.0.0" 8625 + jws: "npm:^4.0.0" 8626 + checksum: 10/640392261e55c9242137a81a4af8feb053b57061762cedddcbb6a0d62c2314316161808ac2529eea67d06d69fdc56d82361af50f2d840a04a87ea29e124d7382 8627 + languageName: node 8628 + linkType: hard 8629 + 7911 8630 "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": 7912 8631 version: 1.0.2 7913 8632 resolution: "has-bigints@npm:1.0.2" ··· 8020 8739 languageName: node 8021 8740 linkType: hard 8022 8741 8742 + "html-entities@npm:^2.5.2": 8743 + version: 2.5.2 8744 + resolution: "html-entities@npm:2.5.2" 8745 + checksum: 10/4ec12ebdf2d5ba8192c68e1aef3c1e4a4f36b29246a0a88464fe278a54517d0196d3489af46a3145c7ecacb4fc5fd50497be19eb713b810acab3f0efcf36fdc2 8746 + languageName: node 8747 + linkType: hard 8748 + 8023 8749 "http-cache-semantics@npm:^4.1.1": 8024 8750 version: 4.1.1 8025 8751 resolution: "http-cache-semantics@npm:4.1.1" ··· 8040 8766 languageName: node 8041 8767 linkType: hard 8042 8768 8769 + "http-parser-js@npm:>=0.5.1": 8770 + version: 0.5.8 8771 + resolution: "http-parser-js@npm:0.5.8" 8772 + checksum: 10/2a78a567ee6366dae0129d819b799dce1f95ec9732c5ab164a78ee69804ffb984abfa0660274e94e890fc54af93546eb9f12b6d10edbaed017e2d41c29b7cf29 8773 + languageName: node 8774 + linkType: hard 8775 + 8776 + "http-proxy-agent@npm:^5.0.0": 8777 + version: 5.0.0 8778 + resolution: "http-proxy-agent@npm:5.0.0" 8779 + dependencies: 8780 + "@tootallnate/once": "npm:2" 8781 + agent-base: "npm:6" 8782 + debug: "npm:4" 8783 + checksum: 10/5ee19423bc3e0fd5f23ce991b0755699ad2a46a440ce9cec99e8126bb98448ad3479d2c0ea54be5519db5b19a4ffaa69616bac01540db18506dd4dac3dc418f0 8784 + languageName: node 8785 + linkType: hard 8786 + 8043 8787 "http-proxy-agent@npm:^7.0.0": 8044 8788 version: 7.0.2 8045 8789 resolution: "http-proxy-agent@npm:7.0.2" ··· 8050 8794 languageName: node 8051 8795 linkType: hard 8052 8796 8053 - "https-proxy-agent@npm:^5.0.1": 8797 + "https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": 8054 8798 version: 5.0.1 8055 8799 resolution: "https-proxy-agent@npm:5.0.1" 8056 8800 dependencies: ··· 8365 9109 languageName: node 8366 9110 linkType: hard 8367 9111 9112 + "is-extendable@npm:^0.1.1": 9113 + version: 0.1.1 9114 + resolution: "is-extendable@npm:0.1.1" 9115 + checksum: 10/3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 9116 + languageName: node 9117 + linkType: hard 9118 + 8368 9119 "is-extglob@npm:^1.0.0": 8369 9120 version: 1.0.0 8370 9121 resolution: "is-extglob@npm:1.0.0" ··· 8459 9210 languageName: node 8460 9211 linkType: hard 8461 9212 9213 + "is-nan@npm:^1.3.2": 9214 + version: 1.3.2 9215 + resolution: "is-nan@npm:1.3.2" 9216 + dependencies: 9217 + call-bind: "npm:^1.0.0" 9218 + define-properties: "npm:^1.1.3" 9219 + checksum: 10/1f784d3472c09bc2e47acba7ffd4f6c93b0394479aa613311dc1d70f1bfa72eb0846c81350967722c959ba65811bae222204d6c65856fdce68f31986140c7b0e 9220 + languageName: node 9221 + linkType: hard 9222 + 8462 9223 "is-negative-zero@npm:^2.0.3": 8463 9224 version: 2.0.3 8464 9225 resolution: "is-negative-zero@npm:2.0.3" ··· 8791 9552 languageName: node 8792 9553 linkType: hard 8793 9554 9555 + "jose@npm:^4.14.6": 9556 + version: 4.15.9 9557 + resolution: "jose@npm:4.15.9" 9558 + checksum: 10/256234b6f85cdc080b1331f2d475bd58c8ccf459cb20f70ac5e4200b271bce10002b1c2f8e5b96dd975d83065ae5a586d52cdf89d28471d56de5d297992f9905 9559 + languageName: node 9560 + linkType: hard 9561 + 8794 9562 "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": 8795 9563 version: 4.0.0 8796 9564 resolution: "js-tokens@npm:4.0.0" ··· 8891 9659 languageName: node 8892 9660 linkType: hard 8893 9661 9662 + "json-bigint@npm:^1.0.0": 9663 + version: 1.0.0 9664 + resolution: "json-bigint@npm:1.0.0" 9665 + dependencies: 9666 + bignumber.js: "npm:^9.0.0" 9667 + checksum: 10/cd3973b88e5706f8f89d2a9c9431f206ef385bd5c584db1b258891a5e6642507c32316b82745239088c697f5ddfe967351e1731f5789ba7855aed56ad5f70e1f 9668 + languageName: node 9669 + linkType: hard 9670 + 8894 9671 "json-parse-better-errors@npm:^1.0.1": 8895 9672 version: 1.0.2 8896 9673 resolution: "json-parse-better-errors@npm:1.0.2" ··· 8955 9732 languageName: node 8956 9733 linkType: hard 8957 9734 8958 - "kind-of@npm:^6.0.2": 9735 + "jsonwebtoken@npm:^9.0.0": 9736 + version: 9.0.2 9737 + resolution: "jsonwebtoken@npm:9.0.2" 9738 + dependencies: 9739 + jws: "npm:^3.2.2" 9740 + lodash.includes: "npm:^4.3.0" 9741 + lodash.isboolean: "npm:^3.0.3" 9742 + lodash.isinteger: "npm:^4.0.4" 9743 + lodash.isnumber: "npm:^3.0.3" 9744 + lodash.isplainobject: "npm:^4.0.6" 9745 + lodash.isstring: "npm:^4.0.1" 9746 + lodash.once: "npm:^4.0.0" 9747 + ms: "npm:^2.1.1" 9748 + semver: "npm:^7.5.4" 9749 + checksum: 10/6e9b6d879cec2b27f2f3a88a0c0973edc7ba956a5d9356b2626c4fddfda969e34a3832deaf79c3e1c6c9a525bc2c4f2c2447fa477f8ac660f0017c31a59ae96b 9750 + languageName: node 9751 + linkType: hard 9752 + 9753 + "jwa@npm:^1.4.1": 9754 + version: 1.4.1 9755 + resolution: "jwa@npm:1.4.1" 9756 + dependencies: 9757 + buffer-equal-constant-time: "npm:1.0.1" 9758 + ecdsa-sig-formatter: "npm:1.0.11" 9759 + safe-buffer: "npm:^5.0.1" 9760 + checksum: 10/0bc002b71dd70480fedc7d442a4d2b9185a9947352a027dcb4935864ad2323c57b5d391adf968a3622b61e940cef4f3484d5813b95864539272d41cac145d6f3 9761 + languageName: node 9762 + linkType: hard 9763 + 9764 + "jwa@npm:^2.0.0": 9765 + version: 2.0.0 9766 + resolution: "jwa@npm:2.0.0" 9767 + dependencies: 9768 + buffer-equal-constant-time: "npm:1.0.1" 9769 + ecdsa-sig-formatter: "npm:1.0.11" 9770 + safe-buffer: "npm:^5.0.1" 9771 + checksum: 10/ab983f6685d99d13ddfbffef9b1c66309a536362a8412d49ba6e687d834a1240ce39290f30ac7dbe241e0ab6c76fee7ff795776ce534e11d148158c9b7193498 9772 + languageName: node 9773 + linkType: hard 9774 + 9775 + "jwks-rsa@npm:^3.1.0": 9776 + version: 3.1.0 9777 + resolution: "jwks-rsa@npm:3.1.0" 9778 + dependencies: 9779 + "@types/express": "npm:^4.17.17" 9780 + "@types/jsonwebtoken": "npm:^9.0.2" 9781 + debug: "npm:^4.3.4" 9782 + jose: "npm:^4.14.6" 9783 + limiter: "npm:^1.1.5" 9784 + lru-memoizer: "npm:^2.2.0" 9785 + checksum: 10/004883b3f2c9b12d3dd364acd6be3198343b1ca89fd51c9bc03473a2555282ebb4c374cd391847bbd46eaab19ac19a2e518787683707444c0506fcf7ac4cae97 9786 + languageName: node 9787 + linkType: hard 9788 + 9789 + "jws@npm:^3.2.2": 9790 + version: 3.2.2 9791 + resolution: "jws@npm:3.2.2" 9792 + dependencies: 9793 + jwa: "npm:^1.4.1" 9794 + safe-buffer: "npm:^5.0.1" 9795 + checksum: 10/70b016974af8a76d25030c80a0097b24ed5b17a9cf10f43b163c11cb4eb248d5d04a3fe48c0d724d2884c32879d878ccad7be0663720f46b464f662f7ed778fe 9796 + languageName: node 9797 + linkType: hard 9798 + 9799 + "jws@npm:^4.0.0": 9800 + version: 4.0.0 9801 + resolution: "jws@npm:4.0.0" 9802 + dependencies: 9803 + jwa: "npm:^2.0.0" 9804 + safe-buffer: "npm:^5.0.1" 9805 + checksum: 10/1d15f4cdea376c6bd6a81002bd2cb0bf3d51d83da8f0727947b5ba3e10cf366721b8c0d099bf8c1eb99eb036e2c55e5fd5efd378ccff75a2b4e0bd10002348b9 9806 + languageName: node 9807 + linkType: hard 9808 + 9809 + "kind-of@npm:^5.0.0": 9810 + version: 5.1.0 9811 + resolution: "kind-of@npm:5.1.0" 9812 + checksum: 10/acf7cc73881f27629f700a80de77ff7fe4abc9430eac7ddb09117f75126e578ee8d7e44c4dacb6a9e802d5d881abf007ee6af3cfbe55f8b5cf0a7fdc49a02aa3 9813 + languageName: node 9814 + linkType: hard 9815 + 9816 + "kind-of@npm:^6.0.0, kind-of@npm:^6.0.1, kind-of@npm:^6.0.2": 8959 9817 version: 6.0.3 8960 9818 resolution: "kind-of@npm:6.0.3" 8961 9819 checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962 ··· 9183 10041 languageName: node 9184 10042 linkType: hard 9185 10043 10044 + "limiter@npm:^1.1.5": 10045 + version: 1.1.5 10046 + resolution: "limiter@npm:1.1.5" 10047 + checksum: 10/fa96e9912cf33ec36387e41a09694ccac7aaa8b86e1121333c30a3dfdf6265c849c980abd5f1689021bbab9aadca9d6df58d8db6ce5b999c26dd8cefe94168a9 10048 + languageName: node 10049 + linkType: hard 10050 + 9186 10051 "lines-and-columns@npm:^1.1.6": 9187 10052 version: 1.2.4 9188 10053 resolution: "lines-and-columns@npm:1.2.4" ··· 9261 10126 languageName: node 9262 10127 linkType: hard 9263 10128 10129 + "lodash.camelcase@npm:^4.3.0": 10130 + version: 4.3.0 10131 + resolution: "lodash.camelcase@npm:4.3.0" 10132 + checksum: 10/c301cc379310441dc73cd6cebeb91fb254bea74e6ad3027f9346fc43b4174385153df420ffa521654e502fd34c40ef69ca4e7d40ee7129a99e06f306032bfc65 10133 + languageName: node 10134 + linkType: hard 10135 + 10136 + "lodash.clonedeep@npm:^4.5.0": 10137 + version: 4.5.0 10138 + resolution: "lodash.clonedeep@npm:4.5.0" 10139 + checksum: 10/957ed243f84ba6791d4992d5c222ffffca339a3b79dbe81d2eaf0c90504160b500641c5a0f56e27630030b18b8e971ea10b44f928a977d5ced3c8948841b555f 10140 + languageName: node 10141 + linkType: hard 10142 + 9264 10143 "lodash.debounce@npm:^4.0.8": 9265 10144 version: 4.0.8 9266 10145 resolution: "lodash.debounce@npm:4.0.8" ··· 9268 10147 languageName: node 9269 10148 linkType: hard 9270 10149 10150 + "lodash.includes@npm:^4.3.0": 10151 + version: 4.3.0 10152 + resolution: "lodash.includes@npm:4.3.0" 10153 + checksum: 10/45e0a7c7838c931732cbfede6327da321b2b10482d5063ed21c020fa72b09ca3a4aa3bda4073906ab3f436cf36eb85a52ea3f08b7bab1e0baca8235b0e08fe51 10154 + languageName: node 10155 + linkType: hard 10156 + 10157 + "lodash.isboolean@npm:^3.0.3": 10158 + version: 3.0.3 10159 + resolution: "lodash.isboolean@npm:3.0.3" 10160 + checksum: 10/b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 10161 + languageName: node 10162 + linkType: hard 10163 + 10164 + "lodash.isinteger@npm:^4.0.4": 10165 + version: 4.0.4 10166 + resolution: "lodash.isinteger@npm:4.0.4" 10167 + checksum: 10/c971f5a2d67384f429892715550c67bac9f285604a0dd79275fd19fef7717aec7f2a6a33d60769686e436ceb9771fd95fe7fcb68ad030fc907d568d5a3b65f70 10168 + languageName: node 10169 + linkType: hard 10170 + 10171 + "lodash.isnumber@npm:^3.0.3": 10172 + version: 3.0.3 10173 + resolution: "lodash.isnumber@npm:3.0.3" 10174 + checksum: 10/913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 10175 + languageName: node 10176 + linkType: hard 10177 + 10178 + "lodash.isplainobject@npm:^4.0.6": 10179 + version: 4.0.6 10180 + resolution: "lodash.isplainobject@npm:4.0.6" 10181 + checksum: 10/29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 10182 + languageName: node 10183 + linkType: hard 10184 + 10185 + "lodash.isstring@npm:^4.0.1": 10186 + version: 4.0.1 10187 + resolution: "lodash.isstring@npm:4.0.1" 10188 + checksum: 10/eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 10189 + languageName: node 10190 + linkType: hard 10191 + 9271 10192 "lodash.mergewith@npm:^4.6.2": 9272 10193 version: 4.6.2 9273 10194 resolution: "lodash.mergewith@npm:4.6.2" 9274 10195 checksum: 10/aea75a4492541a4902ac7e551dc6c54b722da0c187f84385d02e8fc33a7ae3454b837822446e5f63fcd5ad1671534ea408740b776670ea4d9c7890b10105fce0 10196 + languageName: node 10197 + linkType: hard 10198 + 10199 + "lodash.once@npm:^4.0.0": 10200 + version: 4.1.1 10201 + resolution: "lodash.once@npm:4.1.1" 10202 + checksum: 10/202f2c8c3d45e401b148a96de228e50ea6951ee5a9315ca5e15733d5a07a6b1a02d9da1e7fdf6950679e17e8ca8f7190ec33cae47beb249b0c50019d753f38f3 9275 10203 languageName: node 9276 10204 linkType: hard 9277 10205 ··· 9341 10269 languageName: node 9342 10270 linkType: hard 9343 10271 10272 + "long@npm:^5.0.0, long@npm:^5.2.3": 10273 + version: 5.2.3 10274 + resolution: "long@npm:5.2.3" 10275 + checksum: 10/9167ec6947a825b827c30da169a7384eec6c0c9ec2f0b9c74da2e93d81159bbe39fb09c3f13dae9721d4b807ccfa09797a7dd1012f5d478e3e33ca3c78b608e6 10276 + languageName: node 10277 + linkType: hard 10278 + 9344 10279 "loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": 9345 10280 version: 1.4.0 9346 10281 resolution: "loose-envify@npm:1.4.0" ··· 9349 10284 bin: 9350 10285 loose-envify: cli.js 9351 10286 checksum: 10/6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 10287 + languageName: node 10288 + linkType: hard 10289 + 10290 + "lru-cache@npm:6.0.0, lru-cache@npm:^6.0.0": 10291 + version: 6.0.0 10292 + resolution: "lru-cache@npm:6.0.0" 10293 + dependencies: 10294 + yallist: "npm:^4.0.0" 10295 + checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 9352 10296 languageName: node 9353 10297 linkType: hard 9354 10298 ··· 9368 10312 languageName: node 9369 10313 linkType: hard 9370 10314 9371 - "lru-cache@npm:^6.0.0": 9372 - version: 6.0.0 9373 - resolution: "lru-cache@npm:6.0.0" 10315 + "lru-memoizer@npm:^2.2.0": 10316 + version: 2.3.0 10317 + resolution: "lru-memoizer@npm:2.3.0" 9374 10318 dependencies: 9375 - yallist: "npm:^4.0.0" 9376 - checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 10319 + lodash.clonedeep: "npm:^4.5.0" 10320 + lru-cache: "npm:6.0.0" 10321 + checksum: 10/1c00afc28640a2f02116c5907be0543647ad51084c43c3cecc1198efdfb5d3693caad948590f61bce3fc8c9f52ec8f567a64273a947535c2391ee41b675cc5e4 9377 10322 languageName: node 9378 10323 linkType: hard 9379 10324 ··· 9798 10743 languageName: node 9799 10744 linkType: hard 9800 10745 10746 + "mime@npm:^3.0.0": 10747 + version: 3.0.0 10748 + resolution: "mime@npm:3.0.0" 10749 + bin: 10750 + mime: cli.js 10751 + checksum: 10/b2d31580deb58be89adaa1877cbbf152b7604b980fd7ef8f08b9e96bfedf7d605d9c23a8ba62aa12c8580b910cd7c1d27b7331d0f40f7a14e17d5a0bbec3b49f 10752 + languageName: node 10753 + linkType: hard 10754 + 9801 10755 "mimic-fn@npm:^1.0.0": 9802 10756 version: 1.2.0 9803 10757 resolution: "mimic-fn@npm:1.2.0" ··· 9935 10889 languageName: node 9936 10890 linkType: hard 9937 10891 10892 + "mixin-object@npm:^2.0.1": 10893 + version: 2.0.1 10894 + resolution: "mixin-object@npm:2.0.1" 10895 + dependencies: 10896 + for-in: "npm:^0.1.3" 10897 + is-extendable: "npm:^0.1.1" 10898 + checksum: 10/7d0eb7c2f06435fcc01d132824b4c973a0df689a117d8199d79911b506363b6f4f86a84458a63f3acfa7388f3052612cfe27105400b4932678452925a9739a4c 10899 + languageName: node 10900 + linkType: hard 10901 + 9938 10902 "mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1": 9939 10903 version: 0.5.6 9940 10904 resolution: "mkdirp@npm:0.5.6" ··· 10074 11038 languageName: node 10075 11039 linkType: hard 10076 11040 10077 - "node-fetch@npm:^2.2.0, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7": 11041 + "node-fetch@npm:^2.2.0, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": 10078 11042 version: 2.7.0 10079 11043 resolution: "node-fetch@npm:2.7.0" 10080 11044 dependencies: ··· 10223 11187 languageName: node 10224 11188 linkType: hard 10225 11189 11190 + "object-hash@npm:^3.0.0": 11191 + version: 3.0.0 11192 + resolution: "object-hash@npm:3.0.0" 11193 + checksum: 10/f498d456a20512ba7be500cef4cf7b3c183cc72c65372a549c9a0e6dd78ce26f375e9b1315c07592d3fde8f10d5019986eba35970570d477ed9a2a702514432a 11194 + languageName: node 11195 + linkType: hard 11196 + 10226 11197 "object-inspect@npm:^1.13.1": 10227 11198 version: 1.13.2 10228 11199 resolution: "object-inspect@npm:1.13.2" ··· 10230 11201 languageName: node 10231 11202 linkType: hard 10232 11203 11204 + "object-is@npm:^1.1.5": 11205 + version: 1.1.6 11206 + resolution: "object-is@npm:1.1.6" 11207 + dependencies: 11208 + call-bind: "npm:^1.0.7" 11209 + define-properties: "npm:^1.2.1" 11210 + checksum: 10/4f6f544773a595da21c69a7531e0e1d6250670f4e09c55f47eb02c516035cfcb1b46ceb744edfd3ecb362309dbccb6d7f88e43bf42e4d4595ac10a329061053a 11211 + languageName: node 11212 + linkType: hard 11213 + 10233 11214 "object-keys@npm:^1.1.1": 10234 11215 version: 1.1.1 10235 11216 resolution: "object-keys@npm:1.1.1" ··· 10237 11218 languageName: node 10238 11219 linkType: hard 10239 11220 10240 - "object.assign@npm:^4.1.5": 11221 + "object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": 10241 11222 version: 4.1.5 10242 11223 resolution: "object.assign@npm:4.1.5" 10243 11224 dependencies: ··· 10340 11321 languageName: node 10341 11322 linkType: hard 10342 11323 11324 + "opencollective-postinstall@npm:^2.0.3": 11325 + version: 2.0.3 11326 + resolution: "opencollective-postinstall@npm:2.0.3" 11327 + bin: 11328 + opencollective-postinstall: index.js 11329 + checksum: 10/69d63778087cd10c9d707d9ed360556780cfdd0cd6241ded0e26632f467f1d5a064f4a9aec19a30c187770c17adba034d988f7684b226f3a73e79f44e73fab0e 11330 + languageName: node 11331 + linkType: hard 11332 + 10343 11333 "ora@npm:3.4.0, ora@npm:^3.4.0": 10344 11334 version: 3.4.0 10345 11335 resolution: "ora@npm:3.4.0" ··· 10411 11401 languageName: node 10412 11402 linkType: hard 10413 11403 10414 - "p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": 11404 + "p-limit@npm:^3.0.1, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": 10415 11405 version: 3.1.0 10416 11406 resolution: "p-limit@npm:3.1.0" 10417 11407 dependencies: ··· 10809 11799 languageName: node 10810 11800 linkType: hard 10811 11801 11802 + "proto3-json-serializer@npm:^2.0.2": 11803 + version: 2.0.2 11804 + resolution: "proto3-json-serializer@npm:2.0.2" 11805 + dependencies: 11806 + protobufjs: "npm:^7.2.5" 11807 + checksum: 10/d588337f9a24a94ac14a456261af48ea07e6d0a8a00faebb0b689e79e83925383b9d3ea713184d6336d0bb743dd803f188710e3e8fbfb316586cd1e3f7862a56 11808 + languageName: node 11809 + linkType: hard 11810 + 11811 + "protobufjs@npm:^7.2.5, protobufjs@npm:^7.2.6, protobufjs@npm:^7.3.2": 11812 + version: 7.3.2 11813 + resolution: "protobufjs@npm:7.3.2" 11814 + dependencies: 11815 + "@protobufjs/aspromise": "npm:^1.1.2" 11816 + "@protobufjs/base64": "npm:^1.1.2" 11817 + "@protobufjs/codegen": "npm:^2.0.4" 11818 + "@protobufjs/eventemitter": "npm:^1.1.0" 11819 + "@protobufjs/fetch": "npm:^1.1.0" 11820 + "@protobufjs/float": "npm:^1.0.2" 11821 + "@protobufjs/inquire": "npm:^1.1.0" 11822 + "@protobufjs/path": "npm:^1.1.2" 11823 + "@protobufjs/pool": "npm:^1.1.0" 11824 + "@protobufjs/utf8": "npm:^1.1.0" 11825 + "@types/node": "npm:>=13.7.0" 11826 + long: "npm:^5.0.0" 11827 + checksum: 10/816604aa0649a93fd5d3ef2858ef038f482d18eebcfb4201fe85c0d3bcccc12410f9e3e73262f1219e6b5bed4f27b28c3bf7c931c409dfb1fd563a304d541d89 11828 + languageName: node 11829 + linkType: hard 11830 + 10812 11831 "pump@npm:^3.0.0": 10813 11832 version: 3.0.0 10814 11833 resolution: "pump@npm:3.0.0" ··· 11331 12350 languageName: node 11332 12351 linkType: hard 11333 12352 11334 - "readable-stream@npm:^3.4.0": 12353 + "readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": 11335 12354 version: 3.6.2 11336 12355 resolution: "readable-stream@npm:3.6.2" 11337 12356 dependencies: ··· 11598 12617 languageName: node 11599 12618 linkType: hard 11600 12619 12620 + "retry-request@npm:^7.0.0": 12621 + version: 7.0.2 12622 + resolution: "retry-request@npm:7.0.2" 12623 + dependencies: 12624 + "@types/request": "npm:^2.48.8" 12625 + extend: "npm:^3.0.2" 12626 + teeny-request: "npm:^9.0.0" 12627 + checksum: 10/8f4c927d41dd575fc460aad7b762fb0a33542097201c3c1a31529ad17fa8af3ac0d2a45bf4a2024d079913e9c2dd431566070fe33321c667ac87ebb400de5917 12628 + languageName: node 12629 + linkType: hard 12630 + 12631 + "retry@npm:0.13.1": 12632 + version: 0.13.1 12633 + resolution: "retry@npm:0.13.1" 12634 + checksum: 10/6125ec2e06d6e47e9201539c887defba4e47f63471db304c59e4b82fc63c8e89ca06a77e9d34939a9a42a76f00774b2f46c0d4a4cbb3e287268bd018ed69426d 12635 + languageName: node 12636 + linkType: hard 12637 + 11601 12638 "retry@npm:^0.12.0": 11602 12639 version: 0.12.0 11603 12640 resolution: "retry@npm:0.12.0" ··· 11691 12728 languageName: node 11692 12729 linkType: hard 11693 12730 11694 - "safe-buffer@npm:~5.2.0": 12731 + "safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": 11695 12732 version: 5.2.1 11696 12733 resolution: "safe-buffer@npm:5.2.1" 11697 12734 checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 ··· 11908 12945 languageName: node 11909 12946 linkType: hard 11910 12947 12948 + "shallow-clone@npm:^1.0.0": 12949 + version: 1.0.0 12950 + resolution: "shallow-clone@npm:1.0.0" 12951 + dependencies: 12952 + is-extendable: "npm:^0.1.1" 12953 + kind-of: "npm:^5.0.0" 12954 + mixin-object: "npm:^2.0.1" 12955 + checksum: 10/51e36158d0fd7d9d0ce599a01a0a835d9e0a6ec10d6c69b62dda50ded5284ab92237ce5fa34cb58390e06c83961a17f1c39704e189ce0d7ae6daedae151da734 12956 + languageName: node 12957 + linkType: hard 12958 + 11911 12959 "shallow-clone@npm:^3.0.0": 11912 12960 version: 3.0.1 11913 12961 resolution: "shallow-clone@npm:3.0.1" ··· 12240 13288 languageName: node 12241 13289 linkType: hard 12242 13290 13291 + "stream-events@npm:^1.0.5": 13292 + version: 1.0.5 13293 + resolution: "stream-events@npm:1.0.5" 13294 + dependencies: 13295 + stubs: "npm:^3.0.0" 13296 + checksum: 10/969ce82e34bfbef5734629cc06f9d7f3705a9ceb8fcd6a526332f9159f1f8bbfdb1a453f3ced0b728083454f7706adbbe8428bceb788a0287ca48ba2642dc3fc 13297 + languageName: node 13298 + linkType: hard 13299 + 13300 + "stream-shift@npm:^1.0.2": 13301 + version: 1.0.3 13302 + resolution: "stream-shift@npm:1.0.3" 13303 + checksum: 10/a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242 13304 + languageName: node 13305 + linkType: hard 13306 + 12243 13307 "stream-slice@npm:^0.1.2": 12244 13308 version: 0.1.2 12245 13309 resolution: "stream-slice@npm:0.1.2" ··· 12424 13488 languageName: node 12425 13489 linkType: hard 12426 13490 13491 + "stubs@npm:^3.0.0": 13492 + version: 3.0.0 13493 + resolution: "stubs@npm:3.0.0" 13494 + checksum: 10/dec7b82186e3743317616235c59bfb53284acc312cb9f4c3e97e2205c67a5c158b0ca89db5927e52351582e90a2672822eeaec9db396e23e56893d2a8676e024 13495 + languageName: node 13496 + linkType: hard 13497 + 12427 13498 "styleq@npm:^0.1.3": 12428 13499 version: 0.1.3 12429 13500 resolution: "styleq@npm:0.1.3" ··· 12470 13541 languageName: node 12471 13542 linkType: hard 12472 13543 13544 + "superstruct@npm:^0.6.2": 13545 + version: 0.6.2 13546 + resolution: "superstruct@npm:0.6.2" 13547 + dependencies: 13548 + clone-deep: "npm:^2.0.1" 13549 + kind-of: "npm:^6.0.1" 13550 + checksum: 10/2377455173450769eaa19381bec851cafb8e356116f5b5fab1fb764b9fbdaff20322cf2f2d3185c3bb856233c9cdb8fb9e6dc03e5132adf902a71acee03822a3 13551 + languageName: node 13552 + linkType: hard 13553 + 12473 13554 "supports-color@npm:^5.3.0": 12474 13555 version: 5.5.0 12475 13556 resolution: "supports-color@npm:5.5.0" ··· 12607 13688 mkdirp: "npm:^1.0.3" 12608 13689 yallist: "npm:^4.0.0" 12609 13690 checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 13691 + languageName: node 13692 + linkType: hard 13693 + 13694 + "teeny-request@npm:^9.0.0": 13695 + version: 9.0.0 13696 + resolution: "teeny-request@npm:9.0.0" 13697 + dependencies: 13698 + http-proxy-agent: "npm:^5.0.0" 13699 + https-proxy-agent: "npm:^5.0.0" 13700 + node-fetch: "npm:^2.6.9" 13701 + stream-events: "npm:^1.0.5" 13702 + uuid: "npm:^9.0.0" 13703 + checksum: 10/44daabb6c2e239c3daed0218ebdafb50c7141c16d7257a6cfef786dbff56d7853c2c02c97934f7ed57818ce5861ac16c5f52f3a16fa292bd4caf53483d386443 12610 13704 languageName: node 12611 13705 linkType: hard 12612 13706 ··· 13157 14251 languageName: node 13158 14252 linkType: hard 13159 14253 13160 - "util@npm:^0.12.3": 14254 + "util@npm:^0.12.3, util@npm:^0.12.5": 13161 14255 version: 0.12.5 13162 14256 resolution: "util@npm:0.12.5" 13163 14257 dependencies: ··· 13177 14271 languageName: node 13178 14272 linkType: hard 13179 14273 14274 + "uuid@npm:^10.0.0": 14275 + version: 10.0.0 14276 + resolution: "uuid@npm:10.0.0" 14277 + bin: 14278 + uuid: dist/bin/uuid 14279 + checksum: 10/35aa60614811a201ff90f8ca5e9ecb7076a75c3821e17f0f5ff72d44e36c2d35fcbc2ceee9c4ac7317f4cc41895da30e74f3885e30313bee48fda6338f250538 14280 + languageName: node 14281 + linkType: hard 14282 + 13180 14283 "uuid@npm:^7.0.3": 13181 14284 version: 7.0.3 13182 14285 resolution: "uuid@npm:7.0.3" ··· 13192 14295 bin: 13193 14296 uuid: dist/bin/uuid 13194 14297 checksum: 10/9a5f7aa1d6f56dd1e8d5f2478f855f25c645e64e26e347a98e98d95781d5ed20062d6cca2eecb58ba7c84bc3910be95c0451ef4161906abaab44f9cb68ffbdd1 14298 + languageName: node 14299 + linkType: hard 14300 + 14301 + "uuid@npm:^9.0.0, uuid@npm:^9.0.1": 14302 + version: 9.0.1 14303 + resolution: "uuid@npm:9.0.1" 14304 + bin: 14305 + uuid: dist/bin/uuid 14306 + checksum: 10/9d0b6adb72b736e36f2b1b53da0d559125ba3e39d913b6072f6f033e0c87835b414f0836b45bcfaf2bdf698f92297fea1c3cc19b0b258bc182c9c43cc0fab9f2 13195 14307 languageName: node 13196 14308 linkType: hard 13197 14309 ··· 13288 14400 version: 5.0.0 13289 14401 resolution: "webidl-conversions@npm:5.0.0" 13290 14402 checksum: 10/cea864dd9cf1f2133d82169a446fb94427ba089e4676f5895273ea085f165649afe587ae3f19f2f0370751a724bba2d96e9956d652b3e41ac1feaaa4376e2d70 14403 + languageName: node 14404 + linkType: hard 14405 + 14406 + "websocket-driver@npm:>=0.5.1": 14407 + version: 0.7.4 14408 + resolution: "websocket-driver@npm:0.7.4" 14409 + dependencies: 14410 + http-parser-js: "npm:>=0.5.1" 14411 + safe-buffer: "npm:>=5.1.0" 14412 + websocket-extensions: "npm:>=0.1.1" 14413 + checksum: 10/17197d265d5812b96c728e70fd6fe7d067471e121669768fe0c7100c939d997ddfc807d371a728556e24fc7238aa9d58e630ea4ff5fd4cfbb40f3d0a240ef32d 14414 + languageName: node 14415 + linkType: hard 14416 + 14417 + "websocket-extensions@npm:>=0.1.1": 14418 + version: 0.1.4 14419 + resolution: "websocket-extensions@npm:0.1.4" 14420 + checksum: 10/b5399b487d277c78cdd2aef63764b67764aa9899431e3a2fa272c6ad7236a0fb4549b411d89afa76d5afd664c39d62fc19118582dc937e5bb17deb694f42a0d1 13291 14421 languageName: node 13292 14422 linkType: hard 13293 14423 ··· 13621 14751 languageName: node 13622 14752 linkType: hard 13623 14753 13624 - "yargs@npm:^17.6.2": 14754 + "yargs@npm:^17.6.2, yargs@npm:^17.7.2": 13625 14755 version: 17.7.2 13626 14756 resolution: "yargs@npm:17.7.2" 13627 14757 dependencies: