diff --git a/README.md b/README.md index 5aaff38..5ed2b61 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,68 @@ private randomString = (): string => { } ``` +### Approval with WebAuthn +```js +onApprovalWebAuthn = async (username: string, approvalData: { [key: string]: string }): Promise => { + try { + const result = await TSAuthenticationSDKModule.approvalWebAuthn(username, approvalData, []); + console.log("Approval result: ", result); + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } +} +``` + +### Approval with WebAuthn with Authentication Data +```js +onApprovalWebAuthnWithData = async (rawAuthenticationData: TSWebAuthnAuthenticationData): Promise => { + try { + const result = await TSAuthenticationSDKModule.approvalWebAuthnWithData(rawAuthenticationData, []); + console.log("Approval result: ", result); + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } +} +``` + +### Approval with WebAuthn with Native Biometrics + +```js +onApprovalNativeBiometrics = async (username: string) => { + try { + const result = await TSAuthenticationSDKModule.approvalNativeBiometrics(username, challenge); + console.log("Approval result: ", result); + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } + } +``` + +### Register PIN Code +```js +onRegisterPINCode = async (username: string, pinCode: string): Promise => { + try { + const result = await TSAuthenticationSDKModule.registerPinCode(username, pinCode); + // use result.contextIdentifier to commit the registration + await TSAuthenticationSDKModule.commitPinRegistration(result.contextIdentifier); + } catch (error) { + console.error(`Error registering PIN code: ${error}`); + } +} +``` + +### Authenticate with PIN Code +```js +authenticatePinCode = async (username: string, pinCode: string): Promise => { + try { + const result = await TSAuthenticationSDKModule.authenticatePinCode(username, pinCode); + // use the result string to complete PIN authentication in your backend. + } catch (error) { + console.error(`Error authenticating with PIN code: ${error}`); + } +} +``` + ### Information about the device #### Get Device Info diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index f4c9c69..cc4efd5 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,4 +1,4 @@ -## 0.1.4 July 2024 +## 0.1.5 July 2024 ### Content #### Enhancements 1. Upgraded native SDKs to iOS `1.1.3` and Android `1.0.19`. diff --git a/android/build.gradle b/android/build.gradle index a014d7a..821ec1f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -83,7 +83,7 @@ dependencies { // For < 0.71, this will be from the local maven repo // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin //noinspection GradleDynamicVersion - implementation("com.ts.sdk:authentication:1.0.19+") + implementation("com.ts.sdk:authentication:1.0.27") implementation "com.facebook.react:react-native:+" } diff --git a/android/src/main/java/com/tsauthentication/TsAuthenticationModule.java b/android/src/main/java/com/tsauthentication/TsAuthenticationModule.java index 6194a69..4842770 100644 --- a/android/src/main/java/com/tsauthentication/TsAuthenticationModule.java +++ b/android/src/main/java/com/tsauthentication/TsAuthenticationModule.java @@ -11,10 +11,14 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.module.annotations.ReactModule; import com.transmit.authentication.TSDeviceInfoError; +import com.transmit.authentication.TSWebAuthnApprovalError; +import com.transmit.authentication.TSWebAuthnApprovalResult; import com.transmit.authentication.TSWebAuthnAuthenticationError; import com.transmit.authentication.AuthenticationResult; import com.transmit.authentication.RegistrationResult; @@ -26,16 +30,35 @@ import com.transmit.authentication.biometrics.TSBiometricsAuthResult; import com.transmit.authentication.biometrics.TSBiometricsRegistrationError; import com.transmit.authentication.biometrics.TSBiometricsRegistrationResult; +import com.transmit.authentication.biometrics.TSNativeBiometricsApprovalError; +import com.transmit.authentication.biometrics.TSNativeBiometricsApprovalResult; import com.transmit.authentication.exceptions.TSAuthenticationInitializeException; -import com.transmit.authentication.network.completereg.DeviceInfo; - +import com.transmit.authentication.DeviceInfo; +import com.transmit.authentication.network.startauth.TSAllowCredentials; +import com.transmit.authentication.network.startauth.TSCredentialRequestOptions; +import com.transmit.authentication.network.startauth.TSWebAuthnAuthenticationData; +import com.transmit.authentication.pincode.TSPinCodeAuthenticationError; +import com.transmit.authentication.pincode.TSPinCodeAuthenticationResult; +import com.transmit.authentication.pincode.TSPinCodeRegistrationContext; +import com.transmit.authentication.pincode.TSPinCodeRegistrationError; +import com.transmit.authentication.pincode.TSPinCodeRegistrationResult; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.UUID; @ReactModule(name = TsAuthenticationModule.NAME) public class TsAuthenticationModule extends ReactContextBaseJavaModule { + public static final String NAME = "TsAuthentication"; - ReactApplicationContext reactContext; + private ReactApplicationContext reactContext; + private Map contextStore = new HashMap<>(); + public TsAuthenticationModule(ReactApplicationContext reactContext) { super(reactContext); @@ -51,11 +74,7 @@ public String getName() { @ReactMethod @NonNull public void initializeSDK() { - try { - TSAuthentication.initializeSDK(reactContext); - } catch (TSAuthenticationInitializeException e) { - throw new RuntimeException(e); - } + TSAuthentication.initializeSDK(reactContext); } @ReactMethod @@ -66,16 +85,12 @@ public void initialize(String clientId, String domain, String baseUrl, Promise p if (domain.length() > 0) { TSAuthentication.initialize( reactContext, - clientId, - baseUrl, - domain + clientId ); } else { TSAuthentication.initialize( reactContext, - clientId, - baseUrl, - null + clientId ); } promise.resolve(true); @@ -125,6 +140,7 @@ public void error(TSWebAuthnRegistrationError tsWebAuthnRegistrationError) { } // Authentication + @ReactMethod @NonNull public void authenticateWebAuthn(String username, Promise promise) { @@ -188,6 +204,7 @@ public void success(TSBiometricsRegistrationResult tsBiometricsRegistrationResul map.putString("publicKeyId", tsBiometricsRegistrationResult.keyId()); map.putString("publicKey", tsBiometricsRegistrationResult.publicKey()); map.putString("os", "Android"); + map.putString("keyType", tsBiometricsRegistrationResult.keyType()); promise.resolve(map); } @@ -238,6 +255,317 @@ public void error(TSBiometricsAuthError tsBiometricsAuthError) { } } + // region Approvals + + @ReactMethod + @NonNull + public void approvalWebAuthn(String username, ReadableMap approvalData, ReadableArray options, Promise promise) { + if (reactContext.getCurrentActivity() != null) { + Map approvalDataMap = new HashMap<>(); + for (Map.Entry entry : approvalData.toHashMap().entrySet()) { + approvalDataMap.put(entry.getKey(), entry.getValue().toString()); + } + + TSAuthentication.approvalWebAuthn( + reactContext.getCurrentActivity(), + username, + approvalDataMap, + new TSAuthCallback() { + @Override + public void success(TSWebAuthnApprovalResult result) { + WritableMap map = new WritableNativeMap(); + map.putString("result", result.result()); + promise.resolve(map); + } + + @Override + public void error(TSWebAuthnApprovalError error) { + promise.reject("result", error.toString()); + } + }); + } + } + + @ReactMethod + @NonNull + public void approvalWebAuthnWithData( + ReadableMap rawAuthenticationData, + ReadableArray options, + Promise promise) { + if (reactContext.getCurrentActivity() != null) { + Map authDataMap = rawAuthenticationData.toHashMap(); + + if (authDataMap == null || authDataMap.isEmpty()) { + promise.reject("result", "Invalid authentication data"); + return; + } + + TSWebAuthnAuthenticationData authData = this.convertWebAuthnAuthenticationData(authDataMap); + + if (authData == null) { + promise.reject("result", "Error converting authentication data."); + return; + } + + TSAuthentication.approvalWebAuthn( + reactContext.getCurrentActivity(), + authData, + new TSAuthCallback() { + @Override + public void success(TSWebAuthnApprovalResult result) { + WritableMap map = new WritableNativeMap(); + map.putString("result", result.result()); + promise.resolve(map); + } + + @Override + public void error(TSWebAuthnApprovalError error) { + promise.reject("result", error.toString()); + } + }); + } + } + + @ReactMethod + @NonNull + public void approvalNativeBiometrics( + String username, + String challenge, + Promise promise) { + if (reactContext.getCurrentActivity() != null) { + AppCompatActivity appCompatActivity = getAppCompatActivity(); + if (appCompatActivity == null) { + promise.reject("result", "current activity is not an instance of AppCompatActivity"); + return; + } + + Map biometricsString = getBiometricsStrings(); + BiometricPromptTexts promptTexts = new BiometricPromptTexts( + biometricsString.get("titleTxt"), + biometricsString.get("subtitleTxt"), + biometricsString.get("cancelTxt")); + + TSAuthentication.approvalNativeBiometrics( + appCompatActivity, + username, + challenge, + promptTexts, + new TSAuthCallback() { + @Override + public void success(TSNativeBiometricsApprovalResult result) { + WritableMap map = new WritableNativeMap(); + map.putString("publicKeyId", result.keyId()); + map.putString("signature", result.signature()); + promise.resolve(map); + } + + @Override + public void error(TSNativeBiometricsApprovalError error) { + promise.reject("result", error.toString()); + } + }); + } + } + + // region PIN Authenticator + + @ReactMethod + @NonNull + public void registerPinCode(String username, String pinCode, Promise promise) { + if (reactContext.getCurrentActivity() != null) { + + AppCompatActivity appCompatActivity = getAppCompatActivity(); + if (appCompatActivity == null) { + promise.reject("result", "current activity is not an instance of AppCompatActivity"); + return; + } + + TSAuthentication.registerPinCode( + username, + pinCode, + new TSAuthCallback() { + @Override + public void success(TSPinCodeRegistrationResult result) { + TSPinCodeRegistrationContext context = result.registrationContext(); + String contextIdentifier = generateContextIdentifier(); + storeContextWithIdentifier(contextIdentifier, context); + + WritableMap map = new WritableNativeMap(); + map.putString("publicKeyId", result.keyId()); + map.putString("publicKey", result.publicKey()); + map.putString("keyType", result.keyType()); + map.putString("contextIdentifier", contextIdentifier); + + promise.resolve(map); + } + + @Override + public void error(TSPinCodeRegistrationError error) { + promise.reject("result", error.toString()); + } + }); + } + } + + @ReactMethod + @NonNull + public void commitPinRegistration(String contextIdentifier, Promise promise) { + TSPinCodeRegistrationContext context = + (TSPinCodeRegistrationContext) getContextWithIdentifier(contextIdentifier); + + if (context == null) { + promise.reject("result", "PIN Registration Context not found for the context identifier provided"); + } else { + removeContextWithIdentifier(contextIdentifier); + context.commit(); + promise.resolve(true); + } + } + + @ReactMethod + @NonNull + public void authenticatePinCode(String username, String pinCode, String challenge, Promise promise) { + if (reactContext.getCurrentActivity() != null) { + + AppCompatActivity appCompatActivity = getAppCompatActivity(); + if (appCompatActivity == null) { + promise.reject("result", "current activity is not an instance of AppCompatActivity"); + return; + } + + TSAuthentication.authenticatePinCode(username, pinCode, challenge, new TSAuthCallback() { + @Override + public void success(TSPinCodeAuthenticationResult result) { + WritableMap map = new WritableNativeMap(); + map.putString("publicKeyId", result.keyId()); + map.putString("signature", result.signature()); + map.putString("challenge", result.challenge()); + + promise.resolve(map); + } + + @Override + public void error(TSPinCodeAuthenticationError error) { + promise.reject("result", error.toString()); + } + }); + } + } + + // region Context Store + + private String generateContextIdentifier() { + return UUID.randomUUID().toString(); + } + + private void storeContextWithIdentifier(String identifier, Object context) { + contextStore.put(identifier, context); + } + + private void removeContextWithIdentifier(String identifier) { + contextStore.remove(identifier); + } + + private Object getContextWithIdentifier(String identifier) { + return contextStore.get(identifier); + } + + // region Helpers + + private TSWebAuthnAuthenticationData convertWebAuthnAuthenticationData( + java.util.Map rawData) { + + String webAuthnSessionId = (String) rawData.get("webauthnSessionId"); + if (webAuthnSessionId == null || webAuthnSessionId.isEmpty()) { + return null; + } + + @SuppressWarnings("unchecked") + java.util.Map rawCredentialRequestOptions = + (java.util.Map) rawData.get("credentialRequestOptions"); + if (rawCredentialRequestOptions == null) { + return null; + } + + String challenge = (String) rawCredentialRequestOptions.get("challenge"); + String rawChallenge = (String) rawCredentialRequestOptions.get("rawChallenge"); + String userVerification = (String) rawCredentialRequestOptions.get("userVerification"); + + Object allowCredentialObj = rawCredentialRequestOptions.get("allowCredentials"); + TSAllowCredentials[] allowCredentials = null; + if (allowCredentialObj instanceof List) { + List allowCredentialsList = (List) allowCredentialObj; + allowCredentials = this.convertAllowCredentials(allowCredentialsList); + } + + String rpId = (String) rawCredentialRequestOptions.get("rpId"); + Double timeout = (Double) rawCredentialRequestOptions.get("timeout"); + + String attestation = (String) rawCredentialRequestOptions.get("attestation"); + + Object transportsObj = rawCredentialRequestOptions.get("transports"); + JSONObject transportsJson = null; + try { + if (transportsObj instanceof List) { + List transportsList = (List) transportsObj; + JSONArray transportsArray = new JSONArray(); + for (Object t : transportsList) { + if (t instanceof String) { + transportsArray.put(t); + } + } + transportsJson = new JSONObject(); + transportsJson.put("transports", transportsArray); + } + } catch (Exception e) { + transportsJson = null; + } + + TSCredentialRequestOptions credentialRequestOptions = new TSCredentialRequestOptions( + challenge != null ? challenge : "", + rawChallenge, + userVerification, + transportsJson, + allowCredentials, + rpId, + timeout, + attestation + ); + + TSWebAuthnAuthenticationData authData = new TSWebAuthnAuthenticationData( + webAuthnSessionId, + credentialRequestOptions + ); + + return authData; + } + + @SuppressWarnings("unchecked") + private TSAllowCredentials[] convertAllowCredentials(List allowCredentialsArray) { + List result = new ArrayList<>(); + for (Object item : allowCredentialsArray) { + if (item instanceof Map) { + Map rawAllowCredential = (Map) item; + String[] transports = null; + Object transportsObj = rawAllowCredential.get("transports"); + if (transportsObj instanceof List) { + List transportsList = (List) transportsObj; + transports = transportsList.stream() + .filter(String.class::isInstance) + .map(String.class::cast) + .toArray(String[]::new); + } + TSAllowCredentials data = new TSAllowCredentials( + (String) rawAllowCredential.get("type"), + (String) rawAllowCredential.get("id"), + transports + ); + result.add(data); + } + } + return result.toArray(new TSAllowCredentials[0]); + } + @Nullable private AppCompatActivity getAppCompatActivity() { Activity activity = reactContext.getCurrentActivity(); diff --git a/babel.config.js b/babel.config.js index f842b77..9865544 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,3 @@ module.exports = { - presets: ['module:metro-react-native-babel-preset'], + presets: ['@react-native/babel-preset'], }; diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 92b530b..c6f1740 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -48,6 +48,7 @@ react { // // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] + autolinkLibrariesWithApp() } /** @@ -120,7 +121,7 @@ dependencies { } } -apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) +// apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) repositories { google() diff --git a/example/android/app/src/main/java/com/tsauthenticationexample/MainApplication.java b/example/android/app/src/main/java/com/tsauthenticationexample/MainApplication.java index 427f2f9..04993c8 100644 --- a/example/android/app/src/main/java/com/tsauthenticationexample/MainApplication.java +++ b/example/android/app/src/main/java/com/tsauthenticationexample/MainApplication.java @@ -8,7 +8,10 @@ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; import com.facebook.react.defaults.DefaultReactNativeHost; import com.facebook.soloader.SoLoader; + +import java.io.IOException; import java.util.List; +import com.facebook.react.soloader.OpenSourceMergedSoMapping; public class MainApplication extends Application implements ReactApplication { @@ -52,11 +55,16 @@ public ReactNativeHost getReactNativeHost() { @Override public void onCreate() { super.onCreate(); - SoLoader.init(this, /* native exopackage */ false); - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - DefaultNewArchitectureEntryPoint.load(); + try { + SoLoader.init(this, OpenSourceMergedSoMapping.INSTANCE); + } catch (IOException e) { + throw new RuntimeException(e); } - ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + +// if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { +// // If you opted-in for the New Architecture, we load the native entry point for this app. +// DefaultNewArchitectureEntryPoint.load(); +// } +// ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); } } diff --git a/example/android/build.gradle b/example/android/build.gradle index 82f5b8f..f466ebb 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -3,10 +3,10 @@ buildscript { ext { buildToolsVersion = "34.0.0" - minSdkVersion = 23 + minSdkVersion = 24 compileSdkVersion = 34 targetSdkVersion = 34 - kotlin_version = "1.9.20" + kotlin_version = "1.9.23" // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. ndkVersion = "23.1.7779620" } @@ -15,7 +15,7 @@ buildscript { mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle") + classpath("com.android.tools.build:gradle:8.7.0") classpath("com.facebook.react:react-native-gradle-plugin") classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } @@ -24,3 +24,10 @@ buildscript { repositories { google() } + +configurations.all { + resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version", + "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version", + "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version", + "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" // Add if you use reflection +} diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 6ec1567..fb642d0 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ +#Wed May 21 09:57:14 EDT 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip -networkTimeout=10000 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 4a22dd6..1f91c4c 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,4 +1,10 @@ + +pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } +plugins { id("com.facebook.react.settings") } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } + rootProject.name = 'TsAuthenticationExample' -apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') + +// apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) diff --git a/example/babel.config.js b/example/babel.config.js index adea77b..f94133e 100644 --- a/example/babel.config.js +++ b/example/babel.config.js @@ -2,7 +2,7 @@ const path = require('path'); const pak = require('../package.json'); module.exports = { - presets: ['module:metro-react-native-babel-preset'], + presets: ['@react-native/babel-preset'], plugins: [ [ 'module-resolver', diff --git a/example/ios/.xcode.env.local b/example/ios/.xcode.env.local new file mode 100644 index 0000000..d85cff7 --- /dev/null +++ b/example/ios/.xcode.env.local @@ -0,0 +1 @@ +export NODE_BINARY=/usr/local/bin/node diff --git a/example/ios/Podfile b/example/ios/Podfile index 19ca45e..d615820 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -5,7 +5,7 @@ require Pod::Executable.execute_command('node', ['-p', {paths: [process.argv[1]]}, )', __dir__]).strip -platform :ios, 15.0 +platform :ios, 15.1 prepare_react_native_project! # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. @@ -17,7 +17,7 @@ prepare_react_native_project! # dependencies: { # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), # ``` -flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled +# flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled linkage = ENV['USE_FRAMEWORKS'] if linkage != nil @@ -40,7 +40,7 @@ target 'TsAuthenticationExample' do # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. - :flipper_configuration => flipper_config, + # :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) @@ -57,6 +57,6 @@ target 'TsAuthenticationExample' do config[:reactNativePath], :mac_catalyst_enabled => false ) - __apply_Xcode_12_5_M1_post_install_workaround(installer) + # __apply_Xcode_12_5_M1_post_install_workaround(installer) end end diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 734e9d3..b69d10d 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,616 +1,1824 @@ PODS: - - boost (1.76.0) - - CocoaAsyncSocket (7.6.5) + - boost (1.84.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.72.7) - - FBReactNativeSpec (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.72.7) - - RCTTypeSafety (= 0.72.7) - - React-Core (= 0.72.7) - - React-jsi (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - Flipper (0.182.0): - - Flipper-Folly (~> 2.6) - - Flipper-Boost-iOSX (1.76.0.1.11) - - Flipper-DoubleConversion (3.2.0.1) - - Flipper-Fmt (7.1.7) - - Flipper-Folly (2.6.10): - - Flipper-Boost-iOSX - - Flipper-DoubleConversion - - Flipper-Fmt (= 7.1.7) - - Flipper-Glog - - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.1100) - - Flipper-Glog (0.5.0.5) - - Flipper-PeerTalk (0.0.4) - - FlipperKit (0.182.0): - - FlipperKit/Core (= 0.182.0) - - FlipperKit/Core (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/CppBridge - - FlipperKit/FBCxxFollyDynamicConvert - - FlipperKit/FBDefines - - FlipperKit/FKPortForwarding - - SocketRocket (~> 0.6.0) - - FlipperKit/CppBridge (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.182.0): - - Flipper-Folly (~> 2.6) - - FlipperKit/FBDefines (0.182.0) - - FlipperKit/FKPortForwarding (0.182.0): - - CocoaAsyncSocket (~> 7.6) - - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.182.0) - - FlipperKit/FlipperKitLayoutHelpers (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutTextSearchable - - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutHelpers - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutHelpers - - FlipperKit/FlipperKitLayoutIOSDescriptors - - FlipperKit/FlipperKitLayoutTextSearchable - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitNetworkPlugin - - fmt (6.2.1) + - fast_float (6.1.4) + - FBLazyVector (0.79.2) + - fmt (11.0.2) - glog (0.3.5) - - hermes-engine (0.72.7): - - hermes-engine/Pre-built (= 0.72.7) - - hermes-engine/Pre-built (0.72.7) - - libevent (2.1.12) - - OpenSSL-Universal (1.1.1100) - - RCT-Folly (2021.07.22.00): + - hermes-engine (0.79.2): + - hermes-engine/Pre-built (= 0.79.2) + - hermes-engine/Pre-built (0.79.2) + - RCT-Folly (2024.11.18.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - RCT-Folly/Default (= 2021.07.22.00) - - RCT-Folly/Default (2021.07.22.00): + - RCT-Folly/Default (= 2024.11.18.00) + - RCT-Folly/Default (2024.11.18.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - RCT-Folly/Futures (2021.07.22.00): + - RCT-Folly/Fabric (2024.11.18.00): - boost - DoubleConversion - - fmt (~> 6.2.1) - - glog - - libevent - - RCTRequired (0.72.7) - - RCTTypeSafety (0.72.7): - - FBLazyVector (= 0.72.7) - - RCTRequired (= 0.72.7) - - React-Core (= 0.72.7) - - React (0.72.7): - - React-Core (= 0.72.7) - - React-Core/DevSupport (= 0.72.7) - - React-Core/RCTWebSocket (= 0.72.7) - - React-RCTActionSheet (= 0.72.7) - - React-RCTAnimation (= 0.72.7) - - React-RCTBlob (= 0.72.7) - - React-RCTImage (= 0.72.7) - - React-RCTLinking (= 0.72.7) - - React-RCTNetwork (= 0.72.7) - - React-RCTSettings (= 0.72.7) - - React-RCTText (= 0.72.7) - - React-RCTVibration (= 0.72.7) - - React-callinvoker (0.72.7) - - React-Codegen (0.72.7): - - DoubleConversion - - FBReactNativeSpec + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCTDeprecation (0.79.2) + - RCTRequired (0.79.2) + - RCTTypeSafety (0.79.2): + - FBLazyVector (= 0.79.2) + - RCTRequired (= 0.79.2) + - React-Core (= 0.79.2) + - React (0.79.2): + - React-Core (= 0.79.2) + - React-Core/DevSupport (= 0.79.2) + - React-Core/RCTWebSocket (= 0.79.2) + - React-RCTActionSheet (= 0.79.2) + - React-RCTAnimation (= 0.79.2) + - React-RCTBlob (= 0.79.2) + - React-RCTImage (= 0.79.2) + - React-RCTLinking (= 0.79.2) + - React-RCTNetwork (= 0.79.2) + - React-RCTSettings (= 0.79.2) + - React-RCTText (= 0.79.2) + - React-RCTVibration (= 0.79.2) + - React-callinvoker (0.79.2) + - React-Core (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default (= 0.79.2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/CoreModulesHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/Default (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/DevSupport (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default (= 0.79.2) + - React-Core/RCTWebSocket (= 0.79.2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTActionSheetHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTAnimationHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTBlobHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTImageHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTLinkingHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTNetworkHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTSettingsHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTTextHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTVibrationHeaders (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTWebSocket (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default (= 0.79.2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-CoreModules (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety (= 0.79.2) + - React-Core/CoreModulesHeaders (= 0.79.2) + - React-jsi (= 0.79.2) + - React-jsinspector + - React-jsinspectortracing + - React-NativeModulesApple + - React-RCTBlob + - React-RCTFBReactNativeSpec + - React-RCTImage (= 0.79.2) + - ReactCommon + - SocketRocket (= 0.7.1) + - React-cxxreact (0.79.2): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-debug (= 0.79.2) + - React-jsi (= 0.79.2) + - React-jsinspector + - React-jsinspectortracing + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - React-runtimeexecutor (= 0.79.2) + - React-timing (= 0.79.2) + - React-debug (0.79.2) + - React-defaultsnativemodule (0.79.2): + - hermes-engine + - RCT-Folly + - React-domnativemodule + - React-featureflagsnativemodule + - React-hermes + - React-idlecallbacksnativemodule + - React-jsi + - React-jsiexecutor + - React-microtasksnativemodule + - React-RCTFBReactNativeSpec + - React-domnativemodule (0.79.2): + - hermes-engine + - RCT-Folly + - React-Fabric + - React-FabricComponents + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.79.2) + - React-Fabric/attributedstring (= 0.79.2) + - React-Fabric/componentregistry (= 0.79.2) + - React-Fabric/componentregistrynative (= 0.79.2) + - React-Fabric/components (= 0.79.2) + - React-Fabric/consistency (= 0.79.2) + - React-Fabric/core (= 0.79.2) + - React-Fabric/dom (= 0.79.2) + - React-Fabric/imagemanager (= 0.79.2) + - React-Fabric/leakchecker (= 0.79.2) + - React-Fabric/mounting (= 0.79.2) + - React-Fabric/observers (= 0.79.2) + - React-Fabric/scheduler (= 0.79.2) + - React-Fabric/telemetry (= 0.79.2) + - React-Fabric/templateprocessor (= 0.79.2) + - React-Fabric/uimanager (= 0.79.2) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.79.2) + - React-Fabric/components/root (= 0.79.2) + - React-Fabric/components/scrollview (= 0.79.2) + - React-Fabric/components/view (= 0.79.2) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/scrollview (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-renderercss + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/consistency (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/core (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/dom (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/observers (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events (= 0.79.2) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/observers/events (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-performancetimeline + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager/consistency (= 0.79.2) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager/consistency (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricComponents (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.79.2) + - React-FabricComponents/textlayoutmanager (= 0.79.2) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.79.2) + - React-FabricComponents/components/iostextinput (= 0.79.2) + - React-FabricComponents/components/modal (= 0.79.2) + - React-FabricComponents/components/rncore (= 0.79.2) + - React-FabricComponents/components/safeareaview (= 0.79.2) + - React-FabricComponents/components/scrollview (= 0.79.2) + - React-FabricComponents/components/text (= 0.79.2) + - React-FabricComponents/components/textinput (= 0.79.2) + - React-FabricComponents/components/unimplementedview (= 0.79.2) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/inputaccessory (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/iostextinput (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/modal (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/rncore (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/safeareaview (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/scrollview (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/text (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/textinput (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - - React-NativeModulesApple - - React-rncore - - ReactCommon/turbomodule/bridging + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils - ReactCommon/turbomodule/core - - React-Core (0.72.7): + - Yoga + - React-FabricComponents/components/unimplementedview (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.7) + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics - React-hermes - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - ReactCommon/turbomodule/core - Yoga - - React-Core/CoreModulesHeaders (0.72.7): + - React-FabricComponents/textlayoutmanager (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics - React-hermes - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - ReactCommon/turbomodule/core - Yoga - - React-Core/Default (0.72.7): + - React-FabricImage (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired (= 0.79.2) + - RCTTypeSafety (= 0.79.2) + - React-Fabric + - React-featureflags + - React-graphics - React-hermes + - React-ImageManager - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-jsiexecutor (= 0.79.2) + - React-logger + - React-rendererdebug - React-utils - - SocketRocket (= 0.6.1) + - ReactCommon - Yoga - - React-Core/DevSupport (0.72.7): - - glog + - React-featureflags (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - React-featureflagsnativemodule (0.79.2): - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.7) - - React-Core/RCTWebSocket (= 0.72.7) - - React-cxxreact + - RCT-Folly + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.72.7) - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTActionSheetHeaders (0.72.7): + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - React-graphics (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - RCT-Folly/Fabric (= 2024.11.18.00) - React-hermes - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTAnimationHeaders (0.72.7): + - React-hermes (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.2) - React-jsi - - React-jsiexecutor - - React-perflogger + - React-jsiexecutor (= 0.79.2) + - React-jsinspector + - React-jsinspectortracing + - React-perflogger (= 0.79.2) - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTBlobHeaders (0.72.7): + - React-idlecallbacksnativemodule (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - RCT-Folly - React-hermes - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-RCTFBReactNativeSpec + - React-runtimescheduler + - ReactCommon/turbomodule/core + - React-ImageManager (0.79.2): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTImageHeaders (0.72.7): + - React-jserrorhandler (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default + - RCT-Folly/Fabric (= 2024.11.18.00) - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - ReactCommon/turbomodule/bridging + - React-jsi (0.79.2): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-jsiexecutor (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-jsinspector + - React-jsinspectortracing + - React-perflogger (= 0.79.2) + - React-jsinspector (0.79.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - React-featureflags + - React-jsi + - React-jsinspectortracing + - React-perflogger (= 0.79.2) + - React-runtimeexecutor (= 0.79.2) + - React-jsinspectortracing (0.79.2): + - RCT-Folly + - React-oscompat + - React-jsitooling (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-jsinspector + - React-jsinspectortracing + - React-jsitracing (0.79.2): + - React-jsi + - React-logger (0.79.2): + - glog + - React-Mapbuffer (0.79.2): + - glog + - React-debug + - React-microtasksnativemodule (0.79.2): + - hermes-engine + - RCT-Folly - React-hermes - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTLinkingHeaders (0.72.7): + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - react-native-ts-authentication (0.1.5): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics - React-hermes + - React-ImageManager - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug - React-utils - - SocketRocket (= 0.6.1) + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - TSAuthentication (~> 1.1.15) - Yoga - - React-Core/RCTNetworkHeaders (0.72.7): + - React-NativeModulesApple (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default + - React-callinvoker + - React-Core - React-cxxreact + - React-featureflags - React-hermes - React-jsi - - React-jsiexecutor - - React-perflogger + - React-jsinspector - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-oscompat (0.79.2) + - React-perflogger (0.79.2): + - DoubleConversion + - RCT-Folly (= 2024.11.18.00) + - React-performancetimeline (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact + - React-featureflags + - React-jsinspectortracing + - React-perflogger + - React-timing + - React-RCTActionSheet (0.79.2): + - React-Core/RCTActionSheetHeaders (= 0.79.2) + - React-RCTAnimation (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-RCTAppDelegate (0.79.2): + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-CoreModules + - React-debug + - React-defaultsnativemodule + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsitooling + - React-NativeModulesApple + - React-RCTFabric + - React-RCTFBReactNativeSpec + - React-RCTImage + - React-RCTNetwork + - React-RCTRuntime + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTSettingsHeaders (0.72.7): + - ReactCommon + - React-RCTBlob (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - React-RCTNetwork + - ReactCommon + - React-RCTFabric (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-FabricImage + - React-featureflags + - React-graphics - React-hermes + - React-ImageManager - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-jsinspector + - React-jsinspectortracing + - React-performancetimeline + - React-RCTAnimation + - React-RCTImage + - React-RCTText + - React-rendererconsistency + - React-renderercss + - React-rendererdebug + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTTextHeaders (0.72.7): - - glog + - React-RCTFBReactNativeSpec (0.79.2): - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core - React-hermes - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTVibrationHeaders (0.72.7): + - React-NativeModulesApple + - ReactCommon + - React-RCTImage (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - React-RCTNetwork + - ReactCommon + - React-RCTLinking (0.79.2): + - React-Core/RCTLinkingHeaders (= 0.79.2) + - React-jsi (= 0.79.2) + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - ReactCommon/turbomodule/core (= 0.79.2) + - React-RCTNetwork (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-RCTRuntime (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-Core + - React-hermes + - React-jsi + - React-jsinspector + - React-jsinspectortracing + - React-jsitooling + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-RCTSettings (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-RCTText (0.79.2): + - React-Core/RCTTextHeaders (= 0.79.2) + - Yoga + - React-RCTVibration (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-rendererconsistency (0.79.2) + - React-renderercss (0.79.2): + - React-debug + - React-utils + - React-rendererdebug (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - RCT-Folly (= 2024.11.18.00) + - React-debug + - React-rncore (0.79.2) + - React-RuntimeApple (0.79.2): + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-callinvoker - React-Core/Default + - React-CoreModules - React-cxxreact - - React-hermes + - React-featureflags + - React-jserrorhandler - React-jsi - React-jsiexecutor - - React-perflogger + - React-jsinspector + - React-jsitooling + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RCTFBReactNativeSpec + - React-RuntimeCore - React-runtimeexecutor + - React-RuntimeHermes + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTWebSocket (0.72.7): + - React-RuntimeCore (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.7) + - RCT-Folly/Fabric (= 2024.11.18.00) - React-cxxreact + - React-Fabric + - React-featureflags - React-hermes + - React-jserrorhandler - React-jsi - React-jsiexecutor - - React-perflogger + - React-jsinspector + - React-jsitooling + - React-performancetimeline - React-runtimeexecutor + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-CoreModules (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.7) - - React-Codegen (= 0.72.7) - - React-Core/CoreModulesHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - React-RCTBlob - - React-RCTImage (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - SocketRocket (= 0.6.1) - - React-cxxreact (0.72.7): - - boost (= 1.76.0) - - DoubleConversion - - glog + - React-runtimeexecutor (0.79.2): + - React-jsi (= 0.79.2) + - React-RuntimeHermes (0.79.2): - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.7) - - React-debug (= 0.72.7) - - React-jsi (= 0.72.7) - - React-jsinspector (= 0.72.7) - - React-logger (= 0.72.7) - - React-perflogger (= 0.72.7) - - React-runtimeexecutor (= 0.72.7) - - React-debug (0.72.7) - - React-hermes (0.72.7): - - DoubleConversion + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsinspectortracing + - React-jsitooling + - React-jsitracing + - React-RuntimeCore + - React-utils + - React-runtimescheduler (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.72.7) + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker + - React-cxxreact + - React-debug + - React-featureflags + - React-hermes - React-jsi - - React-jsiexecutor (= 0.72.7) - - React-jsinspector (= 0.72.7) - - React-perflogger (= 0.72.7) - - React-jsi (0.72.7): - - boost (= 1.76.0) - - DoubleConversion + - React-jsinspectortracing + - React-performancetimeline + - React-rendererconsistency + - React-rendererdebug + - React-runtimeexecutor + - React-timing + - React-utils + - React-timing (0.79.2) + - React-utils (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.72.7): + - RCT-Folly (= 2024.11.18.00) + - React-debug + - React-hermes + - React-jsi (= 0.79.2) + - ReactAppDependencyProvider (0.79.2): + - ReactCodegen + - ReactCodegen (0.79.2): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.72.7) - - React-jsi (= 0.72.7) - - React-perflogger (= 0.72.7) - - React-jsinspector (0.72.7) - - React-logger (0.72.7): - - glog - - react-native-ts-authentication (0.1.3): - - RCT-Folly (= 2021.07.22.00) - - React-Core - - TSAuthentication (~> 1.1.3) - - React-NativeModulesApple (0.72.7): - - hermes-engine - - React-callinvoker - - React-Core - - React-cxxreact - - React-jsi - - React-runtimeexecutor - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - React-perflogger (0.72.7) - - React-RCTActionSheet (0.72.7): - - React-Core/RCTActionSheetHeaders (= 0.72.7) - - React-RCTAnimation (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.7) - - React-Codegen (= 0.72.7) - - React-Core/RCTAnimationHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-RCTAppDelegate (0.72.7): - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core - - React-CoreModules + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics - React-hermes + - React-jsi + - React-jsiexecutor - React-NativeModulesApple - - React-RCTImage - - React-RCTNetwork - - React-runtimescheduler + - React-RCTAppDelegate + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-RCTBlob (0.72.7): - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.7) - - React-Core/RCTBlobHeaders (= 0.72.7) - - React-Core/RCTWebSocket (= 0.72.7) - - React-jsi (= 0.72.7) - - React-RCTNetwork (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-RCTImage (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.7) - - React-Codegen (= 0.72.7) - - React-Core/RCTImageHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - React-RCTNetwork (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-RCTLinking (0.72.7): - - React-Codegen (= 0.72.7) - - React-Core/RCTLinkingHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-RCTNetwork (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.7) - - React-Codegen (= 0.72.7) - - React-Core/RCTNetworkHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-RCTSettings (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.7) - - React-Codegen (= 0.72.7) - - React-Core/RCTSettingsHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-RCTText (0.72.7): - - React-Core/RCTTextHeaders (= 0.72.7) - - React-RCTVibration (0.72.7): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.7) - - React-Core/RCTVibrationHeaders (= 0.72.7) - - React-jsi (= 0.72.7) - - ReactCommon/turbomodule/core (= 0.72.7) - - React-rncore (0.72.7) - - React-runtimeexecutor (0.72.7): - - React-jsi (= 0.72.7) - - React-runtimescheduler (0.72.7): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker - - React-debug - - React-jsi - - React-runtimeexecutor - - React-utils (0.72.7): + - ReactCommon (0.79.2): + - ReactCommon/turbomodule (= 0.79.2) + - ReactCommon/turbomodule (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - RCT-Folly (= 2021.07.22.00) - - React-debug - - ReactCommon/turbomodule/bridging (0.72.7): + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - ReactCommon/turbomodule/bridging (= 0.79.2) + - ReactCommon/turbomodule/core (= 0.79.2) + - ReactCommon/turbomodule/bridging (0.79.2): - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.7) - - React-cxxreact (= 0.72.7) - - React-jsi (= 0.72.7) - - React-logger (= 0.72.7) - - React-perflogger (= 0.72.7) - - ReactCommon/turbomodule/core (0.72.7): + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - ReactCommon/turbomodule/core (0.79.2): - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.7) - - React-cxxreact (= 0.72.7) - - React-jsi (= 0.72.7) - - React-logger (= 0.72.7) - - React-perflogger (= 0.72.7) - - RNCAsyncStorage (1.21.0): + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-cxxreact (= 0.79.2) + - React-debug (= 0.79.2) + - React-featureflags (= 0.79.2) + - React-jsi (= 0.79.2) + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - React-utils (= 0.79.2) + - RNCAsyncStorage (2.1.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core - - SocketRocket (0.6.1) - - TSAuthentication (1.1.3): - - TSCoreSDK (~> 1.0.24) - - TSCoreSDK (1.0.24) - - Yoga (1.14.0) - - YogaKit (1.18.1): - - Yoga (~> 1.14) + - 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 + - Yoga + - SocketRocket (0.7.1) + - TSAuthentication (1.1.15): + - TSCoreSDK (~> 1.0.31) + - TSCoreSDK (1.0.31) + - Yoga (0.0.0) DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - Flipper (= 0.182.0) - - Flipper-Boost-iOSX (= 1.76.0.1.11) - - Flipper-DoubleConversion (= 3.2.0.1) - - Flipper-Fmt (= 7.1.7) - - Flipper-Folly (= 2.6.10) - - Flipper-Glog (= 0.5.0.5) - - Flipper-PeerTalk (= 0.0.4) - - FlipperKit (= 0.182.0) - - FlipperKit/Core (= 0.182.0) - - FlipperKit/CppBridge (= 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0) - - FlipperKit/FBDefines (= 0.182.0) - - FlipperKit/FKPortForwarding (= 0.182.0) - - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0) - - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0) - - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0) - - FlipperKit/FlipperKitReactPlugin (= 0.182.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0) - - FlipperKit/SKIOSNetworkPlugin (= 0.182.0) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - - React-Core/DevSupport (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`) + - React-jsitooling (from `../node_modules/react-native/ReactCommon/jsitooling`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) - react-native-ts-authentication (from `../..`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTFBReactNativeSpec (from `../node_modules/react-native/React`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) + - React-renderercss (from `../node_modules/react-native/ReactCommon/react/renderer/css`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactAppDependencyProvider (from `build/generated/ios`) + - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - - CocoaAsyncSocket - - Flipper - - Flipper-Boost-iOSX - - Flipper-DoubleConversion - - Flipper-Fmt - - Flipper-Folly - - Flipper-Glog - - Flipper-PeerTalk - - FlipperKit - - fmt - - libevent - - OpenSSL-Universal - SocketRocket - TSAuthentication - TSCoreSDK - - YogaKit EXTERNAL SOURCES: boost: :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + fast_float: + :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2023-08-07-RNv0.72.4-813b2def12bc9df02654b3e3653ae4a68d0572e0 + :tag: hermes-2025-03-03-RNv0.79.0-bc17d964d03743424823d7dd1a9f37633459c5c5 RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" + :path: "../node_modules/react-native/Libraries/Required" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Codegen: - :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -619,22 +1827,58 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/cxxreact" React-debug: :path: "../node_modules/react-native/ReactCommon/react/debug" + React-defaultsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" + React-domnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricComponents: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-featureflagsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: :path: "../node_modules/react-native/ReactCommon/hermes" + React-idlecallbacksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsinspectortracing: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing" + React-jsitooling: + :path: "../node_modules/react-native/ReactCommon/jsitooling" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" React-logger: :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" + React-microtasksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" react-native-ts-authentication: :path: "../.." React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-oscompat: + :path: "../node_modules/react-native/ReactCommon/oscompat" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancetimeline: + :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -643,26 +1887,50 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" + React-RCTFBReactNativeSpec: + :path: "../node_modules/react-native/React" React-RCTImage: :path: "../node_modules/react-native/Libraries/Image" React-RCTLinking: :path: "../node_modules/react-native/Libraries/LinkingIOS" React-RCTNetwork: :path: "../node_modules/react-native/Libraries/Network" + React-RCTRuntime: + :path: "../node_modules/react-native/React/Runtime" React-RCTSettings: :path: "../node_modules/react-native/Libraries/Settings" React-RCTText: :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererconsistency: + :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" + React-renderercss: + :path: "../node_modules/react-native/ReactCommon/react/renderer/css" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimeexecutor: :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimescheduler: :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-timing: + :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactAppDependencyProvider: + :path: build/generated/ios + ReactCodegen: + :path: build/generated/ios ReactCommon: :path: "../node_modules/react-native/ReactCommon" RNCAsyncStorage: @@ -671,64 +1939,82 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 57d2868c099736d80fcd648bf211b4431e51a558 - CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 5fbbff1d7734827299274638deb8ba3024f6c597 - FBReactNativeSpec: 638095fe8a01506634d77b260ef8a322019ac671 - Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818 - Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c - Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 - Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b - Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 - Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 - Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6 - fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: 9180d43df05c1ed658a87cc733dc3044cf90c00a - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c - RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: 83bca1c184feb4d2e51c72c8369b83d641443f95 - RCTTypeSafety: 13c4a87a16d7db6cd66006ce9759f073402ef85b - React: e67aa9f99957c7611c392b5e49355d877d6525e2 - React-callinvoker: 2790c09d964c2e5404b5410cde91b152e3746b7b - React-Codegen: e6e05e105ca7cdb990f4d609985a2a689d8d0653 - React-Core: 9283f1e7d0d5e3d33ad298547547b1b43912534c - React-CoreModules: 6312c9b2fec4329d9ae6a2b8c350032d1664c51b - React-cxxreact: 7da72565656c8ac7f97c9a031d0b199bbdec0640 - React-debug: 4accb2b9dc09b575206d2c42f4082990a52ae436 - React-hermes: 1299a94f255f59a72d5baa54a2ca2e1eee104947 - React-jsi: 2208de64c3a41714ac04e86975386fc49116ea13 - React-jsiexecutor: c49502e5d02112247ee4526bc3ccfc891ae3eb9b - React-jsinspector: 8baadae51f01d867c3921213a25ab78ab4fbcd91 - React-logger: 8edc785c47c8686c7962199a307015e2ce9a0e4f - react-native-ts-authentication: 4cde495084271f5ba210a3949afcc1ad871faee7 - React-NativeModulesApple: b6868ee904013a7923128892ee4a032498a1024a - React-perflogger: 31ea61077185eb1428baf60c0db6e2886f141a5a - React-RCTActionSheet: 392090a3abc8992eb269ef0eaa561750588fc39d - React-RCTAnimation: 4b3cc6a29474bc0d78c4f04b52ab59bf760e8a9b - React-RCTAppDelegate: 89b015b29885109addcabecdf3b2e833905437c7 - React-RCTBlob: 3e23dcbe6638897b5605e46d0d62955d78e8d27b - React-RCTImage: 8a5d339d614a90a183fc1b8b6a7eb44e2e703943 - React-RCTLinking: b37dfbf646d77c326f9eae094b1fcd575b1c24c7 - React-RCTNetwork: 8bed9b2461c7d8a7d14e63df9b16181c448beebc - React-RCTSettings: 506a5f09a455123a8873801b70aa7b4010b76b01 - React-RCTText: 3c71ecaad8ee010b79632ea2590f86c02f5cce17 - React-RCTVibration: d1b78ca38f61ea4b3e9ebb2ddbd0b5662631d99b - React-rncore: bfc2f6568b6fecbae6f2f774e95c60c3c9e95bf2 - React-runtimeexecutor: 47b0a2d5bbb416db65ef881a6f7bdcfefa0001ab - React-runtimescheduler: 7649c3b46c8dee1853691ecf60146a16ae59253c - React-utils: 56838edeaaf651220d1e53cd0b8934fb8ce68415 - ReactCommon: 5f704096ccf7733b390f59043b6fa9cc180ee4f6 - RNCAsyncStorage: 618d03a5f52fbccb3d7010076bc54712844c18ef - SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - TSAuthentication: 622f45bde933e3f252ede79fa21ce371ef924081 - TSCoreSDK: b480415b11b5b202cbf43275b1ea40f68b546b6e - Yoga: 4c3aa327e4a6a23eeacd71f61c81df1bcdf677d5 - YogaKit: f782866e155069a2cca2517aafea43200b01fd5a + boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 + DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb + fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 + FBLazyVector: 84b955f7b4da8b895faf5946f73748267347c975 + fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd + glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 + hermes-engine: 314be5250afa5692b57b4dd1705959e1973a8ebe + RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82 + RCTDeprecation: 83ffb90c23ee5cea353bd32008a7bca100908f8c + RCTRequired: eb7c0aba998009f47a540bec9e9d69a54f68136e + RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93 + React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c + React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d + React-Core: 10597593fdbae06f0089881e025a172e51d4a769 + React-CoreModules: 6907b255529dd46895cf687daa67b24484a612c2 + React-cxxreact: a9f5b8180d6955bc3f6a3fcd657c4d9b4d95c1f6 + React-debug: e74e76912b91e08d580c481c34881899ccf63da9 + React-defaultsnativemodule: 11f6ee2cf69bf3af9d0f28a6253def33d21b5266 + React-domnativemodule: f940bbc4fa9e134190acbf3a4a9f95621b5a8f51 + React-Fabric: 6f5c357bf3a42ff11f8844ad3fc7a1eb04f4b9de + React-FabricComponents: 10e0c0209822ac9e69412913a8af1ca33573379b + React-FabricImage: f582e764072dfa4715ae8c42979a5bace9cbcc12 + React-featureflags: d5facceff8f8f6de430e0acecf4979a9a0839ba9 + React-featureflagsnativemodule: a7dd141f1ef4b7c1331af0035689fbc742a49ff4 + React-graphics: 36ae3407172c1c77cea29265d2b12b90aaef6aa0 + React-hermes: 9116d4e6d07abeb519a2852672de087f44da8f12 + React-idlecallbacksnativemodule: ae7f5ffc6cf2d2058b007b78248e5b08172ad5c3 + React-ImageManager: 9daee0dc99ad6a001d4b9e691fbf37107e2b7b54 + React-jserrorhandler: 1e6211581071edaf4ecd5303147328120c73f4dc + React-jsi: 753ba30c902f3a41fa7f956aca8eea3317a44ee6 + React-jsiexecutor: 47520714aa7d9589c51c0f3713dfbfca4895d4f9 + React-jsinspector: cfd27107f6d6f1076a57d88c932401251560fe5f + React-jsinspectortracing: 76a7d791f3c0c09a0d2bf6f46dfb0e79a4fcc0ac + React-jsitooling: 995e826570dd58f802251490486ebd3244a037ab + React-jsitracing: 094ae3d8c123cea67b50211c945b7c0443d3e97b + React-logger: 8edfcedc100544791cd82692ca5a574240a16219 + React-Mapbuffer: c3f4b608e4a59dd2f6a416ef4d47a14400194468 + React-microtasksnativemodule: 054f34e9b82f02bd40f09cebd4083828b5b2beb6 + react-native-ts-authentication: a5814fc81a9af8fbc958a42b890a5d39e9c94126 + React-NativeModulesApple: 2c4377e139522c3d73f5df582e4f051a838ff25e + React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c + React-perflogger: 9a151e0b4c933c9205fd648c246506a83f31395d + React-performancetimeline: 5b0dfc0acba29ea0269ddb34cd6dd59d3b8a1c66 + React-RCTActionSheet: a499b0d6d9793886b67ba3e16046a3fef2cdbbc3 + React-RCTAnimation: cc64adc259aabc3354b73065e2231d796dfce576 + React-RCTAppDelegate: 9d523da768f1c9e84c5f3b7e3624d097dfb0e16b + React-RCTBlob: e727f53eeefded7e6432eb76bd22b57bc880e5d1 + React-RCTFabric: 58590aa4fdb4ad546c06a7449b486cf6844e991f + React-RCTFBReactNativeSpec: 9064c63d99e467a3893e328ba3612745c3c3a338 + React-RCTImage: 7159cbdbb18a09d97ba1a611416eced75b3ccb29 + React-RCTLinking: 46293afdb859bccc63e1d3dedc6901a3c04ef360 + React-RCTNetwork: 4a6cd18f5bcd0363657789c64043123a896b1170 + React-RCTRuntime: 5ab904fd749aa52f267ef771d265612582a17880 + React-RCTSettings: 61e361dc85136d1cb0e148b7541993d2ee950ea7 + React-RCTText: abd1e196c3167175e6baef18199c6d9d8ac54b4e + React-RCTVibration: 490e0dcb01a3fe4a0dfb7bc51ad5856d8b84f343 + React-rendererconsistency: 351fdbc5c1fe4da24243d939094a80f0e149c7a1 + React-renderercss: 3438814bee838ae7840a633ab085ac81699fd5cf + React-rendererdebug: 0ac2b9419ad6f88444f066d4b476180af311fb1e + React-rncore: 57ed480649bb678d8bdc386d20fee8bf2b0c307c + React-RuntimeApple: 8b7a9788f31548298ba1990620fe06b40de65ad7 + React-RuntimeCore: e03d96fbd57ce69fd9bca8c925942194a5126dbc + React-runtimeexecutor: d60846710facedd1edb70c08b738119b3ee2c6c2 + React-RuntimeHermes: aab794755d9f6efd249b61f3af4417296904e3ba + React-runtimescheduler: c3cd124fa5db7c37f601ee49ca0d97019acd8788 + React-timing: a90f4654cbda9c628614f9bee68967f1768bd6a5 + React-utils: a612d50555b6f0f90c74b7d79954019ad47f5de6 + ReactAppDependencyProvider: 04d5eb15eb46be6720e17a4a7fa92940a776e584 + ReactCodegen: c63eda03ba1d94353fb97b031fc84f75a0d125ba + ReactCommon: 76d2dc87136d0a667678668b86f0fca0c16fdeb0 + RNCAsyncStorage: 39c42c1e478e1f5166d1db52b5055e090e85ad66 + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 + TSAuthentication: 8d80f31ebc00438ef62baa934d674c03ad43a6d9 + TSCoreSDK: 3c459fa58dc09c44a2ec327cb977268bc78b146c + Yoga: c758bfb934100bb4bf9cbaccb52557cee35e8bdf -PODFILE CHECKSUM: 40c199a67ca4793b0dc29ad258c27bc4fe82df69 +PODFILE CHECKSUM: 7a7b1bf68644c36322ee8a83a19a7731d822d0ac -COCOAPODS: 1.14.2 +COCOAPODS: 1.16.2 diff --git a/example/ios/TransmitIcon.png b/example/ios/TransmitIcon.png new file mode 100644 index 0000000..2a1affe Binary files /dev/null and b/example/ios/TransmitIcon.png differ diff --git a/example/ios/TsAuthenticationExample.xcodeproj/project.pbxproj b/example/ios/TsAuthenticationExample.xcodeproj/project.pbxproj index 82620e6..f146594 100644 --- a/example/ios/TsAuthenticationExample.xcodeproj/project.pbxproj +++ b/example/ios/TsAuthenticationExample.xcodeproj/project.pbxproj @@ -11,9 +11,11 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 4250E934A30E319204DF455E /* libPods-TsAuthenticationExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F0D46E2E24234DA855FC6C79 /* libPods-TsAuthenticationExample.a */; }; + 6538E3952DE5C5BF00E116EE /* TransmitIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 6538E3942DE5C5BF00E116EE /* TransmitIcon.png */; }; + 6FA9F883B43B7CE0344B3A15 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 2670ED841E98FB75A9F42FE9 /* PrivacyInfo.xcprivacy */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - A35BDBE25D8E9C7FCB179323 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC2FAF0E2CBD7EBCF8E55446 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a */; }; + 8669DDEB2D67748E5803D5C8 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ED5DC0A2637A31DE4ADC83A1 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a */; }; + E8191385399F7901DE9AE1A8 /* libPods-TsAuthenticationExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D64E6F22D72FE5E910ECFA28 /* libPods-TsAuthenticationExample.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -36,15 +38,17 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = TsAuthenticationExample/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = TsAuthenticationExample/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = TsAuthenticationExample/main.m; sourceTree = ""; }; - 31EA60AE14380814A4BADD42 /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig"; sourceTree = ""; }; + 2670ED841E98FB75A9F42FE9 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = TsAuthenticationExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 54965BE163BEEB9CE32BC1D9 /* Pods-TsAuthenticationExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample.debug.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample.debug.xcconfig"; sourceTree = ""; }; + 61A27F3ED9A715B7D6030E83 /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig"; sourceTree = ""; }; + 6538E3942DE5C5BF00E116EE /* TransmitIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TransmitIcon.png; sourceTree = ""; }; 657C8A232B20EAEF00A067BB /* TsAuthenticationExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = TsAuthenticationExample.entitlements; path = TsAuthenticationExample/TsAuthenticationExample.entitlements; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = TsAuthenticationExample/LaunchScreen.storyboard; sourceTree = ""; }; - 90AC1C84CF14D7E80524C37B /* Pods-TsAuthenticationExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample.debug.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample.debug.xcconfig"; sourceTree = ""; }; - 9825B8DD5A2398FF12D6014D /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig"; sourceTree = ""; }; - C8AF1B41529079CAC2E2752C /* Pods-TsAuthenticationExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample.release.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample.release.xcconfig"; sourceTree = ""; }; + B6A7EE7483F63AF4DE5A01FC /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig"; sourceTree = ""; }; + D30423ABA42E68A7C6241AC7 /* Pods-TsAuthenticationExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TsAuthenticationExample.release.xcconfig"; path = "Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample.release.xcconfig"; sourceTree = ""; }; + D64E6F22D72FE5E910ECFA28 /* libPods-TsAuthenticationExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TsAuthenticationExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - F0D46E2E24234DA855FC6C79 /* libPods-TsAuthenticationExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TsAuthenticationExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - FC2FAF0E2CBD7EBCF8E55446 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + ED5DC0A2637A31DE4ADC83A1 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -52,7 +56,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A35BDBE25D8E9C7FCB179323 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a in Frameworks */, + 8669DDEB2D67748E5803D5C8 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -60,7 +64,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4250E934A30E319204DF455E /* libPods-TsAuthenticationExample.a in Frameworks */, + E8191385399F7901DE9AE1A8 /* libPods-TsAuthenticationExample.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -93,7 +97,9 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 6538E3942DE5C5BF00E116EE /* TransmitIcon.png */, 13B07FB71A68108700A75B9A /* main.m */, + 2670ED841E98FB75A9F42FE9 /* PrivacyInfo.xcprivacy */, ); name = TsAuthenticationExample; sourceTree = ""; @@ -102,8 +108,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - F0D46E2E24234DA855FC6C79 /* libPods-TsAuthenticationExample.a */, - FC2FAF0E2CBD7EBCF8E55446 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a */, + D64E6F22D72FE5E910ECFA28 /* libPods-TsAuthenticationExample.a */, + ED5DC0A2637A31DE4ADC83A1 /* libPods-TsAuthenticationExample-TsAuthenticationExampleTests.a */, ); name = Frameworks; sourceTree = ""; @@ -142,10 +148,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 90AC1C84CF14D7E80524C37B /* Pods-TsAuthenticationExample.debug.xcconfig */, - C8AF1B41529079CAC2E2752C /* Pods-TsAuthenticationExample.release.xcconfig */, - 9825B8DD5A2398FF12D6014D /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig */, - 31EA60AE14380814A4BADD42 /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig */, + 54965BE163BEEB9CE32BC1D9 /* Pods-TsAuthenticationExample.debug.xcconfig */, + D30423ABA42E68A7C6241AC7 /* Pods-TsAuthenticationExample.release.xcconfig */, + 61A27F3ED9A715B7D6030E83 /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig */, + B6A7EE7483F63AF4DE5A01FC /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -157,12 +163,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "TsAuthenticationExampleTests" */; buildPhases = ( - 703F3B8259A0BC83D92DB211 /* [CP] Check Pods Manifest.lock */, + 0D6A94A378D26F70C61E3D6F /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - DED126EC1FD33EFDBA8FF0D9 /* [CP] Embed Pods Frameworks */, - 0CE25949B38209F56C33B668 /* [CP] Copy Pods Resources */, + 3C1884053874745B7775287A /* [CP] Embed Pods Frameworks */, + FC7B06B2DC66490CD81AB74F /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -178,14 +184,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "TsAuthenticationExample" */; buildPhases = ( - 79EC1A845B1A8E8EEEC50CF0 /* [CP] Check Pods Manifest.lock */, + 2CE3C9E70711F5BEA940E7A0 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 9FCB961C75F26CCD85EE8826 /* [CP] Embed Pods Frameworks */, - 619B18D94741A2F0E67783F3 /* [CP] Copy Pods Resources */, + CB58D9EF9F7F99663B97D15B /* [CP] Embed Pods Frameworks */, + 62912F36BDFD13E2123F2931 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -246,6 +252,8 @@ files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 6538E3952DE5C5BF00E116EE /* TransmitIcon.png in Resources */, + 6FA9F883B43B7CE0344B3A15 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -268,85 +276,85 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 0CE25949B38209F56C33B668 /* [CP] Copy Pods Resources */ = { + 0D6A94A378D26F70C61E3D6F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 619B18D94741A2F0E67783F3 /* [CP] Copy Pods Resources */ = { + 2CE3C9E70711F5BEA940E7A0 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TsAuthenticationExample-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 703F3B8259A0BC83D92DB211 /* [CP] Check Pods Manifest.lock */ = { + 3C1884053874745B7775287A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 79EC1A845B1A8E8EEEC50CF0 /* [CP] Check Pods Manifest.lock */ = { + 62912F36BDFD13E2123F2931 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-TsAuthenticationExample-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 9FCB961C75F26CCD85EE8826 /* [CP] Embed Pods Frameworks */ = { + CB58D9EF9F7F99663B97D15B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -363,21 +371,21 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample/Pods-TsAuthenticationExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - DED126EC1FD33EFDBA8FF0D9 /* [CP] Embed Pods Frameworks */ = { + FC7B06B2DC66490CD81AB74F /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TsAuthenticationExample-TsAuthenticationExampleTests/Pods-TsAuthenticationExample-TsAuthenticationExampleTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; FD10A7F022414F080027D42C /* Start Packager */ = { @@ -432,7 +440,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9825B8DD5A2398FF12D6014D /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig */; + baseConfigurationReference = 61A27F3ED9A715B7D6030E83 /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -459,7 +467,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31EA60AE14380814A4BADD42 /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig */; + baseConfigurationReference = B6A7EE7483F63AF4DE5A01FC /* Pods-TsAuthenticationExample-TsAuthenticationExampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -483,7 +491,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 90AC1C84CF14D7E80524C37B /* Pods-TsAuthenticationExample.debug.xcconfig */; + baseConfigurationReference = 54965BE163BEEB9CE32BC1D9 /* Pods-TsAuthenticationExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -493,7 +501,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = TsAuthenticationExample/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "TS Authentication"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -514,7 +522,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8AF1B41529079CAC2E2752C /* Pods-TsAuthenticationExample.release.xcconfig */; + baseConfigurationReference = D30423ABA42E68A7C6241AC7 /* Pods-TsAuthenticationExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -523,7 +531,7 @@ DEVELOPMENT_TEAM = C88675TMZW; INFOPLIST_FILE = TsAuthenticationExample/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "TS Authentication"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -546,7 +554,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -610,13 +618,11 @@ "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-Wl", - "-ld_classic", - ); + OTHER_LDFLAGS = "$(inherited)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; + USE_HERMES = true; }; name = Debug; }; @@ -625,7 +631,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -684,13 +690,10 @@ "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-Wl", - "-ld_classic", - ); + OTHER_LDFLAGS = "$(inherited)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + USE_HERMES = true; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/example/ios/TsAuthenticationExample/AppDelegate.mm b/example/ios/TsAuthenticationExample/AppDelegate.mm index df667cc..8fa7c78 100644 --- a/example/ios/TsAuthenticationExample/AppDelegate.mm +++ b/example/ios/TsAuthenticationExample/AppDelegate.mm @@ -16,11 +16,12 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else + return [self bundleURL]; +} + +- (NSURL *)bundleURL +{ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif } @end diff --git a/example/ios/TsAuthenticationExample/LaunchScreen.storyboard b/example/ios/TsAuthenticationExample/LaunchScreen.storyboard index f6b8554..95dbb15 100644 --- a/example/ios/TsAuthenticationExample/LaunchScreen.storyboard +++ b/example/ios/TsAuthenticationExample/LaunchScreen.storyboard @@ -1,9 +1,9 @@ - + - + @@ -19,13 +19,22 @@ + + + + + + + + + @@ -38,6 +47,7 @@ + diff --git a/example/ios/TsAuthenticationExample/PrivacyInfo.xcprivacy b/example/ios/TsAuthenticationExample/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..41b8317 --- /dev/null +++ b/example/ios/TsAuthenticationExample/PrivacyInfo.xcprivacy @@ -0,0 +1,37 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/example/package.json b/example/package.json index 06ede98..5de9334 100644 --- a/example/package.json +++ b/example/package.json @@ -10,19 +10,28 @@ "build:ios": "cd ios && xcodebuild -workspace TsAuthenticationExample.xcworkspace -scheme TsAuthenticationExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO" }, "dependencies": { - "@react-native-async-storage/async-storage": "^1.21.0", - "react": "18.2.0", - "react-native": "0.72.7", - "react-native-simple-store": "^2.0.2" + "@react-native-async-storage/async-storage": "^2.1.2", + "@react-native-community/cli": "18.0.0", + "@react-native-community/cli-platform-android": "18.0.0", + "@react-native-community/cli-platform-ios": "18.0.0", + "@react-native/babel-preset": "0.79.2", + "react": "19.0.0", + "react-native": "0.79.2", + "react-native-simple-store": "^2.0.3" + }, + "resolutions": { + "@types/react": "19.1.0", + "react-native-renderer": "19.1.0" }, "devDependencies": { - "@babel/core": "^7.20.0", - "@babel/preset-env": "^7.20.0", - "@babel/runtime": "^7.20.0", - "@react-native/metro-config": "^0.72.11", - "babel-plugin-module-resolver": "^5.0.0", - "metro-react-native-babel-preset": "0.76.8", - "pod-install": "^0.1.0" + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native/metro-config": "0.79.2", + "@react-native/typescript-config": "0.79.2", + "babel-plugin-module-resolver": "^5.0.2", + "metro-react-native-babel-preset": "0.77.0", + "pod-install": "^0.3.9" }, "engines": { "node": ">=16" diff --git a/example/src/App.tsx b/example/src/App.tsx index 6d4c61b..310dc05 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { SafeAreaView } from 'react-native'; -import TSAuthenticationSDKModule from 'react-native-ts-authentication'; +import { Alert, SafeAreaView, View, ActivityIndicator, StyleSheet, Text } from 'react-native'; +import TSAuthenticationSDKModule, { TSAuthenticationSDK } from 'react-native-ts-authentication'; import HomeScreen from './home'; import config from './config'; import localUserStore from './utils/local-user-store'; @@ -16,7 +16,8 @@ export type State = { errorMessage: string, currentScreen: string, username: string, - isNewlyRegistered: boolean + isNewlyRegistered: boolean, + loading: boolean }; export type ExampleAppConfiguration = { @@ -35,7 +36,8 @@ export default class App extends React.Component { errorMessage: '', currentScreen: AppScreen.Home, username: "", - isNewlyRegistered: false + isNewlyRegistered: false, + loading: false }; } @@ -46,11 +48,16 @@ export default class App extends React.Component { render() { return ( - { - this.state.currentScreen === AppScreen.Home ? ( + + {this.state.currentScreen === AppScreen.Home ? ( ) : ( @@ -60,8 +67,19 @@ export default class App extends React.Component { onLogout={this.onLogout} isNewlyRegistered={this.state.isNewlyRegistered} /> - ) - } + )} + {this.state.loading && ( + + + + + + Please wait... + + + + )} + ); } @@ -81,6 +99,7 @@ export default class App extends React.Component { } private signTransaction = async (username: string): Promise => { + this.setState({ loading: true }); try { const response = await TSAuthenticationSDKModule.signWebauthnTransaction(username); const accessToken = await this.mockServer.getAccessToken(); @@ -93,6 +112,8 @@ export default class App extends React.Component { } } catch (error: any) { this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); } } @@ -115,10 +136,12 @@ export default class App extends React.Component { } private registerNativeBiometics = async (username: string): Promise => { + this.setState({ loading: true }); try { const response = await TSAuthenticationSDKModule.registerNativeBiometrics(username); const accessToken = await this.mockServer.getAccessToken(); const success = await this.mockServer.completeBiometricsRegistration(accessToken.token, response); + if (success) { localUserStore.addUserID(username); this.navigateToAuthenticatedUserScreen(username, true); @@ -127,10 +150,13 @@ export default class App extends React.Component { } } catch (error: any) { this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); } } private authenticateWithNativeBiometrics = async (username: string): Promise => { + this.setState({ loading: true }); try { const challenge = this.randomString(); const response = await TSAuthenticationSDKModule.authenticateNativeBiometrics(username, challenge); @@ -143,6 +169,8 @@ export default class App extends React.Component { } } catch (error: any) { this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); } } @@ -153,19 +181,25 @@ export default class App extends React.Component { this.setState({ errorMessage: 'Please enter a username' }); return; } - + this.setState({ loading: true }); const username = rawUsername.toLowerCase(); this.setState({ errorMessage: '' }); - - if (localUserStore.isUserIDStored(username)) { - this.authenticateWithWebAuthn(username); - } else { - const displayName = username + "_" + this.randomString(); - this.registerWebAuthn(username, displayName); + try { + if (localUserStore.isUserIDStored(username)) { + await this.authenticateWithWebAuthn(username); + } else { + const displayName = username + "_" + this.randomString(); + await this.registerWebAuthn(username, displayName); + } + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); } } private registerWebAuthn = async (username: string, displayName: string): Promise => { + this.setState({ loading: true }); try { const response = await TSAuthenticationSDKModule.registerWebAuthn(username, displayName); const accessToken = await this.mockServer.getAccessToken(); @@ -178,10 +212,13 @@ export default class App extends React.Component { } } catch (error: any) { this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); } } private authenticateWithWebAuthn = async (username: string): Promise => { + this.setState({ loading: true }); try { const response = await TSAuthenticationSDKModule.authenticateWebAuthn(username); const accessToken = await this.mockServer.getAccessToken(); @@ -193,6 +230,116 @@ export default class App extends React.Component { } } catch (error: any) { this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); + } + } + + // Approvals WebAuthn + + public onApprovalWebAuthn = async (username: string, approvalData: { [key: string]: string; }) => { + if (username === '') { + this.setState({ errorMessage: 'Please enter a username' }); + return; + } + this.approvalWebAuthn(username, approvalData); + } + + private approvalWebAuthn = async(username: string, approvalData: { [key: string]: string; }): Promise => { + this.setState({ loading: true }); + try { + const result = await TSAuthenticationSDKModule.approvalWebAuthn(username, approvalData, []); + Alert.alert("Approval result: ", JSON.stringify(result)); + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); + } + } + + // Approvals WebAuthn with Authentication Data + + public onApprovalWebAuthnWithData = async (rawAuthenticationData: TSAuthenticationSDK.WebAuthnAuthenticationData) => { + if (rawAuthenticationData === null) { + this.setState({ errorMessage: 'Please enter authentication data' }); + return; + } + this.approvalWebAuthnWithData(rawAuthenticationData); + } + + private approvalWebAuthnWithData = async (rawAuthenticationData: TSAuthenticationSDK.WebAuthnAuthenticationData): Promise => { + this.setState({ loading: true }); + try { + const result = await TSAuthenticationSDKModule.approvalWebAuthnWithData(rawAuthenticationData, []); + Alert.alert("Approval result: ", JSON.stringify(result)); + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); + } + } + + // Approvals Native Biometrics + + public onApprovalNativeBiometrics = async (username: string) => { + if (username === '') { + this.setState({ errorMessage: 'Please enter a username' }); + return; + } + this.setState({ loading: true }); + try { + const result = await TSAuthenticationSDKModule.approvalNativeBiometrics(username, "challenge"); + Alert.alert("Approval result: ", JSON.stringify(result)); + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + } finally { + this.setState({ loading: false }); + } + } + + // PIN Code Registration / Authentication + + private onRegisterPINCode = async (rawUsername: string, pinCode: string): Promise => { + if (rawUsername === '' || pinCode === '') { + this.setState({ errorMessage: 'Please enter a username and PIN code' }); + return false; + } + this.setState({ loading: true }); + const username = rawUsername.toLowerCase(); + this.setState({ errorMessage: '' }); + try { + const result = await TSAuthenticationSDKModule.registerPinCode(username, pinCode); + console.log("Pin Code Registration Result: ", result); + // Send the registration result to your server if needed, then commit pin registration. + await TSAuthenticationSDKModule.commitPinRegistration(result.contextIdentifier); + localUserStore.setHasRegisteredPIN(username, true); + Alert.alert("PIN Code Registration", "PIN code registered successfully"); + return true; + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + return false; + } finally { + this.setState({ loading: false }); + } + } + + private onAuthenticatePinCode = async (username: string, pinCode: string): Promise => { + if (username === '' || pinCode === '') { + this.setState({ errorMessage: 'Please enter a username and PIN code' }); + return false; + } + this.setState({ loading: true }); + + const challenge = this.randomString(); + try { + const result = await TSAuthenticationSDKModule.authenticatePinCode(username, pinCode, challenge); + Alert.alert("Authentication result: ", JSON.stringify(result)); + return true; + } catch (error: any) { + this.setState({ errorMessage: `${error}` }); + return false; + } finally { + this.setState({ loading: false }); } } @@ -222,7 +369,7 @@ export default class App extends React.Component { this.configureExampleApp(appConfiguration); } else { - console.log(`Please configure the app by updating the 'config.ts' file`); + console.error(`Please configure the app by updating the 'config.ts' file`); } } @@ -254,3 +401,35 @@ export default class App extends React.Component { return (Math.random() + 1).toString(36).substring(7); } } + +const styles = StyleSheet.create({ + spinnerOverlay: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + backgroundColor: 'rgba(0,0,0,0.18)', + justifyContent: 'center', + alignItems: 'center', + zIndex: 1000, + }, + spinnerCard: { + backgroundColor: '#fff', + borderRadius: 16, + padding: 32, + alignItems: 'center', + shadowColor: '#000', + shadowOffset: { width: 0, height: 4 }, + shadowOpacity: 0.18, + shadowRadius: 12, + elevation: 8, + minWidth: 180, + }, + spinnerText: { + fontSize: 17, + color: '#4f8cff', + fontWeight: '600', + marginLeft: 6, + }, +}); diff --git a/example/src/home.tsx b/example/src/home.tsx index 66dea96..53b782c 100644 --- a/example/src/home.tsx +++ b/example/src/home.tsx @@ -6,116 +6,464 @@ */ import React, { type ReactElement } from 'react'; -import { View, StyleSheet, Text, Button, TextInput } from 'react-native'; +import { View, StyleSheet, Text, TextInput, Alert, TouchableOpacity, Keyboard, Modal, Pressable } from 'react-native'; +import type { TSAuthenticationSDK } from 'react-native-ts-authentication'; +import localUserStore from './utils/local-user-store'; export type Props = { onStartAuthentication: (username: string) => void; onStartNativeBiometrics: (username: string) => void; + onApprovalWebAuthn: (username: string, approvalData: { [key: string]: string; }) => void; + onApprovalWebAuthnWithData: (rawAuthenticationData: TSAuthenticationSDK.WebAuthnAuthenticationData ) => void; + onApprovalNativeBiometrics: (username: string) => void; + onRegisterPINCode: (username: string, pinCode: string) => Promise; + onAuthenticatePinCode: (username: string, pinCode: string) => Promise; errorMessage: string; }; +const enum PinAuthenticatorMode { + REGISTER = 'register', + AUTHENTICATE = 'authenticate', +} + export type State = { username: string; + hasRegisteredPIN: boolean; + showPinDialog?: boolean; + pinInput?: string; + pinError?: string; + pinAuthenticatorMode: PinAuthenticatorMode; }; export default class HomeScreen extends React.Component { + private verticalSpaceBetweenButtons: number = 10; + private defaultUsername: string = 'user5'; + constructor(props: Props) { super(props); this.state = { - username: '', + username: this.defaultUsername, + hasRegisteredPIN: localUserStore.hasRegisteredPIN(this.defaultUsername), + showPinDialog: false, + pinInput: '', + pinError: '', + pinAuthenticatorMode: PinAuthenticatorMode.REGISTER, }; } render() { return ( - - {"Authentication SDK"} - {this.renderUsernameInputField()} - {this.renderStartAuthenticationButton()} - {this.renderNativeBiometricsButton()} - {this.renderStatusLabel()} + + {this.renderUsernameInputField()} + + {this.renderStartAuthenticationButton()} + {this.renderNativeBiometricsButton()} + {this.renderApprovalWebAuthnButton()} + {this.renderApprovalWebAuthnWithDataButton()} + {this.renderApprovalNativeBiometricsButton()} + {this.renderPINButton()} + + {this.renderStatusLabel()} + ); } private renderUsernameInputField(): ReactElement { return ( - + + Username this.setState({ username: text })} value={this.state.username} placeholder="Type your username here" - autoFocus={true} + autoFocus={false} // prevent keyboard from opening on load + placeholderTextColor="#aaa" /> ) } private renderStatusLabel(): ReactElement { + if (!this.props.errorMessage) return <>; return ( - + {this.props.errorMessage} ) } + private renderButton(title: string, onPress: () => void): ReactElement { + return ( + { + Keyboard.dismiss(); + onPress(); + }} + > + {title} + + ); + } + private renderStartAuthenticationButton(): ReactElement { return ( - -