diff --git a/.gitignore b/.gitignore index b6adc31..8da930f 100644 --- a/.gitignore +++ b/.gitignore @@ -64,6 +64,7 @@ DerivedData *.ipa *.xcuserstate **/.xcode.env.local +**/Settings.bundle/ # Android/IntelliJ # @@ -77,6 +78,7 @@ local.properties *.keystore !debug.keystore .kotlin/ +**/config/ # node.js # diff --git a/Api/ApiContextProvider.tsx b/Api/ApiContextProvider.tsx new file mode 100644 index 0000000..3064525 --- /dev/null +++ b/Api/ApiContextProvider.tsx @@ -0,0 +1,69 @@ +import axios, { AxiosInstance } from 'axios'; +import React, { createContext, ReactNode, useContext } from 'react'; +import { AppEnvironment, useAppEnvironment } from '../AppEnvironment'; +import { getAuthToken, refreshAuth } from '../Auth/Authentication'; + +/** + * Context containing API configuration for the app. + * Includes authentication and automatic refresh logic. + */ +export const ApiContext = createContext(undefined); + +/** + * Creates API context in the form of a preconfigured Axios instance. + * Sets base URL to the current app environment, adds interceptors for + * requests to pass in authorization tokens and to retry with refresh tokens + * if any 401 errors occur. + * @param environment AppEnvironment containing the Base URL to use. + * @returns AxiosInstance for the API context. + */ +function createApiContext(environment: AppEnvironment) { + const instance = axios.create({ + baseURL: environment.baseUrl, + }); + + instance.interceptors.request.use(async (config) => { + const token = await getAuthToken(environment); + console.log(config.baseURL); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + console.log(config.headers.Authorization); + } + + return config; + }); + + instance.interceptors.response.use( + (response) => response, + async (error) => { + if (axios.isAxiosError(error) && error.response?.status === 401) { + if (!error.config) return Promise.reject(error); + if (!(await refreshAuth(environment))) return Promise.reject(error); + const token = await getAuthToken(environment); + if (token) { + error.config.headers.Authorization = `Bearer ${token.password}`; + return axios.request(error.config); + } + } + return Promise.reject(error); + }, + ); + return instance; +} + +function ApiContextProvider({ children }: { children: ReactNode }) { + const { environment } = useAppEnvironment(); + const apiContext = createApiContext(environment); + + return {children}; +} + +export function useApi() { + const context = useContext(ApiContext); + if (!context) { + throw new Error('useApi must be used within an ApiContextProvider'); + } + return context; +} + +export default ApiContextProvider; diff --git a/Api/Models/Permission.ts b/Api/Models/Permission.ts new file mode 100644 index 0000000..9d4d95e --- /dev/null +++ b/Api/Models/Permission.ts @@ -0,0 +1,9 @@ +export enum Permission { + CREATE_ATTENDANCE = 'create-attendance', + READ_EVENTS = 'read-events', + READ_TEAMS = 'read-teams', + READ_TEAMS_HIDDEN = 'read-teams-hidden', + READ_USERS = 'read-users', + READ_MERCHANDISE = 'read-merchandise', + DISTRIBUTE_SWAG = 'distribute-swag', +} diff --git a/Api/UserApi.ts b/Api/UserApi.ts new file mode 100644 index 0000000..99a73a6 --- /dev/null +++ b/Api/UserApi.ts @@ -0,0 +1,22 @@ +import { AxiosInstance } from 'axios'; +import { Permission } from './Models/Permission'; + +export type UserInfo> = { + id: number; + uid: string; + name: string; + preferred_first_name: string; + allPermissions: Permission[]; +} & T; + +export async function getUserInfo(api: AxiosInstance): Promise { + try { + const user = await api.get('/api/v1/user'); + console.log(user); + //TODO: Incorporate Sentry + return user.data.user; + } catch (error) { + //TODO: incorporate logging + } + return null; +} diff --git a/App.tsx b/App.tsx index dd20164..237bb8b 100644 --- a/App.tsx +++ b/App.tsx @@ -1,28 +1,24 @@ import { NavigationContainer } from '@react-navigation/native'; -import React, { createContext } from 'react'; +import React from 'react'; import { SafeAreaProvider } from 'react-native-safe-area-context'; +import ApiContextProvider from './Api/ApiContextProvider'; import { AppEnvironmentProvider } from './AppEnvironment'; import AuthContextProvider from './Auth/AuthContextProvider'; import RootStack from './Navigation/RootStack'; import ThemeProvider from './Themes/ThemeContextProvider'; -type AuthContextType = { - authenticated: boolean | null; - setAuthenticated: (u: boolean) => void; -}; - -export const AuthContext = createContext(undefined); - function App() { return ( - - - - - + + + + + + + diff --git a/Auth/AuthContextProvider.tsx b/Auth/AuthContextProvider.tsx index 195d0c5..3ae48a8 100644 --- a/Auth/AuthContextProvider.tsx +++ b/Auth/AuthContextProvider.tsx @@ -1,4 +1,4 @@ -import React, { createContext, ReactNode, useEffect, useState } from 'react'; +import React, { createContext, ReactNode, useContext, useEffect, useState } from 'react'; import { useAppEnvironment } from '../AppEnvironment'; import { AuthenticationState, @@ -51,4 +51,12 @@ function AuthContextProvider({ children }: AuthProviderProps) { ); } +export function useAuth() { + const context = useContext(AuthContext); + if (!context) { + throw new Error('useAuth must be used within an AuthContextProvider'); + } + return context; +} + export default AuthContextProvider; diff --git a/Auth/Authentication.ts b/Auth/Authentication.ts index 6761735..8424fbd 100644 --- a/Auth/Authentication.ts +++ b/Auth/Authentication.ts @@ -99,6 +99,19 @@ async function storeCredentials( return store_success && refresh_store_success; } +/** + * Gets the auth token from Keychain storage. + * @param currentEnvironment Current AppEnvironment. + * @returns Token if exists, null otherwise + */ +export async function getAuthToken(currentEnvironment: AppEnvironment) { + const token = await Keychain.getInternetCredentials(currentEnvironment.baseUrl + ':accessToken'); + if (!token) { + return null; + } + return token; +} + /** * Checks for existence of auth token and whether it is expired. * @returns whether auth token is currently valid. @@ -114,11 +127,8 @@ export async function authTokenIsValid(currentEnvironment: AppEnvironment) { return false; } - const currentTime = Date.now(); - if (currentTime > expiry) { - return true; - } - return false; + const currentTime = Math.floor(Date.now() / 1000); + return currentTime < expiry; } /** diff --git a/README.md b/README.md index 7402255..40f464a 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,9 @@ npm run android # OR using Yarn yarn android + +# OR using npx +npx react-native run-android ``` ### iOS @@ -46,6 +49,11 @@ Then, and every time you update your native dependencies, run: ```sh bundle exec pod install + +# OR manually +cd ios +pod install +cd .. ``` For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html). @@ -56,8 +64,26 @@ npm run ios # OR using Yarn yarn ios + +# OR using npx +npx react-native run-ios ``` If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device. This is one way to run your app — you can also build it directly from Android Studio or Xcode. + + +# Legal + +This project is open-source and is supported by many open-source libraries. +The app includes a notice of these dependencies which must be updated when a +library is added. Run the below command whenever adding a dependency to update +the OSS notice: + +```sh +npx react-native legal-generate + +# OR with yarn +yarn react-native legal-generate +``` \ No newline at end of file diff --git a/Settings/SettingsScreen.tsx b/Settings/SettingsScreen.tsx index 73eb4f3..72cec2c 100644 --- a/Settings/SettingsScreen.tsx +++ b/Settings/SettingsScreen.tsx @@ -1,11 +1,33 @@ import MaterialIcons from '@react-native-vector-icons/material-icons'; -import React from 'react'; -import { SafeAreaView, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; +import React, { useEffect, useState } from 'react'; +import { + Linking, + Platform, + SafeAreaView, + ScrollView, + StyleSheet, + Text, + TouchableOpacity, + View, +} from 'react-native'; +import { InAppBrowser } from 'react-native-inappbrowser-reborn'; +import { ReactNativeLegal } from 'react-native-legal'; +import { useApi } from '../Api/ApiContextProvider'; +import { getUserInfo, UserInfo } from '../Api/UserApi'; import { useAppEnvironment } from '../AppEnvironment'; import { logout } from '../Auth/Authentication'; function SettingsScreen() { const { environment } = useAppEnvironment(); + const api = useApi(); + + const [user, setUser] = useState(undefined); + + const makeAWishUrl = + 'https://docs.google.com/forms/d/e/1FAIpQLSelERsYq3' + + 'gLmHbWvVCWha5iCU8z3r9VYC0hCN4ArLpMAiysaQ/viewform?entry.1338203640=MyRoboJackets%20' + + (Platform.OS === 'android' ? 'Android' : 'iOS'); + type SettingsMenuLinkProps = { icon: React.ComponentProps['name']; title: string; @@ -38,22 +60,64 @@ function SettingsScreen() { ); + async function openLink(url: string) { + try { + if (await InAppBrowser.isAvailable()) { + await InAppBrowser.open(url, { + // iOS Properties + dismissButtonStyle: 'cancel', + // preferredBarTintColor: '#453AA4', + // preferredControlTintColor: 'white', + readerMode: false, + animated: true, + modalPresentationStyle: 'fullScreen', + modalTransitionStyle: 'coverVertical', + modalEnabled: true, + enableBarCollapsing: false, + // Android Properties + showTitle: true, + // toolbarColor: '#6200EE', + // secondaryToolbarColor: 'black', // We may add color settings later using system theme + // navigationBarColor: 'black', + // navigationBarDividerColor: 'white', + enableUrlBarHiding: true, + enableDefaultShare: true, + forceCloseOnRedirection: false, + }); + } else Linking.openURL(url); + } catch (error) { + if (error instanceof Error) console.log(error.message); + } + } + + async function onRefreshUser(forceRefresh: boolean = false) { + if (!user || forceRefresh) { + setUser(await getUserInfo(api)); + } + } + + useEffect(() => { + onRefreshUser(true); + }, []); + return ( {}} + title={user && user.name ? user.name : 'Refreshing data...'} + subtitle={user && user.uid ? user.uid : 'Username'} + onClick={() => { + onRefreshUser(); + }} /> {__DEV__ && ( // checks if app is running locally <> {}} /> - {}} /> + {}} + /> {}} /> {}} /> - {}} /> - {}} /> - {}} /> + { + await openLink(makeAWishUrl); + }} + /> + { + await openLink(environment.baseUrl + '/privacy'); + }} + /> + { + ReactNativeLegal.launchLicenseListScreen('OSS Notice'); + }} + /> diff --git a/android/app/build.gradle b/android/app/build.gradle index 45b1e80..09e4e8c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -120,3 +120,10 @@ dependencies { implementation jscFlavor } } + +apply plugin: 'com.mikepenz.aboutlibraries.plugin' + +aboutLibraries { + configPath = "config" + prettyPrint = true +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c40f284..5433df3 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,27 +1,14 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index b4f3ad9..a34c91a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,12 +6,16 @@ buildscript { targetSdkVersion = 35 ndkVersion = "27.1.12297006" kotlinVersion = "2.1.20" + androidXAnnotation = "1.8.2" + androidXBrowser = "1.8.0" } repositories { + maven { url = uri("https://plugins.gradle.org/m2") } google() mavenCentral() } dependencies { + classpath("com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:11.6.3") classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") diff --git a/ios/ApiaryReactNative.xcodeproj/project.pbxproj b/ios/ApiaryReactNative.xcodeproj/project.pbxproj index e66b15b..b2cb0c5 100644 --- a/ios/ApiaryReactNative.xcodeproj/project.pbxproj +++ b/ios/ApiaryReactNative.xcodeproj/project.pbxproj @@ -12,6 +12,8 @@ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; CC2BBDBCA3FCEC106879F825 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; + D933ACBE1A32493585C40AB5 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 99816AA8F2524708B7736B43 /* Settings.bundle */; }; + C283F23446184CAE84A086C3 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D50820E7EEE04D94B92AAA75 /* Settings.bundle */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -27,6 +29,7 @@ 90999FF72EADD414005812BA /* AppDelegate+RNAppAuth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AppDelegate+RNAppAuth.h"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; EDC4D08DC6F936D979DF2673 /* Pods-ApiaryReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ApiaryReactNative.debug.xcconfig"; path = "Target Support Files/Pods-ApiaryReactNative/Pods-ApiaryReactNative.debug.xcconfig"; sourceTree = ""; }; + D50820E7EEE04D94B92AAA75 /* Settings.bundle */ = {isa = PBXFileReference; name = "Settings.bundle"; path = "Settings.bundle"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.plug-in; explicitFileType = undefined; includeInIndex = 0; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -61,6 +64,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */, 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, + D50820E7EEE04D94B92AAA75 /* Settings.bundle */, ); name = ApiaryReactNative; sourceTree = ""; @@ -121,6 +125,7 @@ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ApiaryReactNative" */; buildPhases = ( 9A976451B424A3849502C9BF /* [CP] Check Pods Manifest.lock */, + 3FD7BEEFA4EA4F369EE3C39F /* Generate licenses with LicensePlist */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, @@ -179,6 +184,8 @@ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, CC2BBDBCA3FCEC106879F825 /* PrivacyInfo.xcprivacy in Resources */, + D933ACBE1A32493585C40AB5 /* Settings.bundle in Resources */, + C283F23446184CAE84A086C3 /* Settings.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -205,6 +212,20 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n\n"; }; + 3FD7BEEFA4EA4F369EE3C39F /* Generate licenses with LicensePlist */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Generate licenses with LicensePlist"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "${PODS_ROOT}/LicensePlist/license-plist --add-version-numbers --output-path ./Settings.bundle"; + }; 9A976451B424A3849502C9BF /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/ios/ApiaryReactNative.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/ApiaryReactNative.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/ios/ApiaryReactNative.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 106c804..e466940 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -14,6 +14,7 @@ PODS: - hermes-engine (0.80.1): - hermes-engine/Pre-built (= 0.80.1) - hermes-engine/Pre-built (0.80.1) + - LicensePlist (3.27.2) - RCT-Folly (2024.11.18.00): - boost - DoubleConversion @@ -2225,6 +2226,38 @@ PODS: - React-perflogger (= 0.80.1) - React-utils (= 0.80.1) - SocketRocket + - ReactNativeLegal (1.6.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - LicensePlist + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - RNInAppBrowser (3.7.0): + - React-Core - RNKeychain (10.0.0): - boost - DoubleConversion @@ -2484,6 +2517,8 @@ DEPENDENCIES: - ReactAppDependencyProvider (from `build/generated/ios`) - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - ReactNativeLegal (from `../node_modules/react-native-legal`) + - RNInAppBrowser (from `../node_modules/react-native-inappbrowser-reborn`) - RNKeychain (from `../node_modules/react-native-keychain`) - RNScreens (from `../node_modules/react-native-screens`) - RNSVG (from `../node_modules/react-native-svg`) @@ -2494,6 +2529,7 @@ DEPENDENCIES: SPEC REPOS: trunk: - AppAuth + - LicensePlist - SocketRocket EXTERNAL SOURCES: @@ -2650,6 +2686,10 @@ EXTERNAL SOURCES: :path: build/generated/ios ReactCommon: :path: "../node_modules/react-native/ReactCommon" + ReactNativeLegal: + :path: "../node_modules/react-native-legal" + RNInAppBrowser: + :path: "../node_modules/react-native-inappbrowser-reborn" RNKeychain: :path: "../node_modules/react-native-keychain" RNScreens: @@ -2670,6 +2710,7 @@ SPEC CHECKSUMS: fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 hermes-engine: 4f07404533b808de66cf48ac4200463068d0e95a + LicensePlist: 74682f92f6028b02dce8d84b9b9e65350c971571 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 RCTDeprecation: efa5010912100e944a7ac9a93a157e1def1988fe RCTRequired: bbc4cf999ddc4a4b076e076c74dd1d39d0254630 @@ -2739,6 +2780,8 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: afd905e84ee36e1678016ae04d7370c75ed539be ReactCodegen: f8d5fb047c4cd9d2caade972cad9edac22521362 ReactCommon: 17fd88849a174bf9ce45461912291aca711410fc + ReactNativeLegal: 81d5bc5d6e2f45cf146f0345d7cacb21d0a19aba + RNInAppBrowser: 6d3eb68d471b9834335c664704719b8be1bfdb20 RNKeychain: 9c0d0b73682506249067e6b0a13ef65635c241fa RNScreens: 7ab5a342b48757987b6f58a680afb5e7ec4e213e RNSVG: cb3156ab4865f6a8bc145fb431a1003f02df2ff7 diff --git a/ios/license_plist.yml b/ios/license_plist.yml new file mode 100644 index 0000000..a879e0a --- /dev/null +++ b/ios/license_plist.yml @@ -0,0 +1,2018 @@ +# BEGIN Generated NPM license entries +rename: + "@react-native-vector-icons_material-design-icons@12.3.0": '@react-native-vector-icons/material-design-icons' + "@react-native-vector-icons_common@12.3.0": '@react-native-vector-icons/common' + "find-up@7.0.0": find-up + "locate-path@6.0.0": locate-path + "p-locate@5.0.0": p-locate + "p-limit@3.1.0": p-limit + "yocto-queue@0.1.0": yocto-queue + "path-exists@4.0.0": path-exists + "unicorn-magic@0.1.0": unicorn-magic + "picocolors@1.1.1": picocolors + "plist@3.1.0": plist + "@xmldom_xmldom@0.8.11": '@xmldom/xmldom' + "base64-js@1.5.1": base64-js + "xmlbuilder@15.1.1": xmlbuilder + "@react-native-vector-icons_material-icons@12.3.0": '@react-native-vector-icons/material-icons' + "@react-native_new-app-screen@0.80.1": '@react-native/new-app-screen' + "@react-navigation_bottom-tabs@7.4.9": '@react-navigation/bottom-tabs' + "@react-navigation_elements@2.6.5": '@react-navigation/elements' + "color@4.2.3": color + "color-convert@2.0.1": color-convert + "color-name@1.1.4": color-name + "color-string@1.9.1": color-string + "simple-swizzle@0.2.4": simple-swizzle + "is-arrayish@0.3.4": is-arrayish + "use-latest-callback@0.2.6": use-latest-callback + "use-sync-external-store@1.6.0": use-sync-external-store + "@react-navigation_native@7.1.18": '@react-navigation/native' + "@react-navigation_core@7.12.4": '@react-navigation/core' + "@react-navigation_routers@7.5.1": '@react-navigation/routers' + "nanoid@3.3.11": nanoid + "escape-string-regexp@4.0.0": escape-string-regexp + "query-string@7.1.3": query-string + "decode-uri-component@0.2.2": decode-uri-component + "filter-obj@1.1.0": filter-obj + "split-on-first@1.1.0": split-on-first + "strict-uri-encode@2.0.0": strict-uri-encode + "react-is@19.2.0": react-is + "fast-deep-equal@3.1.3": fast-deep-equal + "@react-navigation_native-stack@7.3.28": '@react-navigation/native-stack' + "warn-once@0.1.1": warn-once + "array-equal@2.0.0": array-equal + "axios@1.13.2": axios + "follow-redirects@1.15.11": follow-redirects + "form-data@4.0.5": form-data + "asynckit@0.4.0": asynckit + "combined-stream@1.0.8": combined-stream + "delayed-stream@1.0.0": delayed-stream + "es-set-tostringtag@2.1.0": es-set-tostringtag + "es-errors@1.3.0": es-errors + "get-intrinsic@1.3.0": get-intrinsic + "call-bind-apply-helpers@1.0.2": call-bind-apply-helpers + "function-bind@1.1.2": function-bind + "es-define-property@1.0.1": es-define-property + "es-object-atoms@1.1.1": es-object-atoms + "get-proto@1.0.1": get-proto + "dunder-proto@1.0.1": dunder-proto + "gopd@1.2.0": gopd + "has-symbols@1.1.0": has-symbols + "hasown@2.0.2": hasown + "math-intrinsics@1.1.0": math-intrinsics + "has-tostringtag@1.0.2": has-tostringtag + "mime-types@2.1.35": mime-types + "mime-db@1.52.0": mime-db + "proxy-from-env@1.1.0": proxy-from-env + "jwt-decode@4.0.0": jwt-decode + "react@19.1.0": react + "react-native@0.80.1": react-native + "@jest_create-cache-key-function@29.7.0": '@jest/create-cache-key-function' + "@jest_types@29.6.3": '@jest/types' + "@jest_schemas@29.6.3": '@jest/schemas' + "@sinclair_typebox@0.27.8": '@sinclair/typebox' + "@types_istanbul-lib-coverage@2.0.6": '@types/istanbul-lib-coverage' + "@types_istanbul-reports@3.0.4": '@types/istanbul-reports' + "@types_istanbul-lib-report@3.0.3": '@types/istanbul-lib-report' + "@types_node@22.19.1": '@types/node' + "undici-types@6.21.0": undici-types + "@types_yargs@17.0.33": '@types/yargs' + "@types_yargs-parser@21.0.3": '@types/yargs-parser' + "chalk@4.1.2": chalk + "ansi-styles@4.3.0": ansi-styles + "supports-color@7.2.0": supports-color + "has-flag@4.0.0": has-flag + "@react-native_assets-registry@0.80.1": '@react-native/assets-registry' + "@react-native_codegen@0.80.1": '@react-native/codegen' + "glob@7.2.3": glob + "fs.realpath@1.0.0": fs.realpath + "inflight@1.0.6": inflight + "once@1.4.0": once + "wrappy@1.0.2": wrappy + "inherits@2.0.4": inherits + "minimatch@3.1.2": minimatch + "brace-expansion@1.1.12": brace-expansion + "balanced-match@1.0.2": balanced-match + "concat-map@0.0.1": concat-map + "path-is-absolute@1.0.1": path-is-absolute + "hermes-parser@0.28.1": hermes-parser + "hermes-estree@0.28.1": hermes-estree + "invariant@2.2.4": invariant + "loose-envify@1.4.0": loose-envify + "js-tokens@4.0.0": js-tokens + "nullthrows@1.1.1": nullthrows + "yargs@17.7.2": yargs + "cliui@8.0.1": cliui + "string-width@4.2.3": string-width + "emoji-regex@8.0.0": emoji-regex + "is-fullwidth-code-point@3.0.0": is-fullwidth-code-point + "strip-ansi@6.0.1": strip-ansi + "ansi-regex@5.0.1": ansi-regex + "wrap-ansi@7.0.0": wrap-ansi + "escalade@3.2.0": escalade + "get-caller-file@2.0.5": get-caller-file + "require-directory@2.1.1": require-directory + "y18n@5.0.8": y18n + "yargs-parser@21.1.1": yargs-parser + "@react-native_community-cli-plugin@0.80.1": '@react-native/community-cli-plugin' + "@react-native_dev-middleware@0.80.1": '@react-native/dev-middleware' + "@isaacs_ttlcache@1.4.1": '@isaacs/ttlcache' + "@react-native_debugger-frontend@0.80.1": '@react-native/debugger-frontend' + "chrome-launcher@0.15.2": chrome-launcher + "is-wsl@2.2.0": is-wsl + "is-docker@2.2.1": is-docker + "lighthouse-logger@1.4.2": lighthouse-logger + "debug@2.6.9": debug + "ms@2.0.0": ms + "marky@1.3.0": marky + "chromium-edge-launcher@0.2.0": chromium-edge-launcher + "mkdirp@1.0.4": mkdirp + "rimraf@3.0.2": rimraf + "connect@3.7.0": connect + "finalhandler@1.1.2": finalhandler + "encodeurl@1.0.2": encodeurl + "escape-html@1.0.3": escape-html + "on-finished@2.3.0": on-finished + "ee-first@1.1.1": ee-first + "parseurl@1.3.3": parseurl + "statuses@1.5.0": statuses + "unpipe@1.0.0": unpipe + "utils-merge@1.0.1": utils-merge + "debug@4.4.3": debug + "ms@2.1.3": ms + "open@7.4.2": open + "serve-static@1.16.2": serve-static + "encodeurl@2.0.0": encodeurl + "send@0.19.0": send + "depd@2.0.0": depd + "destroy@1.2.0": destroy + "etag@1.8.1": etag + "fresh@0.5.2": fresh + "http-errors@2.0.0": http-errors + "setprototypeof@1.2.0": setprototypeof + "statuses@2.0.1": statuses + "toidentifier@1.0.1": toidentifier + "mime@1.6.0": mime + "on-finished@2.4.1": on-finished + "range-parser@1.2.1": range-parser + "ws@6.2.3": ws + "async-limiter@1.0.1": async-limiter + "metro@0.82.5": metro + "@babel_code-frame@7.27.1": '@babel/code-frame' + "@babel_helper-validator-identifier@7.27.1": '@babel/helper-validator-identifier' + "@babel_core@7.28.4": '@babel/core' + "@babel_generator@7.28.3": '@babel/generator' + "@babel_parser@7.28.4": '@babel/parser' + "@babel_types@7.28.4": '@babel/types' + "@babel_helper-string-parser@7.27.1": '@babel/helper-string-parser' + "@jridgewell_gen-mapping@0.3.13": '@jridgewell/gen-mapping' + "@jridgewell_sourcemap-codec@1.5.5": '@jridgewell/sourcemap-codec' + "@jridgewell_trace-mapping@0.3.31": '@jridgewell/trace-mapping' + "@jridgewell_resolve-uri@3.1.2": '@jridgewell/resolve-uri' + "jsesc@3.1.0": jsesc + "@babel_helper-compilation-targets@7.27.2": '@babel/helper-compilation-targets' + "@babel_compat-data@7.28.4": '@babel/compat-data' + "@babel_helper-validator-option@7.27.1": '@babel/helper-validator-option' + "browserslist@4.26.3": browserslist + "baseline-browser-mapping@2.8.18": baseline-browser-mapping + "caniuse-lite@1.0.30001751": caniuse-lite + "electron-to-chromium@1.5.237": electron-to-chromium + "node-releases@2.0.25": node-releases + "update-browserslist-db@1.1.3": update-browserslist-db + "lru-cache@5.1.1": lru-cache + "yallist@3.1.1": yallist + "semver@6.3.1": semver + "@babel_helper-module-transforms@7.28.3": '@babel/helper-module-transforms' + "@babel_helper-module-imports@7.27.1": '@babel/helper-module-imports' + "@babel_traverse@7.28.4": '@babel/traverse' + "@babel_helper-globals@7.28.0": '@babel/helper-globals' + "@babel_template@7.27.2": '@babel/template' + "@babel_helpers@7.28.4": '@babel/helpers' + "@jridgewell_remapping@2.3.5": '@jridgewell/remapping' + "convert-source-map@2.0.0": convert-source-map + "gensync@1.0.0-beta.2": gensync + "json5@2.2.3": json5 + "accepts@1.3.8": accepts + "negotiator@0.6.3": negotiator + "ci-info@2.0.0": ci-info + "error-stack-parser@2.1.4": error-stack-parser + "stackframe@1.3.4": stackframe + "flow-enums-runtime@0.0.6": flow-enums-runtime + "graceful-fs@4.2.11": graceful-fs + "hermes-parser@0.29.1": hermes-parser + "hermes-estree@0.29.1": hermes-estree + "image-size@1.2.1": image-size + "queue@6.0.2": queue + "jest-worker@29.7.0": jest-worker + "jest-util@29.7.0": jest-util + "ci-info@3.9.0": ci-info + "picomatch@2.3.1": picomatch + "merge-stream@2.0.0": merge-stream + "supports-color@8.1.1": supports-color + "jsc-safe-url@0.2.4": jsc-safe-url + "lodash.throttle@4.1.1": lodash.throttle + "metro-babel-transformer@0.82.5": metro-babel-transformer + "metro-cache@0.82.5": metro-cache + "exponential-backoff@3.1.3": exponential-backoff + "https-proxy-agent@7.0.6": https-proxy-agent + "agent-base@7.1.4": agent-base + "metro-core@0.82.5": metro-core + "metro-resolver@0.82.5": metro-resolver + "metro-cache-key@0.82.5": metro-cache-key + "metro-config@0.82.5": metro-config + "cosmiconfig@5.2.1": cosmiconfig + "import-fresh@2.0.0": import-fresh + "caller-path@2.0.0": caller-path + "caller-callsite@2.0.0": caller-callsite + "callsites@2.0.0": callsites + "resolve-from@3.0.0": resolve-from + "is-directory@0.3.1": is-directory + "js-yaml@3.14.2": js-yaml + "argparse@1.0.10": argparse + "sprintf-js@1.0.3": sprintf-js + "esprima@4.0.1": esprima + "parse-json@4.0.0": parse-json + "error-ex@1.3.4": error-ex + "is-arrayish@0.2.1": is-arrayish + "json-parse-better-errors@1.0.2": json-parse-better-errors + "jest-validate@29.7.0": jest-validate + "camelcase@6.3.0": camelcase + "jest-get-type@29.6.3": jest-get-type + "leven@3.1.0": leven + "pretty-format@29.7.0": pretty-format + "ansi-styles@5.2.0": ansi-styles + "react-is@18.3.1": react-is + "metro-file-map@0.82.5": metro-file-map + "fb-watchman@2.0.2": fb-watchman + "bser@2.1.1": bser + "node-int64@0.4.0": node-int64 + "micromatch@4.0.8": micromatch + "braces@3.0.3": braces + "fill-range@7.1.1": fill-range + "to-regex-range@5.0.1": to-regex-range + "is-number@7.0.0": is-number + "walker@1.0.8": walker + "makeerror@1.0.12": makeerror + "tmpl@1.0.5": tmpl + "metro-runtime@0.82.5": metro-runtime + "@babel_runtime@7.28.4": '@babel/runtime' + "metro-source-map@0.82.5": metro-source-map + "@babel_traverse--for-generate-function-map@7.28.4": '@babel/traverse--for-generate-function-map' + "metro-symbolicate@0.82.5": metro-symbolicate + "source-map@0.5.7": source-map + "vlq@1.0.1": vlq + "ob1@0.82.5": ob1 + "metro-transform-plugins@0.82.5": metro-transform-plugins + "metro-transform-worker@0.82.5": metro-transform-worker + "metro-minify-terser@0.82.5": metro-minify-terser + "terser@5.44.0": terser + "@jridgewell_source-map@0.3.11": '@jridgewell/source-map' + "acorn@8.15.0": acorn + "commander@2.20.3": commander + "source-map-support@0.5.21": source-map-support + "buffer-from@1.1.2": buffer-from + "source-map@0.6.1": source-map + "serialize-error@2.1.0": serialize-error + "throat@5.0.0": throat + "ws@7.5.10": ws + "semver@7.7.3": semver + "@react-native_gradle-plugin@0.80.1": '@react-native/gradle-plugin' + "@react-native_js-polyfills@0.80.1": '@react-native/js-polyfills' + "@react-native_normalize-colors@0.80.1": '@react-native/normalize-colors' + "@react-native_virtualized-lists@0.80.1": '@react-native/virtualized-lists' + "abort-controller@3.0.0": abort-controller + "event-target-shim@5.0.1": event-target-shim + "anser@1.4.10": anser + "babel-jest@29.7.0": babel-jest + "@jest_transform@29.7.0": '@jest/transform' + "babel-plugin-istanbul@6.1.1": babel-plugin-istanbul + "@babel_helper-plugin-utils@7.27.1": '@babel/helper-plugin-utils' + "@istanbuljs_load-nyc-config@1.1.0": '@istanbuljs/load-nyc-config' + "camelcase@5.3.1": camelcase + "find-up@4.1.0": find-up + "locate-path@5.0.0": locate-path + "p-locate@4.1.0": p-locate + "p-limit@2.3.0": p-limit + "p-try@2.2.0": p-try + "get-package-type@0.1.0": get-package-type + "resolve-from@5.0.0": resolve-from + "@istanbuljs_schema@0.1.3": '@istanbuljs/schema' + "istanbul-lib-instrument@5.2.1": istanbul-lib-instrument + "istanbul-lib-coverage@3.2.2": istanbul-lib-coverage + "test-exclude@6.0.0": test-exclude + "fast-json-stable-stringify@2.1.0": fast-json-stable-stringify + "jest-haste-map@29.7.0": jest-haste-map + "@types_graceful-fs@4.1.9": '@types/graceful-fs' + "anymatch@3.1.3": anymatch + "normalize-path@3.0.0": normalize-path + "jest-regex-util@29.6.3": jest-regex-util + "fsevents@2.3.3": fsevents + "pirates@4.0.7": pirates + "slash@3.0.0": slash + "write-file-atomic@4.0.2": write-file-atomic + "imurmurhash@0.1.4": imurmurhash + "signal-exit@3.0.7": signal-exit + "@types_babel__core@7.20.5": '@types/babel__core' + "@types_babel__generator@7.27.0": '@types/babel__generator' + "@types_babel__template@7.4.4": '@types/babel__template' + "@types_babel__traverse@7.28.0": '@types/babel__traverse' + "babel-preset-jest@29.6.3": babel-preset-jest + "babel-plugin-jest-hoist@29.6.3": babel-plugin-jest-hoist + "babel-preset-current-node-syntax@1.2.0": babel-preset-current-node-syntax + "@babel_plugin-syntax-async-generators@7.8.4": '@babel/plugin-syntax-async-generators' + "@babel_plugin-syntax-bigint@7.8.3": '@babel/plugin-syntax-bigint' + "@babel_plugin-syntax-class-properties@7.12.13": '@babel/plugin-syntax-class-properties' + "@babel_plugin-syntax-class-static-block@7.14.5": '@babel/plugin-syntax-class-static-block' + "@babel_plugin-syntax-import-attributes@7.27.1": '@babel/plugin-syntax-import-attributes' + "@babel_plugin-syntax-import-meta@7.10.4": '@babel/plugin-syntax-import-meta' + "@babel_plugin-syntax-json-strings@7.8.3": '@babel/plugin-syntax-json-strings' + "@babel_plugin-syntax-logical-assignment-operators@7.10.4": '@babel/plugin-syntax-logical-assignment-operators' + "@babel_plugin-syntax-nullish-coalescing-operator@7.8.3": '@babel/plugin-syntax-nullish-coalescing-operator' + "@babel_plugin-syntax-numeric-separator@7.10.4": '@babel/plugin-syntax-numeric-separator' + "@babel_plugin-syntax-object-rest-spread@7.8.3": '@babel/plugin-syntax-object-rest-spread' + "@babel_plugin-syntax-optional-catch-binding@7.8.3": '@babel/plugin-syntax-optional-catch-binding' + "@babel_plugin-syntax-optional-chaining@7.8.3": '@babel/plugin-syntax-optional-chaining' + "@babel_plugin-syntax-private-property-in-object@7.14.5": '@babel/plugin-syntax-private-property-in-object' + "@babel_plugin-syntax-top-level-await@7.14.5": '@babel/plugin-syntax-top-level-await' + "babel-plugin-syntax-hermes-parser@0.28.1": babel-plugin-syntax-hermes-parser + "commander@12.1.0": commander + "jest-environment-node@29.7.0": jest-environment-node + "@jest_environment@29.7.0": '@jest/environment' + "@jest_fake-timers@29.7.0": '@jest/fake-timers' + "@sinonjs_fake-timers@10.3.0": '@sinonjs/fake-timers' + "@sinonjs_commons@3.0.1": '@sinonjs/commons' + "type-detect@4.0.8": type-detect + "jest-message-util@29.7.0": jest-message-util + "@types_stack-utils@2.0.3": '@types/stack-utils' + "stack-utils@2.0.6": stack-utils + "escape-string-regexp@2.0.0": escape-string-regexp + "jest-mock@29.7.0": jest-mock + "memoize-one@5.2.1": memoize-one + "promise@8.3.0": promise + "asap@2.0.6": asap + "react-devtools-core@6.1.5": react-devtools-core + "shell-quote@1.8.3": shell-quote + "react-refresh@0.14.2": react-refresh + "regenerator-runtime@0.13.11": regenerator-runtime + "scheduler@0.26.0": scheduler + "stacktrace-parser@0.1.11": stacktrace-parser + "type-fest@0.7.1": type-fest + "whatwg-fetch@3.6.20": whatwg-fetch + "react-native-app-auth@8.1.0": react-native-app-auth + "react-native-base64@0.0.2": react-native-base64 + "react-native-inappbrowser-reborn@3.7.0": react-native-inappbrowser-reborn + "opencollective-postinstall@2.0.3": opencollective-postinstall + "react-native-keychain@10.0.0": react-native-keychain + "react-native-legal@1.6.0": react-native-legal + "@callstack_licenses@0.3.0": '@callstack/licenses' + "xcode@3.0.1": xcode + "simple-plist@1.3.1": simple-plist + "bplist-creator@0.1.0": bplist-creator + "stream-buffers@2.2.0": stream-buffers + "bplist-parser@0.3.1": bplist-parser + "big-integer@1.6.52": big-integer + "uuid@7.0.3": uuid + "xml2js@0.6.2": xml2js + "sax@1.4.4": sax + "xmlbuilder@11.0.1": xmlbuilder + "react-native-nfc-manager@3.17.1": react-native-nfc-manager + "react-native-paper@5.14.5": react-native-paper + "@callstack_react-theme-provider@3.0.9": '@callstack/react-theme-provider' + "deepmerge@3.3.0": deepmerge + "hoist-non-react-statics@3.3.2": hoist-non-react-statics + "react-is@16.13.1": react-is + "color@3.2.1": color + "color-convert@1.9.3": color-convert + "color-name@1.1.3": color-name + "react-native-safe-area-context@5.6.1": react-native-safe-area-context + "react-native-screens@4.17.1": react-native-screens + "react-freeze@1.0.4": react-freeze + "react-native-svg@15.14.0": react-native-svg + "css-select@5.2.2": css-select + "boolbase@1.0.0": boolbase + "css-what@6.2.2": css-what + "domhandler@5.0.3": domhandler + "domelementtype@2.3.0": domelementtype + "domutils@3.2.2": domutils + "dom-serializer@2.0.0": dom-serializer + "entities@4.5.0": entities + "nth-check@2.1.1": nth-check + "css-tree@1.1.3": css-tree + "mdn-data@2.0.14": mdn-data + "react-native-vector-icons@10.3.0": react-native-vector-icons + "prop-types@15.8.1": prop-types + "object-assign@4.1.1": object-assign + "yargs@16.2.0": yargs +manual: + - name: '@react-native-vector-icons_material-design-icons@12.3.0' + version: '12.3.0' + source: https://github.com/oblador/react-native-vector-icons + file: '../node_modules/@react-native-vector-icons/material-design-icons/LICENSE' + - name: '@react-native-vector-icons_common@12.3.0' + version: '12.3.0' + source: https://github.com/oblador/react-native-vector-icons + file: '../node_modules/@react-native-vector-icons/common/LICENSE' + - name: find-up@7.0.0 + version: '7.0.0' + source: sindresorhus/find-up + file: '../node_modules/@react-native-vector-icons/common/node_modules/find-up/license' + - name: locate-path@6.0.0 + version: '6.0.0' + source: sindresorhus/locate-path + file: '../node_modules/locate-path/license' + - name: p-locate@5.0.0 + version: '5.0.0' + source: sindresorhus/p-locate + file: '../node_modules/p-locate/license' + - name: p-limit@3.1.0 + version: '3.1.0' + source: sindresorhus/p-limit + file: '../node_modules/p-limit/license' + - name: yocto-queue@0.1.0 + version: '0.1.0' + source: sindresorhus/yocto-queue + file: '../node_modules/yocto-queue/license' + - name: path-exists@4.0.0 + version: '4.0.0' + source: sindresorhus/path-exists + file: '../node_modules/path-exists/license' + - name: unicorn-magic@0.1.0 + version: '0.1.0' + source: sindresorhus/unicorn-magic + file: '../node_modules/unicorn-magic/license' + - name: picocolors@1.1.1 + version: '1.1.1' + source: alexeyraspopov/picocolors + file: '../node_modules/picocolors/LICENSE' + - name: plist@3.1.0 + version: '3.1.0' + source: https://github.com/TooTallNate/node-plist + file: '../node_modules/plist/LICENSE' + - name: '@xmldom_xmldom@0.8.11' + version: '0.8.11' + source: https://github.com/xmldom/xmldom + file: '../node_modules/@xmldom/xmldom/LICENSE' + - name: base64-js@1.5.1 + version: '1.5.1' + source: https://github.com/beatgammit/base64-js + file: '../node_modules/base64-js/LICENSE' + - name: xmlbuilder@15.1.1 + version: '15.1.1' + source: https://github.com/oozcitak/xmlbuilder-js + file: '../node_modules/xmlbuilder/LICENSE' + - name: '@react-native-vector-icons_material-icons@12.3.0' + version: '12.3.0' + source: https://github.com/oblador/react-native-vector-icons + file: '../node_modules/@react-native-vector-icons/material-icons/LICENSE' + - name: '@react-native_new-app-screen@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@react-navigation_bottom-tabs@7.4.9' + version: '7.4.9' + source: https://github.com/react-navigation/react-navigation + file: '../node_modules/@react-navigation/bottom-tabs/LICENSE' + - name: '@react-navigation_elements@2.6.5' + version: '2.6.5' + source: https://github.com/react-navigation/react-navigation + file: '../node_modules/@react-navigation/elements/LICENSE' + - name: color@4.2.3 + version: '4.2.3' + source: Qix-/color + file: '../node_modules/color/LICENSE' + - name: color-convert@2.0.1 + version: '2.0.1' + source: Qix-/color-convert + file: '../node_modules/color-convert/LICENSE' + - name: color-name@1.1.4 + version: '1.1.4' + source: https://github.com/colorjs/color-name + file: '../node_modules/color-name/LICENSE' + - name: color-string@1.9.1 + version: '1.9.1' + source: Qix-/color-string + file: '../node_modules/color-string/LICENSE' + - name: simple-swizzle@0.2.4 + version: '0.2.4' + source: qix-/node-simple-swizzle + file: '../node_modules/simple-swizzle/LICENSE' + - name: is-arrayish@0.3.4 + version: '0.3.4' + source: https://github.com/qix-/node-is-arrayish + file: '../node_modules/simple-swizzle/node_modules/is-arrayish/LICENSE' + - name: use-latest-callback@0.2.6 + version: '0.2.6' + source: https://github.com/satya164/use-latest-callback + file: '../node_modules/use-latest-callback/LICENSE' + - name: use-sync-external-store@1.6.0 + version: '1.6.0' + source: https://github.com/facebook/react + file: '../node_modules/use-sync-external-store/LICENSE' + - name: '@react-navigation_native@7.1.18' + version: '7.1.18' + source: https://github.com/react-navigation/react-navigation + file: '../node_modules/@react-navigation/native/LICENSE' + - name: '@react-navigation_core@7.12.4' + version: '7.12.4' + source: https://github.com/react-navigation/react-navigation + file: '../node_modules/@react-navigation/core/LICENSE' + - name: '@react-navigation_routers@7.5.1' + version: '7.5.1' + source: https://github.com/react-navigation/react-navigation + file: '../node_modules/@react-navigation/routers/LICENSE' + - name: nanoid@3.3.11 + version: '3.3.11' + source: ai/nanoid + file: '../node_modules/nanoid/LICENSE' + - name: escape-string-regexp@4.0.0 + version: '4.0.0' + source: sindresorhus/escape-string-regexp + file: '../node_modules/escape-string-regexp/license' + - name: query-string@7.1.3 + version: '7.1.3' + source: sindresorhus/query-string + file: '../node_modules/query-string/license' + - name: decode-uri-component@0.2.2 + version: '0.2.2' + source: SamVerschueren/decode-uri-component + file: '../node_modules/decode-uri-component/license' + - name: filter-obj@1.1.0 + version: '1.1.0' + source: sindresorhus/filter-obj + file: '../node_modules/filter-obj/license' + - name: split-on-first@1.1.0 + version: '1.1.0' + source: sindresorhus/split-on-first + file: '../node_modules/split-on-first/license' + - name: strict-uri-encode@2.0.0 + version: '2.0.0' + source: kevva/strict-uri-encode + file: '../node_modules/strict-uri-encode/license' + - name: react-is@19.2.0 + version: '19.2.0' + source: https://github.com/facebook/react + file: '../node_modules/react-is/LICENSE' + - name: fast-deep-equal@3.1.3 + version: '3.1.3' + source: https://github.com/epoberezkin/fast-deep-equal + file: '../node_modules/fast-deep-equal/LICENSE' + - name: '@react-navigation_native-stack@7.3.28' + version: '7.3.28' + source: https://github.com/react-navigation/react-navigation + file: '../node_modules/@react-navigation/native-stack/LICENSE' + - name: warn-once@0.1.1 + version: '0.1.1' + source: https://github.com/satya164/warn-once + file: '../node_modules/warn-once/LICENSE' + - name: array-equal@2.0.0 + version: '2.0.0' + source: sindresorhus/array-equal + file: '../node_modules/array-equal/license' + - name: axios@1.13.2 + version: '1.13.2' + source: https://github.com/axios/axios + file: '../node_modules/axios/LICENSE' + - name: follow-redirects@1.15.11 + version: '1.15.11' + source: https://github.com/follow-redirects/follow-redirects + file: '../node_modules/follow-redirects/LICENSE' + - name: form-data@4.0.5 + version: '4.0.5' + source: https://github.com/form-data/form-data + file: '../node_modules/form-data/License' + - name: asynckit@0.4.0 + version: '0.4.0' + source: https://github.com/alexindigo/asynckit + file: '../node_modules/asynckit/LICENSE' + - name: combined-stream@1.0.8 + version: '1.0.8' + source: https://github.com/felixge/node-combined-stream + file: '../node_modules/combined-stream/License' + - name: delayed-stream@1.0.0 + version: '1.0.0' + source: https://github.com/felixge/node-delayed-stream + file: '../node_modules/delayed-stream/License' + - name: es-set-tostringtag@2.1.0 + version: '2.1.0' + source: https://github.com/es-shims/es-set-tostringtag + file: '../node_modules/es-set-tostringtag/LICENSE' + - name: es-errors@1.3.0 + version: '1.3.0' + source: https://github.com/ljharb/es-errors + file: '../node_modules/es-errors/LICENSE' + - name: get-intrinsic@1.3.0 + version: '1.3.0' + source: https://github.com/ljharb/get-intrinsic + file: '../node_modules/get-intrinsic/LICENSE' + - name: call-bind-apply-helpers@1.0.2 + version: '1.0.2' + source: https://github.com/ljharb/call-bind-apply-helpers + file: '../node_modules/call-bind-apply-helpers/LICENSE' + - name: function-bind@1.1.2 + version: '1.1.2' + source: https://github.com/Raynos/function-bind + file: '../node_modules/function-bind/LICENSE' + - name: es-define-property@1.0.1 + version: '1.0.1' + source: https://github.com/ljharb/es-define-property + file: '../node_modules/es-define-property/LICENSE' + - name: es-object-atoms@1.1.1 + version: '1.1.1' + source: https://github.com/ljharb/es-object-atoms + file: '../node_modules/es-object-atoms/LICENSE' + - name: get-proto@1.0.1 + version: '1.0.1' + source: https://github.com/ljharb/get-proto + file: '../node_modules/get-proto/LICENSE' + - name: dunder-proto@1.0.1 + version: '1.0.1' + source: https://github.com/es-shims/dunder-proto + file: '../node_modules/dunder-proto/LICENSE' + - name: gopd@1.2.0 + version: '1.2.0' + source: https://github.com/ljharb/gopd + file: '../node_modules/gopd/LICENSE' + - name: has-symbols@1.1.0 + version: '1.1.0' + source: https://github.com/inspect-js/has-symbols + file: '../node_modules/has-symbols/LICENSE' + - name: hasown@2.0.2 + version: '2.0.2' + source: https://github.com/inspect-js/hasOwn + file: '../node_modules/hasown/LICENSE' + - name: math-intrinsics@1.1.0 + version: '1.1.0' + source: https://github.com/es-shims/math-intrinsics + file: '../node_modules/math-intrinsics/LICENSE' + - name: has-tostringtag@1.0.2 + version: '1.0.2' + source: https://github.com/inspect-js/has-tostringtag + file: '../node_modules/has-tostringtag/LICENSE' + - name: mime-types@2.1.35 + version: '2.1.35' + source: jshttp/mime-types + file: '../node_modules/mime-types/LICENSE' + - name: mime-db@1.52.0 + version: '1.52.0' + source: jshttp/mime-db + file: '../node_modules/mime-types/node_modules/mime-db/LICENSE' + - name: proxy-from-env@1.1.0 + version: '1.1.0' + source: https://github.com/Rob--W/proxy-from-env + file: '../node_modules/proxy-from-env/LICENSE' + - name: jwt-decode@4.0.0 + version: '4.0.0' + source: https://github.com/auth0/jwt-decode + file: '../node_modules/jwt-decode/LICENSE' + - name: react@19.1.0 + version: '19.1.0' + source: https://github.com/facebook/react + file: '../node_modules/react/LICENSE' + - name: react-native@0.80.1 + version: '0.80.1' + source: https://github.com/facebook/react-native + file: '../node_modules/react-native/LICENSE' + - name: '@jest_create-cache-key-function@29.7.0' + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/@jest/create-cache-key-function/LICENSE' + - name: '@jest_types@29.6.3' + version: '29.6.3' + source: https://github.com/jestjs/jest + file: '../node_modules/@jest/types/LICENSE' + - name: '@jest_schemas@29.6.3' + version: '29.6.3' + source: https://github.com/jestjs/jest + file: '../node_modules/@jest/schemas/LICENSE' + - name: '@sinclair_typebox@0.27.8' + version: '0.27.8' + source: https://github.com/sinclairzx81/typebox + file: '../node_modules/@sinclair/typebox/license' + - name: '@types_istanbul-lib-coverage@2.0.6' + version: '2.0.6' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/istanbul-lib-coverage/LICENSE' + - name: '@types_istanbul-reports@3.0.4' + version: '3.0.4' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/istanbul-reports/LICENSE' + - name: '@types_istanbul-lib-report@3.0.3' + version: '3.0.3' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/istanbul-lib-report/LICENSE' + - name: '@types_node@22.19.1' + version: '22.19.1' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/node/LICENSE' + - name: undici-types@6.21.0 + version: '6.21.0' + source: https://github.com/nodejs/undici + file: '../node_modules/undici-types/LICENSE' + - name: '@types_yargs@17.0.33' + version: '17.0.33' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/yargs/LICENSE' + - name: '@types_yargs-parser@21.0.3' + version: '21.0.3' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/yargs-parser/LICENSE' + - name: chalk@4.1.2 + version: '4.1.2' + source: chalk/chalk + file: '../node_modules/chalk/license' + - name: ansi-styles@4.3.0 + version: '4.3.0' + source: chalk/ansi-styles + file: '../node_modules/ansi-styles/license' + - name: supports-color@7.2.0 + version: '7.2.0' + source: chalk/supports-color + file: '../node_modules/supports-color/license' + - name: has-flag@4.0.0 + version: '4.0.0' + source: sindresorhus/has-flag + file: '../node_modules/has-flag/license' + - name: '@react-native_assets-registry@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@react-native_codegen@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: glob@7.2.3 + version: '7.2.3' + source: https://github.com/isaacs/node-glob + file: '../node_modules/glob/LICENSE' + - name: fs.realpath@1.0.0 + version: '1.0.0' + source: https://github.com/isaacs/fs.realpath + file: '../node_modules/fs.realpath/LICENSE' + - name: inflight@1.0.6 + version: '1.0.6' + source: https://github.com/npm/inflight + file: '../node_modules/inflight/LICENSE' + - name: once@1.4.0 + version: '1.4.0' + source: https://github.com/isaacs/once + file: '../node_modules/once/LICENSE' + - name: wrappy@1.0.2 + version: '1.0.2' + source: https://github.com/npm/wrappy + file: '../node_modules/wrappy/LICENSE' + - name: inherits@2.0.4 + version: '2.0.4' + source: https://github.com/isaacs/inherits + file: '../node_modules/inherits/LICENSE' + - name: minimatch@3.1.2 + version: '3.1.2' + source: https://github.com/isaacs/minimatch + file: '../node_modules/glob/node_modules/minimatch/LICENSE' + - name: brace-expansion@1.1.12 + version: '1.1.12' + source: https://github.com/juliangruber/brace-expansion + file: '../node_modules/glob/node_modules/brace-expansion/LICENSE' + - name: balanced-match@1.0.2 + version: '1.0.2' + source: https://github.com/juliangruber/balanced-match + file: '../node_modules/balanced-match/LICENSE.md' + - name: concat-map@0.0.1 + version: '0.0.1' + source: https://github.com/substack/node-concat-map + file: '../node_modules/concat-map/LICENSE' + - name: path-is-absolute@1.0.1 + version: '1.0.1' + source: sindresorhus/path-is-absolute + file: '../node_modules/path-is-absolute/license' + - name: hermes-parser@0.28.1 + version: '0.28.1' + source: https://github.com/facebook/hermes + file: '../node_modules/hermes-parser/LICENSE' + - name: hermes-estree@0.28.1 + version: '0.28.1' + source: https://github.com/facebook/hermes + file: '../node_modules/hermes-estree/LICENSE' + - name: invariant@2.2.4 + version: '2.2.4' + source: https://github.com/zertosh/invariant + file: '../node_modules/invariant/LICENSE' + - name: loose-envify@1.4.0 + version: '1.4.0' + source: https://github.com/zertosh/loose-envify + file: '../node_modules/loose-envify/LICENSE' + - name: js-tokens@4.0.0 + version: '4.0.0' + source: lydell/js-tokens + file: '../node_modules/js-tokens/LICENSE' + - name: nullthrows@1.1.1 + version: '1.1.1' + source: https://github.com/zertosh/nullthrows + file: '../node_modules/nullthrows/LICENSE' + - name: yargs@17.7.2 + version: '17.7.2' + source: https://github.com/yargs/yargs + file: '../node_modules/yargs/LICENSE' + - name: cliui@8.0.1 + version: '8.0.1' + source: yargs/cliui + body: ISC + - name: string-width@4.2.3 + version: '4.2.3' + source: sindresorhus/string-width + file: '../node_modules/string-width/license' + - name: emoji-regex@8.0.0 + version: '8.0.0' + source: https://github.com/mathiasbynens/emoji-regex + body: MIT + - name: is-fullwidth-code-point@3.0.0 + version: '3.0.0' + source: sindresorhus/is-fullwidth-code-point + file: '../node_modules/string-width/node_modules/is-fullwidth-code-point/license' + - name: strip-ansi@6.0.1 + version: '6.0.1' + source: chalk/strip-ansi + file: '../node_modules/strip-ansi/license' + - name: ansi-regex@5.0.1 + version: '5.0.1' + source: chalk/ansi-regex + file: '../node_modules/ansi-regex/license' + - name: wrap-ansi@7.0.0 + version: '7.0.0' + source: chalk/wrap-ansi + file: '../node_modules/wrap-ansi/license' + - name: escalade@3.2.0 + version: '3.2.0' + source: lukeed/escalade + file: '../node_modules/escalade/license' + - name: get-caller-file@2.0.5 + version: '2.0.5' + source: https://github.com/stefanpenner/get-caller-file + file: '../node_modules/get-caller-file/LICENSE.md' + - name: require-directory@2.1.1 + version: '2.1.1' + source: https://github.com/troygoode/node-require-directory + file: '../node_modules/require-directory/LICENSE' + - name: y18n@5.0.8 + version: '5.0.8' + source: yargs/y18n + file: '../node_modules/y18n/LICENSE' + - name: yargs-parser@21.1.1 + version: '21.1.1' + source: https://github.com/yargs/yargs-parser + body: ISC + - name: '@react-native_community-cli-plugin@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@react-native_dev-middleware@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@isaacs_ttlcache@1.4.1' + version: '1.4.1' + source: https://github.com/isaacs/ttlcache + file: '../node_modules/@isaacs/ttlcache/LICENSE' + - name: '@react-native_debugger-frontend@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: BSD-3-Clause + - name: chrome-launcher@0.15.2 + version: '0.15.2' + source: https://github.com/GoogleChrome/chrome-launcher/ + file: '../node_modules/chrome-launcher/LICENSE' + - name: is-wsl@2.2.0 + version: '2.2.0' + source: sindresorhus/is-wsl + file: '../node_modules/chrome-launcher/node_modules/is-wsl/license' + - name: is-docker@2.2.1 + version: '2.2.1' + source: sindresorhus/is-docker + file: '../node_modules/is-docker/license' + - name: lighthouse-logger@1.4.2 + version: '1.4.2' + file: '../node_modules/lighthouse-logger/LICENSE' + - name: debug@2.6.9 + version: '2.6.9' + source: https://github.com/visionmedia/debug + file: '../node_modules/lighthouse-logger/node_modules/debug/LICENSE' + - name: ms@2.0.0 + version: '2.0.0' + source: zeit/ms + file: '../node_modules/lighthouse-logger/node_modules/ms/license.md' + - name: marky@1.3.0 + version: '1.3.0' + source: https://github.com/nolanlawson/marky + file: '../node_modules/marky/LICENSE' + - name: chromium-edge-launcher@0.2.0 + version: '0.2.0' + source: https://github.com/cezaraugusto/chromium-edge-launcher/ + file: '../node_modules/chromium-edge-launcher/LICENSE' + - name: mkdirp@1.0.4 + version: '1.0.4' + source: https://github.com/isaacs/node-mkdirp + file: '../node_modules/mkdirp/LICENSE' + - name: rimraf@3.0.2 + version: '3.0.2' + source: https://github.com/isaacs/rimraf + file: '../node_modules/rimraf/LICENSE' + - name: connect@3.7.0 + version: '3.7.0' + source: senchalabs/connect + file: '../node_modules/connect/LICENSE' + - name: finalhandler@1.1.2 + version: '1.1.2' + source: pillarjs/finalhandler + file: '../node_modules/finalhandler/LICENSE' + - name: encodeurl@1.0.2 + version: '1.0.2' + source: pillarjs/encodeurl + file: '../node_modules/encodeurl/LICENSE' + - name: escape-html@1.0.3 + version: '1.0.3' + source: component/escape-html + file: '../node_modules/escape-html/LICENSE' + - name: on-finished@2.3.0 + version: '2.3.0' + source: jshttp/on-finished + file: '../node_modules/finalhandler/node_modules/on-finished/LICENSE' + - name: ee-first@1.1.1 + version: '1.1.1' + source: jonathanong/ee-first + file: '../node_modules/ee-first/LICENSE' + - name: parseurl@1.3.3 + version: '1.3.3' + source: pillarjs/parseurl + file: '../node_modules/parseurl/LICENSE' + - name: statuses@1.5.0 + version: '1.5.0' + source: jshttp/statuses + file: '../node_modules/statuses/LICENSE' + - name: unpipe@1.0.0 + version: '1.0.0' + source: stream-utils/unpipe + file: '../node_modules/unpipe/LICENSE' + - name: utils-merge@1.0.1 + version: '1.0.1' + source: https://github.com/jaredhanson/utils-merge + file: '../node_modules/utils-merge/LICENSE' + - name: debug@4.4.3 + version: '4.4.3' + source: https://github.com/debug-js/debug + file: '../node_modules/debug/LICENSE' + - name: ms@2.1.3 + version: '2.1.3' + source: vercel/ms + file: '../node_modules/ms/license.md' + - name: open@7.4.2 + version: '7.4.2' + source: sindresorhus/open + file: '../node_modules/@react-native/dev-middleware/node_modules/open/license' + - name: serve-static@1.16.2 + version: '1.16.2' + source: expressjs/serve-static + file: '../node_modules/serve-static/LICENSE' + - name: encodeurl@2.0.0 + version: '2.0.0' + source: pillarjs/encodeurl + file: '../node_modules/serve-static/node_modules/encodeurl/LICENSE' + - name: send@0.19.0 + version: '0.19.0' + source: pillarjs/send + file: '../node_modules/send/LICENSE' + - name: depd@2.0.0 + version: '2.0.0' + source: dougwilson/nodejs-depd + file: '../node_modules/depd/LICENSE' + - name: destroy@1.2.0 + version: '1.2.0' + source: stream-utils/destroy + file: '../node_modules/destroy/LICENSE' + - name: etag@1.8.1 + version: '1.8.1' + source: jshttp/etag + file: '../node_modules/etag/LICENSE' + - name: fresh@0.5.2 + version: '0.5.2' + source: jshttp/fresh + file: '../node_modules/fresh/LICENSE' + - name: http-errors@2.0.0 + version: '2.0.0' + source: jshttp/http-errors + file: '../node_modules/http-errors/LICENSE' + - name: setprototypeof@1.2.0 + version: '1.2.0' + source: https://github.com/wesleytodd/setprototypeof + file: '../node_modules/setprototypeof/LICENSE' + - name: statuses@2.0.1 + version: '2.0.1' + source: jshttp/statuses + file: '../node_modules/http-errors/node_modules/statuses/LICENSE' + - name: toidentifier@1.0.1 + version: '1.0.1' + source: component/toidentifier + file: '../node_modules/toidentifier/LICENSE' + - name: mime@1.6.0 + version: '1.6.0' + source: https://github.com/broofa/node-mime + file: '../node_modules/send/node_modules/mime/LICENSE' + - name: on-finished@2.4.1 + version: '2.4.1' + source: jshttp/on-finished + file: '../node_modules/on-finished/LICENSE' + - name: range-parser@1.2.1 + version: '1.2.1' + source: jshttp/range-parser + file: '../node_modules/range-parser/LICENSE' + - name: ws@6.2.3 + version: '6.2.3' + source: websockets/ws + file: '../node_modules/ws/LICENSE' + - name: async-limiter@1.0.1 + version: '1.0.1' + source: https://github.com/strml/async-limiter + file: '../node_modules/async-limiter/LICENSE' + - name: metro@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: '@babel_code-frame@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/code-frame/LICENSE' + - name: '@babel_helper-validator-identifier@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-validator-identifier/LICENSE' + - name: '@babel_core@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/core/LICENSE' + - name: '@babel_generator@7.28.3' + version: '7.28.3' + source: https://github.com/babel/babel + file: '../node_modules/@babel/generator/LICENSE' + - name: '@babel_parser@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/parser/LICENSE' + - name: '@babel_types@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/types/LICENSE' + - name: '@babel_helper-string-parser@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-string-parser/LICENSE' + - name: '@jridgewell_gen-mapping@0.3.13' + version: '0.3.13' + source: https://github.com/jridgewell/sourcemaps + file: '../node_modules/@jridgewell/gen-mapping/LICENSE' + - name: '@jridgewell_sourcemap-codec@1.5.5' + version: '1.5.5' + source: https://github.com/jridgewell/sourcemaps + file: '../node_modules/@jridgewell/sourcemap-codec/LICENSE' + - name: '@jridgewell_trace-mapping@0.3.31' + version: '0.3.31' + source: https://github.com/jridgewell/sourcemaps + file: '../node_modules/@jridgewell/trace-mapping/LICENSE' + - name: '@jridgewell_resolve-uri@3.1.2' + version: '3.1.2' + source: https://github.com/jridgewell/resolve-uri + file: '../node_modules/@jridgewell/resolve-uri/LICENSE' + - name: jsesc@3.1.0 + version: '3.1.0' + source: https://github.com/mathiasbynens/jsesc + body: MIT + - name: '@babel_helper-compilation-targets@7.27.2' + version: '7.27.2' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-compilation-targets/LICENSE' + - name: '@babel_compat-data@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/compat-data/LICENSE' + - name: '@babel_helper-validator-option@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-validator-option/LICENSE' + - name: browserslist@4.26.3 + version: '4.26.3' + source: browserslist/browserslist + file: '../node_modules/browserslist/LICENSE' + - name: baseline-browser-mapping@2.8.18 + version: '2.8.18' + source: https://github.com/web-platform-dx/baseline-browser-mapping + body: Apache-2.0 + - name: caniuse-lite@1.0.30001751 + version: '1.0.30001751' + source: browserslist/caniuse-lite + file: '../node_modules/caniuse-lite/LICENSE' + - name: electron-to-chromium@1.5.237 + version: '1.5.237' + source: https://github.com/kilian/electron-to-chromium/ + file: '../node_modules/electron-to-chromium/LICENSE' + - name: node-releases@2.0.25 + version: '2.0.25' + source: https://github.com/chicoxyzzy/node-releases + file: '../node_modules/node-releases/LICENSE' + - name: update-browserslist-db@1.1.3 + version: '1.1.3' + source: browserslist/update-db + file: '../node_modules/update-browserslist-db/LICENSE' + - name: lru-cache@5.1.1 + version: '5.1.1' + source: https://github.com/isaacs/node-lru-cache + file: '../node_modules/lru-cache/LICENSE' + - name: yallist@3.1.1 + version: '3.1.1' + source: https://github.com/isaacs/yallist + file: '../node_modules/yallist/LICENSE' + - name: semver@6.3.1 + version: '6.3.1' + source: https://github.com/npm/node-semver + file: '../node_modules/semver/LICENSE' + - name: '@babel_helper-module-transforms@7.28.3' + version: '7.28.3' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-module-transforms/LICENSE' + - name: '@babel_helper-module-imports@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-module-imports/LICENSE' + - name: '@babel_traverse@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/traverse/LICENSE' + - name: '@babel_helper-globals@7.28.0' + version: '7.28.0' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-globals/LICENSE' + - name: '@babel_template@7.27.2' + version: '7.27.2' + source: https://github.com/babel/babel + file: '../node_modules/@babel/template/LICENSE' + - name: '@babel_helpers@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helpers/LICENSE' + - name: '@jridgewell_remapping@2.3.5' + version: '2.3.5' + source: https://github.com/jridgewell/sourcemaps + file: '../node_modules/@jridgewell/remapping/LICENSE' + - name: convert-source-map@2.0.0 + version: '2.0.0' + source: https://github.com/thlorenz/convert-source-map + file: '../node_modules/convert-source-map/LICENSE' + - name: gensync@1.0.0-beta.2 + version: '1.0.0-beta.2' + source: https://github.com/loganfsmyth/gensync + file: '../node_modules/gensync/LICENSE' + - name: json5@2.2.3 + version: '2.2.3' + source: https://github.com/json5/json5 + file: '../node_modules/json5/LICENSE.md' + - name: accepts@1.3.8 + version: '1.3.8' + source: jshttp/accepts + file: '../node_modules/accepts/LICENSE' + - name: negotiator@0.6.3 + version: '0.6.3' + source: jshttp/negotiator + file: '../node_modules/accepts/node_modules/negotiator/LICENSE' + - name: ci-info@2.0.0 + version: '2.0.0' + source: https://github.com/watson/ci-info + file: '../node_modules/metro/node_modules/ci-info/LICENSE' + - name: error-stack-parser@2.1.4 + version: '2.1.4' + source: https://github.com/stacktracejs/error-stack-parser + file: '../node_modules/error-stack-parser/LICENSE' + - name: stackframe@1.3.4 + version: '1.3.4' + source: https://github.com/stacktracejs/stackframe + file: '../node_modules/stackframe/LICENSE' + - name: flow-enums-runtime@0.0.6 + version: '0.0.6' + source: https://github.com/facebook/flow + file: '../node_modules/flow-enums-runtime/LICENSE' + - name: graceful-fs@4.2.11 + version: '4.2.11' + source: https://github.com/isaacs/node-graceful-fs + file: '../node_modules/graceful-fs/LICENSE' + - name: hermes-parser@0.29.1 + version: '0.29.1' + source: https://github.com/facebook/hermes + file: '../node_modules/metro/node_modules/hermes-parser/LICENSE' + - name: hermes-estree@0.29.1 + version: '0.29.1' + source: https://github.com/facebook/hermes + file: '../node_modules/metro/node_modules/hermes-estree/LICENSE' + - name: image-size@1.2.1 + version: '1.2.1' + source: https://github.com/image-size/image-size + file: '../node_modules/image-size/LICENSE' + - name: queue@6.0.2 + version: '6.0.2' + source: https://github.com/jessetane/queue + file: '../node_modules/queue/LICENSE' + - name: jest-worker@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-worker/LICENSE' + - name: jest-util@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-util/LICENSE' + - name: ci-info@3.9.0 + version: '3.9.0' + source: https://github.com/watson/ci-info + file: '../node_modules/ci-info/LICENSE' + - name: picomatch@2.3.1 + version: '2.3.1' + source: micromatch/picomatch + file: '../node_modules/picomatch/LICENSE' + - name: merge-stream@2.0.0 + version: '2.0.0' + source: grncdr/merge-stream + file: '../node_modules/merge-stream/LICENSE' + - name: supports-color@8.1.1 + version: '8.1.1' + source: chalk/supports-color + file: '../node_modules/jest-worker/node_modules/supports-color/license' + - name: jsc-safe-url@0.2.4 + version: '0.2.4' + source: https://github.com/robhogan/jsc-safe-url + file: '../node_modules/jsc-safe-url/LICENSE' + - name: lodash.throttle@4.1.1 + version: '4.1.1' + source: lodash/lodash + file: '../node_modules/lodash.throttle/LICENSE' + - name: metro-babel-transformer@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-cache@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: exponential-backoff@3.1.3 + version: '3.1.3' + source: https://github.com/coveooss/exponential-backoff + file: '../node_modules/exponential-backoff/LICENSE' + - name: https-proxy-agent@7.0.6 + version: '7.0.6' + source: https://github.com/TooTallNate/proxy-agents + file: '../node_modules/https-proxy-agent/LICENSE' + - name: agent-base@7.1.4 + version: '7.1.4' + source: https://github.com/TooTallNate/proxy-agents + file: '../node_modules/agent-base/LICENSE' + - name: metro-core@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-resolver@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-cache-key@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-config@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: cosmiconfig@5.2.1 + version: '5.2.1' + source: https://github.com/davidtheclark/cosmiconfig + file: '../node_modules/metro-config/node_modules/cosmiconfig/LICENSE' + - name: import-fresh@2.0.0 + version: '2.0.0' + source: sindresorhus/import-fresh + file: '../node_modules/metro-config/node_modules/import-fresh/license' + - name: caller-path@2.0.0 + version: '2.0.0' + source: sindresorhus/caller-path + file: '../node_modules/caller-path/license' + - name: caller-callsite@2.0.0 + version: '2.0.0' + source: sindresorhus/caller-callsite + file: '../node_modules/caller-callsite/license' + - name: callsites@2.0.0 + version: '2.0.0' + source: sindresorhus/callsites + file: '../node_modules/caller-callsite/node_modules/callsites/license' + - name: resolve-from@3.0.0 + version: '3.0.0' + source: sindresorhus/resolve-from + file: '../node_modules/metro-config/node_modules/resolve-from/license' + - name: is-directory@0.3.1 + version: '0.3.1' + source: jonschlinkert/is-directory + file: '../node_modules/is-directory/LICENSE' + - name: js-yaml@3.14.2 + version: '3.14.2' + source: nodeca/js-yaml + file: '../node_modules/metro-config/node_modules/js-yaml/LICENSE' + - name: argparse@1.0.10 + version: '1.0.10' + source: nodeca/argparse + file: '../node_modules/metro-config/node_modules/argparse/LICENSE' + - name: sprintf-js@1.0.3 + version: '1.0.3' + source: https://github.com/alexei/sprintf.js + file: '../node_modules/sprintf-js/LICENSE' + - name: esprima@4.0.1 + version: '4.0.1' + source: https://github.com/jquery/esprima + body: BSD-2-Clause + - name: parse-json@4.0.0 + version: '4.0.0' + source: sindresorhus/parse-json + file: '../node_modules/metro-config/node_modules/parse-json/license' + - name: error-ex@1.3.4 + version: '1.3.4' + source: qix-/node-error-ex + file: '../node_modules/error-ex/LICENSE' + - name: is-arrayish@0.2.1 + version: '0.2.1' + source: https://github.com/qix-/node-is-arrayish + file: '../node_modules/is-arrayish/LICENSE' + - name: json-parse-better-errors@1.0.2 + version: '1.0.2' + source: https://github.com/zkat/json-parse-better-errors + file: '../node_modules/json-parse-better-errors/LICENSE.md' + - name: jest-validate@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-validate/LICENSE' + - name: camelcase@6.3.0 + version: '6.3.0' + source: sindresorhus/camelcase + file: '../node_modules/jest-validate/node_modules/camelcase/license' + - name: jest-get-type@29.6.3 + version: '29.6.3' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-get-type/LICENSE' + - name: leven@3.1.0 + version: '3.1.0' + source: sindresorhus/leven + file: '../node_modules/leven/license' + - name: pretty-format@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-validate/node_modules/pretty-format/LICENSE' + - name: ansi-styles@5.2.0 + version: '5.2.0' + source: chalk/ansi-styles + file: '../node_modules/jest-validate/node_modules/ansi-styles/license' + - name: react-is@18.3.1 + version: '18.3.1' + source: https://github.com/facebook/react + file: '../node_modules/jest-validate/node_modules/react-is/LICENSE' + - name: metro-file-map@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: fb-watchman@2.0.2 + version: '2.0.2' + source: https://github.com/facebook/watchman + body: Apache-2.0 + - name: bser@2.1.1 + version: '2.1.1' + source: https://github.com/facebook/watchman + body: Apache-2.0 + - name: node-int64@0.4.0 + version: '0.4.0' + source: https://github.com/broofa/node-int64 + file: '../node_modules/node-int64/LICENSE' + - name: micromatch@4.0.8 + version: '4.0.8' + source: micromatch/micromatch + file: '../node_modules/micromatch/LICENSE' + - name: braces@3.0.3 + version: '3.0.3' + source: micromatch/braces + file: '../node_modules/braces/LICENSE' + - name: fill-range@7.1.1 + version: '7.1.1' + source: jonschlinkert/fill-range + file: '../node_modules/fill-range/LICENSE' + - name: to-regex-range@5.0.1 + version: '5.0.1' + source: micromatch/to-regex-range + file: '../node_modules/to-regex-range/LICENSE' + - name: is-number@7.0.0 + version: '7.0.0' + source: jonschlinkert/is-number + file: '../node_modules/is-number/LICENSE' + - name: walker@1.0.8 + version: '1.0.8' + source: https://github.com/daaku/nodejs-walker + file: '../node_modules/walker/LICENSE' + - name: makeerror@1.0.12 + version: '1.0.12' + source: https://github.com/daaku/nodejs-makeerror + file: '../node_modules/makeerror/license' + - name: tmpl@1.0.5 + version: '1.0.5' + source: https://github.com/daaku/nodejs-tmpl + file: '../node_modules/tmpl/license' + - name: metro-runtime@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: '@babel_runtime@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/runtime/LICENSE' + - name: metro-source-map@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: '@babel_traverse--for-generate-function-map@7.28.4' + version: '7.28.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/traverse--for-generate-function-map/LICENSE' + - name: metro-symbolicate@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: source-map@0.5.7 + version: '0.5.7' + source: http://github.com/mozilla/source-map + file: '../node_modules/metro-symbolicate/node_modules/source-map/LICENSE' + - name: vlq@1.0.1 + version: '1.0.1' + source: https://github.com/Rich-Harris/vlq + file: '../node_modules/vlq/LICENSE' + - name: ob1@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-transform-plugins@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-transform-worker@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: metro-minify-terser@0.82.5 + version: '0.82.5' + source: https://github.com/facebook/metro + body: MIT + - name: terser@5.44.0 + version: '5.44.0' + source: https://github.com/terser/terser + file: '../node_modules/terser/LICENSE' + - name: '@jridgewell_source-map@0.3.11' + version: '0.3.11' + source: https://github.com/jridgewell/sourcemaps + file: '../node_modules/@jridgewell/source-map/LICENSE' + - name: acorn@8.15.0 + version: '8.15.0' + source: https://github.com/acornjs/acorn + file: '../node_modules/acorn/LICENSE' + - name: commander@2.20.3 + version: '2.20.3' + source: https://github.com/tj/commander.js + file: '../node_modules/terser/node_modules/commander/LICENSE' + - name: source-map-support@0.5.21 + version: '0.5.21' + source: https://github.com/evanw/node-source-map-support + file: '../node_modules/terser/node_modules/source-map-support/LICENSE.md' + - name: buffer-from@1.1.2 + version: '1.1.2' + source: LinusU/buffer-from + file: '../node_modules/buffer-from/LICENSE' + - name: source-map@0.6.1 + version: '0.6.1' + source: http://github.com/mozilla/source-map + file: '../node_modules/source-map/LICENSE' + - name: serialize-error@2.1.0 + version: '2.1.0' + source: sindresorhus/serialize-error + file: '../node_modules/serialize-error/license' + - name: throat@5.0.0 + version: '5.0.0' + source: https://github.com/ForbesLindesay/throat + file: '../node_modules/throat/LICENSE' + - name: ws@7.5.10 + version: '7.5.10' + source: websockets/ws + file: '../node_modules/metro/node_modules/ws/LICENSE' + - name: semver@7.7.3 + version: '7.7.3' + source: https://github.com/npm/node-semver + file: '../node_modules/@react-native/community-cli-plugin/node_modules/semver/LICENSE' + - name: '@react-native_gradle-plugin@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@react-native_js-polyfills@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@react-native_normalize-colors@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: '@react-native_virtualized-lists@0.80.1' + version: '0.80.1' + source: https://github.com/facebook/react-native + body: MIT + - name: abort-controller@3.0.0 + version: '3.0.0' + source: https://github.com/mysticatea/abort-controller + file: '../node_modules/abort-controller/LICENSE' + - name: event-target-shim@5.0.1 + version: '5.0.1' + source: https://github.com/mysticatea/event-target-shim + file: '../node_modules/event-target-shim/LICENSE' + - name: anser@1.4.10 + version: '1.4.10' + source: https://github.com/IonicaBizau/anser + file: '../node_modules/anser/LICENSE' + - name: babel-jest@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/babel-jest/LICENSE' + - name: '@jest_transform@29.7.0' + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/@jest/transform/LICENSE' + - name: babel-plugin-istanbul@6.1.1 + version: '6.1.1' + source: https://github.com/istanbuljs/babel-plugin-istanbul + file: '../node_modules/babel-plugin-istanbul/LICENSE' + - name: '@babel_helper-plugin-utils@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/helper-plugin-utils/LICENSE' + - name: '@istanbuljs_load-nyc-config@1.1.0' + version: '1.1.0' + source: https://github.com/istanbuljs/load-nyc-config + file: '../node_modules/@istanbuljs/load-nyc-config/LICENSE' + - name: camelcase@5.3.1 + version: '5.3.1' + source: sindresorhus/camelcase + file: '../node_modules/camelcase/license' + - name: find-up@4.1.0 + version: '4.1.0' + source: sindresorhus/find-up + file: '../node_modules/@istanbuljs/load-nyc-config/node_modules/find-up/license' + - name: locate-path@5.0.0 + version: '5.0.0' + source: sindresorhus/locate-path + file: '../node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path/license' + - name: p-locate@4.1.0 + version: '4.1.0' + source: sindresorhus/p-locate + file: '../node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate/license' + - name: p-limit@2.3.0 + version: '2.3.0' + source: sindresorhus/p-limit + file: '../node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit/license' + - name: p-try@2.2.0 + version: '2.2.0' + source: sindresorhus/p-try + file: '../node_modules/p-try/license' + - name: get-package-type@0.1.0 + version: '0.1.0' + source: https://github.com/cfware/get-package-type + file: '../node_modules/get-package-type/LICENSE' + - name: resolve-from@5.0.0 + version: '5.0.0' + source: sindresorhus/resolve-from + file: '../node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from/license' + - name: '@istanbuljs_schema@0.1.3' + version: '0.1.3' + source: https://github.com/istanbuljs/schema + file: '../node_modules/@istanbuljs/schema/LICENSE' + - name: istanbul-lib-instrument@5.2.1 + version: '5.2.1' + source: https://github.com/istanbuljs/istanbuljs + file: '../node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument/LICENSE' + - name: istanbul-lib-coverage@3.2.2 + version: '3.2.2' + source: https://github.com/istanbuljs/istanbuljs + file: '../node_modules/istanbul-lib-coverage/LICENSE' + - name: test-exclude@6.0.0 + version: '6.0.0' + source: https://github.com/istanbuljs/test-exclude + body: ISC + - name: fast-json-stable-stringify@2.1.0 + version: '2.1.0' + source: https://github.com/epoberezkin/fast-json-stable-stringify + file: '../node_modules/fast-json-stable-stringify/LICENSE' + - name: jest-haste-map@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-haste-map/LICENSE' + - name: '@types_graceful-fs@4.1.9' + version: '4.1.9' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/graceful-fs/LICENSE' + - name: anymatch@3.1.3 + version: '3.1.3' + source: https://github.com/micromatch/anymatch + file: '../node_modules/anymatch/LICENSE' + - name: normalize-path@3.0.0 + version: '3.0.0' + source: jonschlinkert/normalize-path + file: '../node_modules/normalize-path/LICENSE' + - name: jest-regex-util@29.6.3 + version: '29.6.3' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-regex-util/LICENSE' + - name: fsevents@2.3.3 + version: '2.3.3' + source: https://github.com/fsevents/fsevents + file: '../node_modules/fsevents/LICENSE' + - name: pirates@4.0.7 + version: '4.0.7' + source: https://github.com/danez/pirates + file: '../node_modules/pirates/LICENSE' + - name: slash@3.0.0 + version: '3.0.0' + source: sindresorhus/slash + file: '../node_modules/slash/license' + - name: write-file-atomic@4.0.2 + version: '4.0.2' + source: https://github.com/npm/write-file-atomic + file: '../node_modules/write-file-atomic/LICENSE.md' + - name: imurmurhash@0.1.4 + version: '0.1.4' + source: https://github.com/jensyt/imurmurhash-js + body: MIT + - name: signal-exit@3.0.7 + version: '3.0.7' + source: https://github.com/tapjs/signal-exit + body: ISC + - name: '@types_babel__core@7.20.5' + version: '7.20.5' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/babel__core/LICENSE' + - name: '@types_babel__generator@7.27.0' + version: '7.27.0' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/babel__generator/LICENSE' + - name: '@types_babel__template@7.4.4' + version: '7.4.4' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/babel__template/LICENSE' + - name: '@types_babel__traverse@7.28.0' + version: '7.28.0' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/babel__traverse/LICENSE' + - name: babel-preset-jest@29.6.3 + version: '29.6.3' + source: https://github.com/jestjs/jest + file: '../node_modules/babel-preset-jest/LICENSE' + - name: babel-plugin-jest-hoist@29.6.3 + version: '29.6.3' + source: https://github.com/jestjs/jest + file: '../node_modules/babel-plugin-jest-hoist/LICENSE' + - name: babel-preset-current-node-syntax@1.2.0 + version: '1.2.0' + source: https://github.com/nicolo-ribaudo/babel-preset-current-node-syntax + file: '../node_modules/babel-preset-current-node-syntax/LICENSE' + - name: '@babel_plugin-syntax-async-generators@7.8.4' + version: '7.8.4' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators + file: '../node_modules/@babel/plugin-syntax-async-generators/LICENSE' + - name: '@babel_plugin-syntax-bigint@7.8.3' + version: '7.8.3' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-bigint + file: '../node_modules/@babel/plugin-syntax-bigint/LICENSE' + - name: '@babel_plugin-syntax-class-properties@7.12.13' + version: '7.12.13' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-class-properties/LICENSE' + - name: '@babel_plugin-syntax-class-static-block@7.14.5' + version: '7.14.5' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-class-static-block/LICENSE' + - name: '@babel_plugin-syntax-import-attributes@7.27.1' + version: '7.27.1' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-import-attributes/LICENSE' + - name: '@babel_plugin-syntax-import-meta@7.10.4' + version: '7.10.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-import-meta/LICENSE' + - name: '@babel_plugin-syntax-json-strings@7.8.3' + version: '7.8.3' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings + file: '../node_modules/@babel/plugin-syntax-json-strings/LICENSE' + - name: '@babel_plugin-syntax-logical-assignment-operators@7.10.4' + version: '7.10.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-logical-assignment-operators/LICENSE' + - name: '@babel_plugin-syntax-nullish-coalescing-operator@7.8.3' + version: '7.8.3' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator + file: '../node_modules/@babel/plugin-syntax-nullish-coalescing-operator/LICENSE' + - name: '@babel_plugin-syntax-numeric-separator@7.10.4' + version: '7.10.4' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-numeric-separator/LICENSE' + - name: '@babel_plugin-syntax-object-rest-spread@7.8.3' + version: '7.8.3' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread + file: '../node_modules/@babel/plugin-syntax-object-rest-spread/LICENSE' + - name: '@babel_plugin-syntax-optional-catch-binding@7.8.3' + version: '7.8.3' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding + file: '../node_modules/@babel/plugin-syntax-optional-catch-binding/LICENSE' + - name: '@babel_plugin-syntax-optional-chaining@7.8.3' + version: '7.8.3' + source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining + file: '../node_modules/@babel/plugin-syntax-optional-chaining/LICENSE' + - name: '@babel_plugin-syntax-private-property-in-object@7.14.5' + version: '7.14.5' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-private-property-in-object/LICENSE' + - name: '@babel_plugin-syntax-top-level-await@7.14.5' + version: '7.14.5' + source: https://github.com/babel/babel + file: '../node_modules/@babel/plugin-syntax-top-level-await/LICENSE' + - name: babel-plugin-syntax-hermes-parser@0.28.1 + version: '0.28.1' + source: https://github.com/facebook/hermes + file: '../node_modules/babel-plugin-syntax-hermes-parser/LICENSE' + - name: commander@12.1.0 + version: '12.1.0' + source: https://github.com/tj/commander.js + file: '../node_modules/react-native/node_modules/commander/LICENSE' + - name: jest-environment-node@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-environment-node/LICENSE' + - name: '@jest_environment@29.7.0' + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/@jest/environment/LICENSE' + - name: '@jest_fake-timers@29.7.0' + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/@jest/fake-timers/LICENSE' + - name: '@sinonjs_fake-timers@10.3.0' + version: '10.3.0' + source: https://github.com/sinonjs/fake-timers + file: '../node_modules/@sinonjs/fake-timers/LICENSE' + - name: '@sinonjs_commons@3.0.1' + version: '3.0.1' + source: https://github.com/sinonjs/commons + file: '../node_modules/@sinonjs/commons/LICENSE' + - name: type-detect@4.0.8 + version: '4.0.8' + source: https://github.com/chaijs/type-detect + file: '../node_modules/type-detect/LICENSE' + - name: jest-message-util@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-message-util/LICENSE' + - name: '@types_stack-utils@2.0.3' + version: '2.0.3' + source: https://github.com/DefinitelyTyped/DefinitelyTyped + file: '../node_modules/@types/stack-utils/LICENSE' + - name: stack-utils@2.0.6 + version: '2.0.6' + source: tapjs/stack-utils + file: '../node_modules/stack-utils/LICENSE.md' + - name: escape-string-regexp@2.0.0 + version: '2.0.0' + source: sindresorhus/escape-string-regexp + file: '../node_modules/stack-utils/node_modules/escape-string-regexp/license' + - name: jest-mock@29.7.0 + version: '29.7.0' + source: https://github.com/jestjs/jest + file: '../node_modules/jest-mock/LICENSE' + - name: memoize-one@5.2.1 + version: '5.2.1' + source: https://github.com/alexreardon/memoize-one + file: '../node_modules/memoize-one/LICENSE' + - name: promise@8.3.0 + version: '8.3.0' + source: https://github.com/then/promise + file: '../node_modules/promise/LICENSE' + - name: asap@2.0.6 + version: '2.0.6' + source: https://github.com/kriskowal/asap + file: '../node_modules/asap/LICENSE.md' + - name: react-devtools-core@6.1.5 + version: '6.1.5' + source: https://github.com/facebook/react + body: MIT + - name: shell-quote@1.8.3 + version: '1.8.3' + source: http://github.com/ljharb/shell-quote + file: '../node_modules/shell-quote/LICENSE' + - name: react-refresh@0.14.2 + version: '0.14.2' + source: https://github.com/facebook/react + file: '../node_modules/react-refresh/LICENSE' + - name: regenerator-runtime@0.13.11 + version: '0.13.11' + source: https://github.com/facebook/regenerator/tree/main/packages/runtime + file: '../node_modules/regenerator-runtime/LICENSE' + - name: scheduler@0.26.0 + version: '0.26.0' + source: https://github.com/facebook/react + file: '../node_modules/scheduler/LICENSE' + - name: stacktrace-parser@0.1.11 + version: '0.1.11' + source: https://github.com/errwischt/stacktrace-parser + file: '../node_modules/stacktrace-parser/LICENSE' + - name: type-fest@0.7.1 + version: '0.7.1' + source: sindresorhus/type-fest + file: '../node_modules/stacktrace-parser/node_modules/type-fest/license' + - name: whatwg-fetch@3.6.20 + version: '3.6.20' + source: github/fetch + file: '../node_modules/whatwg-fetch/LICENSE' + - name: react-native-app-auth@8.1.0 + version: '8.1.0' + source: https://github.com/FormidableLabs/react-native-app-auth + body: MIT + - name: react-native-base64@0.0.2 + version: '0.0.2' + source: https://github.com/eranbo/react-native-base64 + file: '../node_modules/react-native-base64/LICENSE' + - name: react-native-inappbrowser-reborn@3.7.0 + version: '3.7.0' + source: https://github.com/proyecto26/react-native-inappbrowser + file: '../node_modules/react-native-inappbrowser-reborn/LICENSE' + - name: opencollective-postinstall@2.0.3 + version: '2.0.3' + source: https://github.com/opencollective/opencollective-postinstall + file: '../node_modules/opencollective-postinstall/LICENSE' + - name: react-native-keychain@10.0.0 + version: '10.0.0' + source: https://github.com/oblador/react-native-keychain + file: '../node_modules/react-native-keychain/LICENSE' + - name: react-native-legal@1.6.0 + version: '1.6.0' + source: https://github.com/callstackincubator/react-native-legal + file: '../node_modules/react-native-legal/LICENSE' + - name: '@callstack_licenses@0.3.0' + version: '0.3.0' + source: https://github.com/callstackincubator/react-native-legal + file: '../node_modules/@callstack/licenses/LICENSE' + - name: xcode@3.0.1 + version: '3.0.1' + source: https://github.com/apache/cordova-node-xcode + file: '../node_modules/xcode/LICENSE' + - name: simple-plist@1.3.1 + version: '1.3.1' + source: https://github.com/wollardj/simple-plist + file: '../node_modules/simple-plist/LICENSE' + - name: bplist-creator@0.1.0 + version: '0.1.0' + source: https://github.com/nearinfinity/node-bplist-creator + file: '../node_modules/bplist-creator/LICENSE' + - name: stream-buffers@2.2.0 + version: '2.2.0' + source: https://github.com/samcday/node-stream-buffer + body: Unlicense + - name: bplist-parser@0.3.1 + version: '0.3.1' + source: https://github.com/nearinfinity/node-bplist-parser + body: MIT + - name: big-integer@1.6.52 + version: '1.6.52' + source: https://github.com/peterolson/BigInteger.js + file: '../node_modules/big-integer/LICENSE' + - name: uuid@7.0.3 + version: '7.0.3' + source: https://github.com/uuidjs/uuid + file: '../node_modules/uuid/LICENSE.md' + - name: xml2js@0.6.2 + version: '0.6.2' + source: https://github.com/Leonidas-from-XIV/node-xml2js + file: '../node_modules/xml2js/LICENSE' + - name: sax@1.4.4 + version: '1.4.4' + source: https://github.com/isaacs/sax-js + file: '../node_modules/sax/LICENSE.md' + - name: xmlbuilder@11.0.1 + version: '11.0.1' + source: https://github.com/oozcitak/xmlbuilder-js + file: '../node_modules/xml2js/node_modules/xmlbuilder/LICENSE' + - name: react-native-nfc-manager@3.17.1 + version: '3.17.1' + source: https://github.com/whitedogg13/react-native-nfc-manager + file: '../node_modules/react-native-nfc-manager/LICENSE' + - name: react-native-paper@5.14.5 + version: '5.14.5' + source: https://github.com/callstack/react-native-paper + file: '../node_modules/react-native-paper/LICENSE.md' + - name: '@callstack_react-theme-provider@3.0.9' + version: '3.0.9' + source: https://github.com/callstack/react-theme-provider + file: '../node_modules/@callstack/react-theme-provider/LICENSE' + - name: deepmerge@3.3.0 + version: '3.3.0' + source: https://github.com/TehShrike/deepmerge + body: MIT + - name: hoist-non-react-statics@3.3.2 + version: '3.3.2' + source: https://github.com/mridgway/hoist-non-react-statics + file: '../node_modules/hoist-non-react-statics/LICENSE.md' + - name: react-is@16.13.1 + version: '16.13.1' + source: https://github.com/facebook/react + file: '../node_modules/hoist-non-react-statics/node_modules/react-is/LICENSE' + - name: color@3.2.1 + version: '3.2.1' + source: Qix-/color + file: '../node_modules/react-native-paper/node_modules/color/LICENSE' + - name: color-convert@1.9.3 + version: '1.9.3' + source: Qix-/color-convert + file: '../node_modules/react-native-paper/node_modules/color-convert/LICENSE' + - name: color-name@1.1.3 + version: '1.1.3' + source: https://github.com/dfcreative/color-name + file: '../node_modules/react-native-paper/node_modules/color-name/LICENSE' + - name: react-native-safe-area-context@5.6.1 + version: '5.6.1' + source: https://github.com/th3rdwave/react-native-safe-area-context + file: '../node_modules/react-native-safe-area-context/LICENSE' + - name: react-native-screens@4.17.1 + version: '4.17.1' + source: https://github.com/software-mansion/react-native-screens + file: '../node_modules/react-native-screens/LICENSE' + - name: react-freeze@1.0.4 + version: '1.0.4' + source: software-mansion/react-freeze + file: '../node_modules/react-freeze/LICENSE' + - name: react-native-svg@15.14.0 + version: '15.14.0' + source: https://github.com/react-native-community/react-native-svg + file: '../node_modules/react-native-svg/LICENSE' + - name: css-select@5.2.2 + version: '5.2.2' + source: https://github.com/fb55/css-select + file: '../node_modules/css-select/LICENSE' + - name: boolbase@1.0.0 + version: '1.0.0' + source: https://github.com/fb55/boolbase + body: ISC + - name: css-what@6.2.2 + version: '6.2.2' + source: https://github.com/fb55/css-what + file: '../node_modules/css-what/LICENSE' + - name: domhandler@5.0.3 + version: '5.0.3' + source: https://github.com/fb55/domhandler + file: '../node_modules/domhandler/LICENSE' + - name: domelementtype@2.3.0 + version: '2.3.0' + source: https://github.com/fb55/domelementtype + file: '../node_modules/domelementtype/LICENSE' + - name: domutils@3.2.2 + version: '3.2.2' + source: https://github.com/fb55/domutils + file: '../node_modules/domutils/LICENSE' + - name: dom-serializer@2.0.0 + version: '2.0.0' + source: https://github.com/cheeriojs/dom-serializer + file: '../node_modules/dom-serializer/LICENSE' + - name: entities@4.5.0 + version: '4.5.0' + source: https://github.com/fb55/entities + file: '../node_modules/entities/LICENSE' + - name: nth-check@2.1.1 + version: '2.1.1' + source: https://github.com/fb55/nth-check + file: '../node_modules/nth-check/LICENSE' + - name: css-tree@1.1.3 + version: '1.1.3' + source: csstree/csstree + file: '../node_modules/css-tree/LICENSE' + - name: mdn-data@2.0.14 + version: '2.0.14' + source: https://github.com/mdn/data + file: '../node_modules/mdn-data/LICENSE' + - name: react-native-vector-icons@10.3.0 + version: '10.3.0' + source: https://github.com/oblador/react-native-vector-icons + file: '../node_modules/react-native-vector-icons/LICENSE' + - name: prop-types@15.8.1 + version: '15.8.1' + source: facebook/prop-types + file: '../node_modules/prop-types/LICENSE' + - name: object-assign@4.1.1 + version: '4.1.1' + source: sindresorhus/object-assign + file: '../node_modules/object-assign/license' + - name: yargs@16.2.0 + version: '16.2.0' + source: https://github.com/yargs/yargs + file: '../node_modules/react-native-vector-icons/node_modules/yargs/LICENSE' +# END Generated NPM license entries \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ecb1700..3f3740e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,11 +16,14 @@ "@react-navigation/native": "^7.1.17", "@react-navigation/native-stack": "^7.3.25", "array-equal": "^2.0.0", + "axios": "^1.13.2", "jwt-decode": "^4.0.0", "react": "19.1.0", "react-native": "0.80.1", "react-native-app-auth": "^8.1.0", + "react-native-inappbrowser-reborn": "^3.7.0", "react-native-keychain": "^10.0.0", + "react-native-legal": "^1.6.0", "react-native-nfc-manager": "^3.16.2", "react-native-paper": "^5.14.5", "react-native-safe-area-context": "^5.6.1", @@ -2003,6 +2006,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@callstack/licenses": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@callstack/licenses/-/licenses-0.3.0.tgz", + "integrity": "sha512-dughpfGB8j6IcIdcxGoJr4HnlVGFQuZ/IsQs3XUbc8a+mw/sds5Lb0bTNkA6qdpRuJiITNrO51WFtFwGApfPzQ==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.3" + } + }, "node_modules/@callstack/react-theme-provider": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.9.tgz", @@ -2252,9 +2264,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -4954,6 +4966,12 @@ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -4970,6 +4988,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -5176,6 +5205,15 @@ "baseline-browser-mapping": "dist/cli.js" } }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -5189,24 +5227,24 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "devOptional": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -5223,6 +5261,27 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5230,12 +5289,43 @@ "devOptional": true, "license": "MIT" }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -5365,7 +5455,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -5684,6 +5773,18 @@ "devOptional": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", @@ -6142,6 +6243,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -6277,7 +6387,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -6468,7 +6577,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6478,7 +6586,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6516,7 +6623,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -6529,7 +6635,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -7526,6 +7631,26 @@ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", "license": "MIT" }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -7542,6 +7667,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -7590,7 +7731,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7659,7 +7799,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -7693,7 +7832,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "devOptional": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -7848,7 +7986,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7925,7 +8062,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7938,7 +8074,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -7954,7 +8089,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "devOptional": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -9722,9 +9856,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -9936,9 +10070,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, @@ -10200,7 +10334,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10412,9 +10545,9 @@ } }, "node_modules/metro-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -11071,6 +11204,15 @@ "node": ">=8" } }, + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "license": "MIT", + "bin": { + "opencollective-postinstall": "index.js" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -11515,6 +11657,12 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -11543,13 +11691,13 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "devOptional": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -11616,21 +11764,52 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "devOptional": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", @@ -11768,6 +11947,20 @@ "integrity": "sha512-Fu/J1a2y0X22EJDWqJR2oEa1fpP4gTFjYxk8ElJdt1Yak3HOXmFJ7EohLVHU2DaQkgmKfw8qb7u/48gpzveRbg==", "license": "MIT" }, + "node_modules/react-native-inappbrowser-reborn": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/react-native-inappbrowser-reborn/-/react-native-inappbrowser-reborn-3.7.0.tgz", + "integrity": "sha512-Ia53jYNtFcbNaX5W3QfOmN25I7bcvuDiQmSY5zABXjy4+WI20bPc9ua09li55F8yDCjv3C99jX6vKms68mBV7g==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "opencollective-postinstall": "^2.0.3" + }, + "peerDependencies": { + "react-native": ">=0.56" + } + }, "node_modules/react-native-keychain": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-10.0.0.tgz", @@ -11781,6 +11974,27 @@ "node": ">=16" } }, + "node_modules/react-native-legal": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/react-native-legal/-/react-native-legal-1.6.0.tgz", + "integrity": "sha512-JLGEzVIXRDmBQbIb8rzu6qvohh98xo67noFxyR2AzVN+cvcnFul0r71LeiXou1TJzpMlOGIw1E1Mktns69YfAA==", + "license": "MIT", + "dependencies": { + "@callstack/licenses": "^0.3.0", + "glob": "^7.1.3", + "xcode": "^3.0.1", + "xml2js": "^0.6.2" + }, + "peerDependencies": { + "expo": ">=52.0.0", + "react-native": ">=0.76.0" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, "node_modules/react-native-nfc-manager": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/react-native-nfc-manager/-/react-native-nfc-manager-3.17.1.tgz", @@ -12404,6 +12618,15 @@ "devOptional": true, "license": "MIT" }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", @@ -12691,6 +12914,17 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, "node_modules/simple-swizzle": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", @@ -12894,6 +13128,15 @@ "node": ">= 0.4" } }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -13671,6 +13914,15 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -13900,6 +14152,41 @@ "async-limiter": "~1.0.0" } }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlbuilder": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", diff --git a/package.json b/package.json index 882262d..f98ea78 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,14 @@ "@react-navigation/native": "^7.1.17", "@react-navigation/native-stack": "^7.3.25", "array-equal": "^2.0.0", + "axios": "^1.13.2", "jwt-decode": "^4.0.0", "react": "19.1.0", "react-native": "0.80.1", "react-native-app-auth": "^8.1.0", + "react-native-inappbrowser-reborn": "^3.7.0", "react-native-keychain": "^10.0.0", + "react-native-legal": "^1.6.0", "react-native-nfc-manager": "^3.16.2", "react-native-paper": "^5.14.5", "react-native-safe-area-context": "^5.6.1",