diff --git a/.github/workflows/browserstack-prep-android-artifacts.yml b/.github/workflows/browserstack-prep-android-artifacts.yml index 779547887..0510c4cba 100644 --- a/.github/workflows/browserstack-prep-android-artifacts.yml +++ b/.github/workflows/browserstack-prep-android-artifacts.yml @@ -34,11 +34,12 @@ jobs: npm install -g jest npm install -g detox-cli + # Packages compile with sourceCompatibility/targetCompatibility JavaVersion.VERSION_21. - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin - java-version: 17 + java-version: 21 - name: Build SDK packages run: yarn packages:build diff --git a/.github/workflows/build-and-test-android.yml b/.github/workflows/build-and-test-android.yml index 3336caf29..4c0495a89 100644 --- a/.github/workflows/build-and-test-android.yml +++ b/.github/workflows/build-and-test-android.yml @@ -27,12 +27,13 @@ jobs: - name: Setup uses: ./.github/actions/setup-proj - # Setup JDK 17 for Android testing. - - name: Setup JDK 17 + # Setup JDK 21 for Android testing — packages compile with + # sourceCompatibility/targetCompatibility JavaVersion.VERSION_21. + - name: Setup JDK 21 uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: '17' + java-version: '21' cache: gradle # Run Android unit tests and generate JaCoCo coverage report from all packages. diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 51136b725..d5617150c 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -130,11 +130,12 @@ jobs: - name: Setup Node.js and install dependencies uses: ./.github/actions/setup-proj + # Packages compile with sourceCompatibility/targetCompatibility JavaVersion.VERSION_21. - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin - java-version: 17 + java-version: 21 - name: Enable KVM hardware acceleration run: | diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index ad7f89ad2..d7b638264 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/PingSampleApp/android/app/build.gradle b/PingSampleApp/android/app/build.gradle index ce8db7409..154476feb 100644 --- a/PingSampleApp/android/app/build.gradle +++ b/PingSampleApp/android/app/build.gradle @@ -129,6 +129,15 @@ android { excludes += "/META-INF/versions/9/OSGI-INF/MANIFEST.MF" } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" + } } dependencies { diff --git a/PingSampleApp/android/build.gradle b/PingSampleApp/android/build.gradle index 2ea6b283d..930fa903c 100644 --- a/PingSampleApp/android/build.gradle +++ b/PingSampleApp/android/build.gradle @@ -12,7 +12,7 @@ buildscript { compileSdkVersion = 36 targetSdkVersion = 36 ndkVersion = "27.1.12297006" - kotlinVersion = "2.1.20" + kotlinVersion = "2.2.10" } repositories { google() @@ -21,7 +21,7 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") classpath("com.google.gms:google-services:4.4.2") } } diff --git a/PingSampleApp/android/gradle.properties b/PingSampleApp/android/gradle.properties index e69636737..14ff4ebe9 100644 --- a/PingSampleApp/android/gradle.properties +++ b/PingSampleApp/android/gradle.properties @@ -39,3 +39,14 @@ newArchEnabled=true hermesEnabled=true nodeExecutableAndArgs=/opt/homebrew/bin/node + +## The Android SDK's 2.1.0 artifacts are compiled for JVM 21. RNGP +# normally force-installs JVM target 17 on every Android/Kotlin module via +# JdkConfiguratorUtils; this opt-out lets our packages' own JVM 21 settings +# (and this app module's) take effect instead of being overwritten. +react.internal.disableJavaVersionAlignment=true + +# Downgrades JVM-target-mismatch errors (from third-party node_modules that +# rely on RNGP's alignment to mask their own internal Java/Kotlin version +# split, now unmasked by the flag above) to warnings instead of hard failures. +kotlin.jvm.target.validation.mode=warning diff --git a/PingSampleApp/ios/Podfile b/PingSampleApp/ios/Podfile index 9475eef97..61148ebb2 100644 --- a/PingSampleApp/ios/Podfile +++ b/PingSampleApp/ios/Podfile @@ -40,9 +40,14 @@ target 'PingSampleApp' do :path => '../../node_modules/@ping-identity/rn-binding' pod 'RNPingDeviceClient', :path => '../../node_modules/@ping-identity/rn-device-client' - pod 'PingExternalIdPApple', '2.0.0' - pod 'PingExternalIdPFacebook', '2.0.0' - pod 'PingExternalIdPGoogle', '2.0.0' + pod 'PingExternalIdPApple', '2.1.0' + pod 'PingExternalIdPFacebook', '2.1.0' + pod 'PingExternalIdPGoogle', '2.1.0' + + # PingExternalIdPGoogle -> GoogleSignIn -> AppCheckCore pulls these in; neither + # defines a module, which Swift requires to import them under static linkage. + pod 'RecaptchaInterop', :modular_headers => true + pod 'GoogleUtilities', :modular_headers => true post_install do |installer| # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 diff --git a/PingSampleApp/ios/Podfile.lock b/PingSampleApp/ios/Podfile.lock index ba2ec4586..b56ca98fc 100644 --- a/PingSampleApp/ios/Podfile.lock +++ b/PingSampleApp/ios/Podfile.lock @@ -1,14 +1,16 @@ PODS: - - AppAuth (2.0.0): - - AppAuth/Core (= 2.0.0) - - AppAuth/ExternalUserAgent (= 2.0.0) - - AppAuth/Core (2.0.0) - - AppAuth/ExternalUserAgent (2.0.0): + - AppAuth (2.1.0): + - AppAuth/Core (= 2.1.0) + - AppAuth/ExternalUserAgent (= 2.1.0) + - AppAuth/Core (2.1.0) + - AppAuth/ExternalUserAgent (2.1.0): - AppAuth/Core - - AppCheckCore (11.2.0): + - AppCheckCore (11.3.1): - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) - PromisesObjC (~> 2.4) + - PromisesSwift (~> 2.4) + - RecaptchaInterop (~> 101.0) - boost (1.84.0) - DoubleConversion (1.1.6) - fast_float (8.0.0) @@ -41,12 +43,43 @@ PODS: - GoogleToolboxForMac/Defines (= 4.2.1) - "GoogleToolboxForMac/NSData+zlib (4.2.1)": - GoogleToolboxForMac/Defines (= 4.2.1) + - GoogleUtilities (8.1.0): + - GoogleUtilities/AppDelegateSwizzler (= 8.1.0) + - GoogleUtilities/Environment (= 8.1.0) + - GoogleUtilities/Logger (= 8.1.0) + - GoogleUtilities/MethodSwizzler (= 8.1.0) + - GoogleUtilities/Network (= 8.1.0) + - "GoogleUtilities/NSData+zlib (= 8.1.0)" + - GoogleUtilities/Privacy (= 8.1.0) + - GoogleUtilities/Reachability (= 8.1.0) + - GoogleUtilities/SwizzlerTestHelpers (= 8.1.0) + - GoogleUtilities/UserDefaults (= 8.1.0) + - GoogleUtilities/AppDelegateSwizzler (8.1.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy - GoogleUtilities/Environment (8.1.0): - GoogleUtilities/Privacy - GoogleUtilities/Logger (8.1.0): - GoogleUtilities/Environment - GoogleUtilities/Privacy + - GoogleUtilities/MethodSwizzler (8.1.0): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/Network (8.1.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (8.1.0)": + - GoogleUtilities/Privacy - GoogleUtilities/Privacy (8.1.0) + - GoogleUtilities/Reachability (8.1.0): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/SwizzlerTestHelpers (8.1.0): + - GoogleUtilities/MethodSwizzler - GoogleUtilities/UserDefaults (8.1.0): - GoogleUtilities/Logger - GoogleUtilities/Privacy @@ -140,70 +173,73 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - PingBinding (2.0.0): - - PingCommons (~> 2.0.0) - - PingDeviceId (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingBrowser (2.0.0): - - PingLogger (~> 2.0.0) - - PingCommons (2.0.0): - - PingLogger (~> 2.0.0) - - PingDavinci (2.0.0): - - PingDavinciPlugin (~> 2.0.0) - - PingOidc (~> 2.0.0) - - PingDavinciPlugin (2.0.0): - - PingOrchestrate (~> 2.0.0) - - PingDeviceClient (2.0.0): - - PingCommons (~> 2.0.0) - - PingNetwork (~> 2.0.0) - - PingDeviceId (2.0.0): - - PingLogger (~> 2.0.0) - - PingStorage (~> 2.0.0) - - PingDeviceProfile (2.0.0): - - PingDeviceId (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingTamperDetector (~> 2.0.0) - - PingExternalIdP (2.0.0): - - PingBrowser (~> 2.0.0) - - PingDavinciPlugin (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingExternalIdPApple (2.0.0): - - PingExternalIdP (~> 2.0.0) - - PingExternalIdPFacebook (2.0.0): + - PingBinding (2.1.0): + - PingCommons (~> 2.1.0) + - PingDeviceId (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingBrowser (2.1.0): + - PingLogger (~> 2.1.0) + - PingCommons (2.1.0): + - PingLogger (~> 2.1.0) + - PingDavinci (2.1.0): + - PingDavinciPlugin (~> 2.1.0) + - PingOidc (~> 2.1.0) + - PingDavinciPlugin (2.1.0): + - PingOrchestrate (~> 2.1.0) + - PingDeviceClient (2.1.0): + - PingCommons (~> 2.1.0) + - PingNetwork (~> 2.1.0) + - PingDeviceId (2.1.0): + - PingLogger (~> 2.1.0) + - PingStorage (~> 2.1.0) + - PingDeviceProfile (2.1.0): + - PingDeviceId (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingTamperDetector (~> 2.1.0) + - PingExternalIdP (2.1.0): + - PingBrowser (~> 2.1.0) + - PingDavinciPlugin (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingExternalIdPApple (2.1.0): + - PingExternalIdP (~> 2.1.0) + - PingExternalIdPFacebook (2.1.0): - FBSDKLoginKit (~> 16.3.1) - - PingExternalIdP (~> 2.0.0) - - PingExternalIdPGoogle (2.0.0): + - PingExternalIdP (~> 2.1.0) + - PingExternalIdPGoogle (2.1.0): - GoogleSignIn (~> 9.0.0) - - PingExternalIdP (~> 2.0.0) - - PingFido (2.0.0): - - PingCommons (~> 2.0.0) - - PingDavinciPlugin (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingJourney (2.0.0): - - PingDeviceProfile (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingOidc (~> 2.0.0) - - PingJourneyPlugin (2.0.0): - - PingOrchestrate (~> 2.0.0) - - PingLogger (2.0.0) - - PingNetwork (2.0.0): - - PingLogger (~> 2.0.0) - - PingOath (2.0.0): - - PingTamperDetector (~> 2.0.0) - - PingOidc (2.0.0): - - PingBrowser (~> 2.0.0) - - PingCommons (~> 2.0.0) - - PingOrchestrate (~> 2.0.0) - - PingOrchestrate (2.0.0): - - PingNetwork (~> 2.0.0) - - PingStorage (~> 2.0.0) - - PingPush (2.0.0): - - PingNetwork (~> 2.0.0) - - PingTamperDetector (~> 2.0.0) - - PingStorage (2.0.0) - - PingTamperDetector (2.0.0): - - PingCommons (~> 2.0.0) - - PromisesObjC (2.4.0) + - PingExternalIdP (~> 2.1.0) + - PingFido (2.1.0): + - PingCommons (~> 2.1.0) + - PingDavinciPlugin (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingLogger (~> 2.1.0) + - PingJourney (2.1.0): + - PingDeviceProfile (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingOidc (~> 2.1.0) + - PingJourneyPlugin (2.1.0): + - PingOrchestrate (~> 2.1.0) + - PingLogger (2.1.0) + - PingNetwork (2.1.0): + - PingLogger (~> 2.1.0) + - PingOath (2.1.0): + - PingTamperDetector (~> 2.1.0) + - PingOidc (2.1.0): + - PingBrowser (~> 2.1.0) + - PingCommons (~> 2.1.0) + - PingOrchestrate (~> 2.1.0) + - PingOrchestrate (2.1.0): + - PingNetwork (~> 2.1.0) + - PingStorage (~> 2.1.0) + - PingPush (2.1.0): + - PingNetwork (~> 2.1.0) + - PingTamperDetector (~> 2.1.0) + - PingStorage (2.1.0) + - PingTamperDetector (2.1.0): + - PingCommons (~> 2.1.0) + - PromisesObjC (2.4.1) + - PromisesSwift (2.4.1): + - PromisesObjC (= 2.4.1) - RCT-Folly (2024.11.18.00): - boost - DoubleConversion @@ -2439,6 +2475,7 @@ PODS: - React-perflogger (= 0.80.1) - React-utils (= 0.80.1) - SocketRocket + - RecaptchaInterop (101.0.0) - RNCAsyncStorage (2.2.0): - boost - DoubleConversion @@ -2475,7 +2512,7 @@ PODS: - fmt - glog - hermes-engine - - PingBinding (= 2.0.0) + - PingBinding (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2506,8 +2543,8 @@ PODS: - fmt - glog - hermes-engine - - PingBrowser (= 2.0.0) - - PingLogger (= 2.0.0) + - PingBrowser (= 2.1.0) + - PingLogger (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2568,12 +2605,12 @@ PODS: - fmt - glog - hermes-engine - - PingDavinci (= 2.0.0) - - PingDavinciPlugin (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingDavinci (= 2.1.0) + - PingDavinciPlugin (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2604,7 +2641,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceClient (= 2.0.0) + - PingDeviceClient (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2635,7 +2672,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceId (= 2.0.0) + - PingDeviceId (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2666,7 +2703,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceProfile (= 2.0.0) + - PingDeviceProfile (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2697,7 +2734,7 @@ PODS: - fmt - glog - hermes-engine - - PingExternalIdP (= 2.0.0) + - PingExternalIdP (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2728,7 +2765,7 @@ PODS: - fmt - glog - hermes-engine - - PingFido (= 2.0.0) + - PingFido (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2759,14 +2796,14 @@ PODS: - fmt - glog - hermes-engine - - PingDavinciPlugin (= 2.0.0) - - PingFido (= 2.0.0) - - PingJourney (= 2.0.0) - - PingJourneyPlugin (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingDavinciPlugin (= 2.1.0) + - PingFido (= 2.1.0) + - PingJourney (= 2.1.0) + - PingJourneyPlugin (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2797,7 +2834,7 @@ PODS: - fmt - glog - hermes-engine - - PingLogger (= 2.0.0) + - PingLogger (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2828,7 +2865,7 @@ PODS: - fmt - glog - hermes-engine - - PingOath (= 2.0.0) + - PingOath (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2859,11 +2896,11 @@ PODS: - fmt - glog - hermes-engine - - PingBrowser (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingBrowser (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2894,9 +2931,9 @@ PODS: - fmt - glog - hermes-engine - - PingLogger (~> 2.0.0) - - PingPush (= 2.0.0) - - PingStorage (= 2.0.0) + - PingLogger (~> 2.1.0) + - PingPush (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2927,7 +2964,7 @@ PODS: - fmt - glog - hermes-engine - - PingStorage (= 2.0.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3175,12 +3212,13 @@ DEPENDENCIES: - FBLazyVector (from `../../node_modules/react-native/Libraries/FBLazyVector`) - fmt (from `../../node_modules/react-native/third-party-podspecs/fmt.podspec`) - glog (from `../../node_modules/react-native/third-party-podspecs/glog.podspec`) + - GoogleUtilities - hermes-engine (from `../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - NitroImage (from `../../node_modules/react-native-nitro-image`) - NitroModules (from `../../node_modules/react-native-nitro-modules`) - - PingExternalIdPApple (= 2.0.0) - - PingExternalIdPFacebook (= 2.0.0) - - PingExternalIdPGoogle (= 2.0.0) + - PingExternalIdPApple (= 2.1.0) + - PingExternalIdPFacebook (= 2.1.0) + - PingExternalIdPGoogle (= 2.1.0) - RCT-Folly (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`) @@ -3248,6 +3286,7 @@ DEPENDENCIES: - ReactAppDependencyProvider (from `build/generated/ios`) - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../../node_modules/react-native/ReactCommon`) + - RecaptchaInterop - "RNCAsyncStorage (from `../../node_modules/@react-native-async-storage/async-storage`)" - "RNPingBinding (from `../../node_modules/@ping-identity/rn-binding`)" - "RNPingBrowser (from `../../node_modules/@ping-identity/rn-browser`)" @@ -3316,6 +3355,8 @@ SPEC REPOS: - PingStorage - PingTamperDetector - PromisesObjC + - PromisesSwift + - RecaptchaInterop - SocketRocket EXTERNAL SOURCES: @@ -3516,8 +3557,8 @@ EXTERNAL SOURCES: :path: "../../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 - AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f + AppAuth: ef4da5a3fc2e10b90c09a0a94a9baeaedc0341d5 + AppCheckCore: e215d35177a9cf469927863e69c13e220df32a8b boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 @@ -3543,30 +3584,31 @@ SPEC CHECKSUMS: nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 NitroImage: 5c2e7ee0b9efd9179dbb18a5b6b14baab032fe85 NitroModules: 7f1f24e38a8c6138e4f624ce65f929116edfd706 - PingBinding: 46036fcbcd4e3cb6a453f08822493ba451d4c8ab - PingBrowser: d1526bdcc6197781d0d54fe7ac16ba09a55a1faa - PingCommons: 49f2244bda1c41913fa37d9481e969702d658ade - PingDavinci: 63c1d6830ec1aaf98850ff0708b7b5fb65a55d84 - PingDavinciPlugin: d0d4c5a0e4fdd36608307e755ba435d41470d76f - PingDeviceClient: 4d2fa2ba2fb427cc4001c43ac3ed80bd994fb4f1 - PingDeviceId: e773280c2bb679f4133c8ef855f189620b331ce3 - PingDeviceProfile: f13a32c11b3d1f08d033900e1792eaef948336af - PingExternalIdP: bcf67ba8c880b03dee3f62cefbc4cbb2d774a875 - PingExternalIdPApple: 07ccfba9e4b182d236e1052714a756592b39a6ad - PingExternalIdPFacebook: e0b504bb4bbedefe4939fdea07897a1dbc90a9ad - PingExternalIdPGoogle: 07162d50931d7645cac120629b373152f03ff03b - PingFido: bece1cdf6ade29fa61737dc225069658ae7ac8bb - PingJourney: ce7632b42878317414d0ace3b47f0c47fc1fdc9b - PingJourneyPlugin: f3ae6d2db6164d72a2feaa40e128557879e8658c - PingLogger: 6198d050fe04aa2a43ae8ad8b6bbd6571e58803a - PingNetwork: b8fde435c5d30ee4024aa7d7f1c95a1e0eafc2e8 - PingOath: e401ec4a9bc3edad14ca1c205c1420b7636fbf80 - PingOidc: eda685279cfaba6d42ca474a953306448987e760 - PingOrchestrate: 21d780ed7eeb3c366ae43785017b2700478db783 - PingPush: 71aed837ffd7bed5a75f9f08a05431c232094957 - PingStorage: 7e3bc6966fbf7587523e56a8a7b0f5d85ea3bd94 - PingTamperDetector: b5e4b7aa325a11f2de1f3df9bdd8cc3391cddf1c - PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + PingBinding: e6c18b25ca49463faa790a8d7ab25d81197f67e0 + PingBrowser: 9654254bfc8651cb81ca566cb7459459efa8a600 + PingCommons: 62bde3af35f24a13e9b120e0ea098e467655cad6 + PingDavinci: cb1e283b9fce8cf74ed409d8610ccfe9bc2dca41 + PingDavinciPlugin: 7442a6d12d980368d2d1ce504e6e4c863826f4ca + PingDeviceClient: 7f61abbd4c2035b1551d57f97b35907adde85a9c + PingDeviceId: 60ca36f84b4c2d44a003f5552a6ef91dbaf9ec7a + PingDeviceProfile: 78f5b8fb8090457d50e6d96165da0e7b5f8e6a37 + PingExternalIdP: 9f4f57dc168d8c182df79942e593333e4a8ab1ad + PingExternalIdPApple: b563b76a92c25c8be795f2d8ecc20aec70add005 + PingExternalIdPFacebook: b61d88fd333a2070e22fa3e5dd3dfd6ee98cb5bd + PingExternalIdPGoogle: b781736f39441b87ef0987562138947155c27078 + PingFido: 405240423b1865880811d0e24c6a40a4527f0b84 + PingJourney: c60d7ac6f78c905d4fdaff35051e38ab2bff046c + PingJourneyPlugin: d2eb4c91a7b507466732caa0611321672d3175f7 + PingLogger: 6e79b430564762c2a815b09cee7e099b9474d036 + PingNetwork: 97b4a783caca3ff9382ecbfe2b6da1cff10ed647 + PingOath: 34d6c81f32c87a4f568fceb48b531cd1be3e9464 + PingOidc: e6d28c4d8c130691872d6aa3b12a1ef498567957 + PingOrchestrate: 90365995dc6fc5bd14f78ae5c04f07d46d265523 + PingPush: aef2216cade878592b6c7166a90d8b15f1c0b649 + PingStorage: fdaebdd80f4359dc7eb4f780429cc6840ed01cee + PingTamperDetector: 99159fd12d0ffc40db6096fcff99daf554f248c8 + PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273 + PromisesSwift: 217dea0fd5d2ad65222a109c48698add13cc1c5b RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f RCTDeprecation: efa5010912100e944a7ac9a93a157e1def1988fe RCTRequired: bbc4cf999ddc4a4b076e076c74dd1d39d0254630 @@ -3633,22 +3675,23 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: ba631a31783569c13056dd57ff39e19764abdd6f ReactCodegen: 1e9f3e8a3f56fa25fbf39ecd37b708a4838d9032 ReactCommon: 96684b90b235d6ae340d126141edd4563b7a446a + RecaptchaInterop: 11e0b637842dfb48308d242afc3f448062325aba RNCAsyncStorage: 767abb068db6ad28b5f59a129fbc9fab18b377e2 - RNPingBinding: c9449a4e6b808afc9dcc311a07804559c0c522b4 - RNPingBrowser: 042c960b67b47a85b0e1de373b76ddb2609487e1 + RNPingBinding: 1731d5254b7d026df05ee056ab7802f4888537e9 + RNPingBrowser: b6afbf0fa46c9ae0a10daeb46927f05eca5c7c6d RNPingCore: 3926e39f9ab60d83fb4d58225303864ca0d8171b - RNPingDavinci: 44860fa051499d949bad798336c15e508a78fb09 - RNPingDeviceClient: bd78e33420a8f5dcd6ab3b21691805743b12079f - RNPingDeviceId: 24f49f8d518103367f6bbcbcf54138a424541ba7 - RNPingDeviceProfile: 4c6b306859c9bc9cdad0aea830d9a8e0227dcc4a - RNPingExternalIdp: 372123fab1006f80c184a1f7992a3b335f69eb3c - RNPingFido: a67c3cb1fa2ff1930476189e5ebc1bc0a6e84d4a - RNPingJourney: 90546edde90b7c30f9b4a526a094e531a92094fe - RNPingLogger: db39fa39b31cd5026a7c279cd52996fafac190e1 - RNPingOath: 2e64a03cd27ac198b21d2e4a4d767eaa31bd2b03 - RNPingOidc: dceb88744c13a9bdd44a339f244d3a0535bf8232 - RNPingPush: 898e5dd90a372e2ac9a27f0c622c2f17614fbd26 - RNPingStorage: 17cf506d51259fa7c64a649d97ed974bd5350b22 + RNPingDavinci: 81122638cb43d20c7e24e66eea5bd8700fd48aae + RNPingDeviceClient: 0ff89a604e97d1168eff3aba4b1d889139619bd7 + RNPingDeviceId: 6eb3e9fc68a78e1aee87652e025f6e1ec6d5d67e + RNPingDeviceProfile: 3086f14fc5024196a64290afbbf7917432dd5900 + RNPingExternalIdp: 8e6e224400407ab3e732bc72976f250940ad644c + RNPingFido: 3bb455d8ccc47e45c902af0033f8b3cccee579e7 + RNPingJourney: 4e2a18cbda69fae0011109b8c7bef8b5dc4bc9d2 + RNPingLogger: b7dd73f42b3fea86a56fc7a35999cf4333fbde20 + RNPingOath: 261b44b957975c0c036b1bed6ef953c4767b8fcc + RNPingOidc: d490892cb09a11c189b2259bca0fecfc09a109fd + RNPingPush: 3f02ee0f3d971c0d8affdb13b8fcefc4de789de1 + RNPingStorage: 2c45c6d29cfcf8e1ed8ec3e32df1443e29dabd67 RNScreens: 846d53087db560ed5fbc34feb0643adb5f9602c5 RNSVG: e8fb86f41fccd7b67c4480bb9e179e0ad5785b80 RNVectorIcons: 54df27a2e90ddeb674c7237d76060ec9762d0bc5 @@ -3657,6 +3700,6 @@ SPEC CHECKSUMS: VisionCameraBarcodeScanner: 0b6fe2e3c52ca68a0dbd5d25719c7523c68d807f Yoga: daa1e4de4b971b977b23bc842aaa3e135324f1f3 -PODFILE CHECKSUM: 83df8013c84a3febb48d5c5092b148ef9136e104 +PODFILE CHECKSUM: 35159028c49678100eea2347153c0cf4cd45998f -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/PingTestRunner/android/app/build.gradle b/PingTestRunner/android/app/build.gradle index 1bd593e64..338ed2980 100644 --- a/PingTestRunner/android/app/build.gradle +++ b/PingTestRunner/android/app/build.gradle @@ -80,6 +80,21 @@ android { excludes += "/META-INF/versions/9/OSGI-INF/MANIFEST.MF" } } + + // The Ping Android SDK's 2.1.0 artifacts are compiled for JVM 21, and every + // rn-* package targets JVM 21 to match (see e.g. packages/push/android/build.gradle). + // This app module must target the same JVM version, or compileDebugKotlin fails + // with "Inconsistent JVM Target Compatibility Between Java and Kotlin Tasks". + // Paired with react.internal.disableJavaVersionAlignment=true in gradle.properties, + // which stops RNGP from force-overriding this back to JVM 17. + compileOptions { + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" + } } dependencies { diff --git a/PingTestRunner/android/build.gradle b/PingTestRunner/android/build.gradle index 44ff611a0..50a95a761 100644 --- a/PingTestRunner/android/build.gradle +++ b/PingTestRunner/android/build.gradle @@ -12,7 +12,7 @@ buildscript { compileSdkVersion = 36 targetSdkVersion = 36 ndkVersion = "27.1.12297006" - kotlinVersion = "2.1.20" + kotlinVersion = "2.2.20" } repositories { google() @@ -21,7 +21,12 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + // Pin the Kotlin Gradle plugin/compiler to the same $kotlinVersion declared + // above. Leaving this unpinned lets Gradle resolve an unrelated (often older) + // Kotlin compiler version, which then chokes on kotlin-stdlib metadata pulled + // in transitively by the Ping Android SDK (e.g. via ktor-client), causing an + // internal compiler error. See PingSampleApp/android/build.gradle for the same pin. + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") } } diff --git a/PingTestRunner/android/gradle.properties b/PingTestRunner/android/gradle.properties index c8ba879ab..78b9ff8a9 100644 --- a/PingTestRunner/android/gradle.properties +++ b/PingTestRunner/android/gradle.properties @@ -29,3 +29,14 @@ hermesEnabled=true # Bundle JS into the APK for release builds (required for standalone E2E without Metro) bundleInRelease=true + +# The Android SDK's 2.1.0 artifacts are compiled for JVM 21. RNGP +# normally force-installs JVM target 17 on every Android/Kotlin module via +# JdkConfiguratorUtils; this opt-out lets our packages' own JVM 21 settings +# (and this app module's) take effect instead of being overwritten. +react.internal.disableJavaVersionAlignment=true + +# Downgrades JVM-target-mismatch errors (from third-party node_modules that +# rely on RNGP's alignment to mask their own internal Java/Kotlin version +# split, now unmasked by the flag above) to warnings instead of hard failures. +kotlin.jvm.target.validation.mode=warning diff --git a/PingTestRunner/ios/Podfile.lock b/PingTestRunner/ios/Podfile.lock index c49a2f32e..fb77b2f84 100644 --- a/PingTestRunner/ios/Podfile.lock +++ b/PingTestRunner/ios/Podfile.lock @@ -8,61 +8,62 @@ PODS: - hermes-engine (0.80.1): - hermes-engine/Pre-built (= 0.80.1) - hermes-engine/Pre-built (0.80.1) - - PingBinding (2.0.0): - - PingCommons (~> 2.0.0) - - PingDeviceId (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingBrowser (2.0.0): - - PingLogger (~> 2.0.0) - - PingCommons (2.0.0): - - PingLogger (~> 2.0.0) - - PingDavinci (2.0.0): - - PingDavinciPlugin (~> 2.0.0) - - PingOidc (~> 2.0.0) - - PingDavinciPlugin (2.0.0): - - PingOrchestrate (~> 2.0.0) - - PingDeviceClient (2.0.0): - - PingCommons (~> 2.0.0) - - PingNetwork (~> 2.0.0) - - PingDeviceId (2.0.0): - - PingLogger (~> 2.0.0) - - PingStorage (~> 2.0.0) - - PingDeviceProfile (2.0.0): - - PingDeviceId (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingTamperDetector (~> 2.0.0) - - PingExternalIdP (2.0.0): - - PingBrowser (~> 2.0.0) - - PingDavinciPlugin (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingFido (2.0.0): - - PingCommons (~> 2.0.0) - - PingDavinciPlugin (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingJourney (2.0.0): - - PingDeviceProfile (~> 2.0.0) - - PingJourneyPlugin (~> 2.0.0) - - PingOidc (~> 2.0.0) - - PingJourneyPlugin (2.0.0): - - PingOrchestrate (~> 2.0.0) - - PingLogger (2.0.0) - - PingNetwork (2.0.0): - - PingLogger (~> 2.0.0) - - PingOath (2.0.0): - - PingTamperDetector (~> 2.0.0) - - PingOidc (2.0.0): - - PingBrowser (~> 2.0.0) - - PingCommons (~> 2.0.0) - - PingOrchestrate (~> 2.0.0) - - PingOrchestrate (2.0.0): - - PingNetwork (~> 2.0.0) - - PingStorage (~> 2.0.0) - - PingPush (2.0.0): - - PingNetwork (~> 2.0.0) - - PingTamperDetector (~> 2.0.0) - - PingStorage (2.0.0) - - PingTamperDetector (2.0.0): - - PingCommons (~> 2.0.0) + - PingBinding (2.1.0): + - PingCommons (~> 2.1.0) + - PingDeviceId (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingBrowser (2.1.0): + - PingLogger (~> 2.1.0) + - PingCommons (2.1.0): + - PingLogger (~> 2.1.0) + - PingDavinci (2.1.0): + - PingDavinciPlugin (~> 2.1.0) + - PingOidc (~> 2.1.0) + - PingDavinciPlugin (2.1.0): + - PingOrchestrate (~> 2.1.0) + - PingDeviceClient (2.1.0): + - PingCommons (~> 2.1.0) + - PingNetwork (~> 2.1.0) + - PingDeviceId (2.1.0): + - PingLogger (~> 2.1.0) + - PingStorage (~> 2.1.0) + - PingDeviceProfile (2.1.0): + - PingDeviceId (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingTamperDetector (~> 2.1.0) + - PingExternalIdP (2.1.0): + - PingBrowser (~> 2.1.0) + - PingDavinciPlugin (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingFido (2.1.0): + - PingCommons (~> 2.1.0) + - PingDavinciPlugin (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingLogger (~> 2.1.0) + - PingJourney (2.1.0): + - PingDeviceProfile (~> 2.1.0) + - PingJourneyPlugin (~> 2.1.0) + - PingOidc (~> 2.1.0) + - PingJourneyPlugin (2.1.0): + - PingOrchestrate (~> 2.1.0) + - PingLogger (2.1.0) + - PingNetwork (2.1.0): + - PingLogger (~> 2.1.0) + - PingOath (2.1.0): + - PingTamperDetector (~> 2.1.0) + - PingOidc (2.1.0): + - PingBrowser (~> 2.1.0) + - PingCommons (~> 2.1.0) + - PingOrchestrate (~> 2.1.0) + - PingOrchestrate (2.1.0): + - PingNetwork (~> 2.1.0) + - PingStorage (~> 2.1.0) + - PingPush (2.1.0): + - PingNetwork (~> 2.1.0) + - PingTamperDetector (~> 2.1.0) + - PingStorage (2.1.0) + - PingTamperDetector (2.1.0): + - PingCommons (~> 2.1.0) - RCT-Folly (2024.11.18.00): - boost - DoubleConversion @@ -2215,7 +2216,7 @@ PODS: - fmt - glog - hermes-engine - - PingBinding (= 2.0.0) + - PingBinding (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2246,7 +2247,7 @@ PODS: - fmt - glog - hermes-engine - - PingBinding (= 2.0.0) + - PingBinding (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2277,8 +2278,8 @@ PODS: - fmt - glog - hermes-engine - - PingBrowser (= 2.0.0) - - PingLogger (= 2.0.0) + - PingBrowser (= 2.1.0) + - PingLogger (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2310,8 +2311,8 @@ PODS: - fmt - glog - hermes-engine - - PingBrowser (= 2.0.0) - - PingLogger (= 2.0.0) + - PingBrowser (= 2.1.0) + - PingLogger (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2401,7 +2402,12 @@ PODS: - fmt - glog - hermes-engine - - PingDavinci (= 2.0.0) + - PingDavinci (= 2.1.0) + - PingDavinciPlugin (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2432,7 +2438,12 @@ PODS: - fmt - glog - hermes-engine - - PingDavinci (= 2.0.0) + - PingDavinci (= 2.1.0) + - PingDavinciPlugin (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2463,7 +2474,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceClient (= 2.0.0) + - PingDeviceClient (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2494,7 +2505,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceClient (= 2.0.0) + - PingDeviceClient (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2525,7 +2536,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceId (= 2.0.0) + - PingDeviceId (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2556,7 +2567,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceId (= 2.0.0) + - PingDeviceId (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2587,7 +2598,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceProfile (= 2.0.0) + - PingDeviceProfile (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2618,7 +2629,7 @@ PODS: - fmt - glog - hermes-engine - - PingDeviceProfile (= 2.0.0) + - PingDeviceProfile (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2649,7 +2660,7 @@ PODS: - fmt - glog - hermes-engine - - PingExternalIdP (= 2.0.0) + - PingExternalIdP (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2680,7 +2691,7 @@ PODS: - fmt - glog - hermes-engine - - PingExternalIdP (= 2.0.0) + - PingExternalIdP (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2711,7 +2722,7 @@ PODS: - fmt - glog - hermes-engine - - PingFido (= 2.0.0) + - PingFido (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2742,7 +2753,7 @@ PODS: - fmt - glog - hermes-engine - - PingFido (= 2.0.0) + - PingFido (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2773,14 +2784,14 @@ PODS: - fmt - glog - hermes-engine - - PingDavinciPlugin (= 2.0.0) - - PingFido (= 2.0.0) - - PingJourney (= 2.0.0) - - PingJourneyPlugin (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingDavinciPlugin (= 2.1.0) + - PingFido (= 2.1.0) + - PingJourney (= 2.1.0) + - PingJourneyPlugin (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2811,14 +2822,14 @@ PODS: - fmt - glog - hermes-engine - - PingDavinciPlugin (= 2.0.0) - - PingFido (= 2.0.0) - - PingJourney (= 2.0.0) - - PingJourneyPlugin (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingDavinciPlugin (= 2.1.0) + - PingFido (= 2.1.0) + - PingJourney (= 2.1.0) + - PingJourneyPlugin (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2849,7 +2860,7 @@ PODS: - fmt - glog - hermes-engine - - PingLogger (= 2.0.0) + - PingLogger (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2880,7 +2891,7 @@ PODS: - fmt - glog - hermes-engine - - PingLogger (= 2.0.0) + - PingLogger (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2911,7 +2922,7 @@ PODS: - fmt - glog - hermes-engine - - PingOath (= 2.0.0) + - PingOath (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2942,7 +2953,7 @@ PODS: - fmt - glog - hermes-engine - - PingOath (= 2.0.0) + - PingOath (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2973,11 +2984,11 @@ PODS: - fmt - glog - hermes-engine - - PingBrowser (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingBrowser (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3008,11 +3019,11 @@ PODS: - fmt - glog - hermes-engine - - PingBrowser (= 2.0.0) - - PingLogger (= 2.0.0) - - PingOidc (= 2.0.0) - - PingOrchestrate (= 2.0.0) - - PingStorage (= 2.0.0) + - PingBrowser (= 2.1.0) + - PingLogger (= 2.1.0) + - PingOidc (= 2.1.0) + - PingOrchestrate (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3043,9 +3054,9 @@ PODS: - fmt - glog - hermes-engine - - PingLogger (~> 2.0.0) - - PingPush (= 2.0.0) - - PingStorage (= 2.0.0) + - PingLogger (~> 2.1.0) + - PingPush (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3076,9 +3087,9 @@ PODS: - fmt - glog - hermes-engine - - PingLogger (~> 2.0.0) - - PingPush (= 2.0.0) - - PingStorage (= 2.0.0) + - PingLogger (~> 2.1.0) + - PingPush (= 2.1.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3109,7 +3120,7 @@ PODS: - fmt - glog - hermes-engine - - PingStorage (= 2.0.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3140,7 +3151,7 @@ PODS: - fmt - glog - hermes-engine - - PingStorage (= 2.0.0) + - PingStorage (= 2.1.0) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -3483,32 +3494,32 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - fast_float: 914e00b8b67cb8ba184a778c7bbc2e9fe98d37b3 + fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 FBLazyVector: 09f03e4b6f42f955734b64a118f86509cc719427 - fmt: b85d977e8fe789fd71c77123f9f4920d88c4d170 - glog: 682871fb30f4a65f657bf357581110656ea90b08 - hermes-engine: c8443ebca6460d15100b5b29ae584a1a6c9dc18b - PingBinding: 46036fcbcd4e3cb6a453f08822493ba451d4c8ab - PingBrowser: d1526bdcc6197781d0d54fe7ac16ba09a55a1faa - PingCommons: 49f2244bda1c41913fa37d9481e969702d658ade - PingDavinci: 63c1d6830ec1aaf98850ff0708b7b5fb65a55d84 - PingDavinciPlugin: d0d4c5a0e4fdd36608307e755ba435d41470d76f - PingDeviceClient: 4d2fa2ba2fb427cc4001c43ac3ed80bd994fb4f1 - PingDeviceId: e773280c2bb679f4133c8ef855f189620b331ce3 - PingDeviceProfile: f13a32c11b3d1f08d033900e1792eaef948336af - PingExternalIdP: bcf67ba8c880b03dee3f62cefbc4cbb2d774a875 - PingFido: bece1cdf6ade29fa61737dc225069658ae7ac8bb - PingJourney: ce7632b42878317414d0ace3b47f0c47fc1fdc9b - PingJourneyPlugin: f3ae6d2db6164d72a2feaa40e128557879e8658c - PingLogger: 6198d050fe04aa2a43ae8ad8b6bbd6571e58803a - PingNetwork: b8fde435c5d30ee4024aa7d7f1c95a1e0eafc2e8 - PingOath: e401ec4a9bc3edad14ca1c205c1420b7636fbf80 - PingOidc: eda685279cfaba6d42ca474a953306448987e760 - PingOrchestrate: 21d780ed7eeb3c366ae43785017b2700478db783 - PingPush: 71aed837ffd7bed5a75f9f08a05431c232094957 - PingStorage: 7e3bc6966fbf7587523e56a8a7b0f5d85ea3bd94 - PingTamperDetector: b5e4b7aa325a11f2de1f3df9bdd8cc3391cddf1c - RCT-Folly: fb64616e25cfac1c3d10bfd784d68926325ae67f + fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd + glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 + hermes-engine: 4f07404533b808de66cf48ac4200463068d0e95a + PingBinding: e6c18b25ca49463faa790a8d7ab25d81197f67e0 + PingBrowser: 9654254bfc8651cb81ca566cb7459459efa8a600 + PingCommons: 62bde3af35f24a13e9b120e0ea098e467655cad6 + PingDavinci: cb1e283b9fce8cf74ed409d8610ccfe9bc2dca41 + PingDavinciPlugin: 7442a6d12d980368d2d1ce504e6e4c863826f4ca + PingDeviceClient: 7f61abbd4c2035b1551d57f97b35907adde85a9c + PingDeviceId: 60ca36f84b4c2d44a003f5552a6ef91dbaf9ec7a + PingDeviceProfile: 78f5b8fb8090457d50e6d96165da0e7b5f8e6a37 + PingExternalIdP: 9f4f57dc168d8c182df79942e593333e4a8ab1ad + PingFido: 405240423b1865880811d0e24c6a40a4527f0b84 + PingJourney: c60d7ac6f78c905d4fdaff35051e38ab2bff046c + PingJourneyPlugin: d2eb4c91a7b507466732caa0611321672d3175f7 + PingLogger: 6e79b430564762c2a815b09cee7e099b9474d036 + PingNetwork: 97b4a783caca3ff9382ecbfe2b6da1cff10ed647 + PingOath: 34d6c81f32c87a4f568fceb48b531cd1be3e9464 + PingOidc: e6d28c4d8c130691872d6aa3b12a1ef498567957 + PingOrchestrate: 90365995dc6fc5bd14f78ae5c04f07d46d265523 + PingPush: aef2216cade878592b6c7166a90d8b15f1c0b649 + PingStorage: fdaebdd80f4359dc7eb4f780429cc6840ed01cee + PingTamperDetector: 99159fd12d0ffc40db6096fcff99daf554f248c8 + RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f RCTDeprecation: efa5010912100e944a7ac9a93a157e1def1988fe RCTRequired: bbc4cf999ddc4a4b076e076c74dd1d39d0254630 RCTTypeSafety: d877728097547d0a37786cc9130c43ad71739ac3 @@ -3574,21 +3585,21 @@ SPEC CHECKSUMS: ReactCodegen: 1e9f3e8a3f56fa25fbf39ecd37b708a4838d9032 ReactCommon: 96684b90b235d6ae340d126141edd4563b7a446a RNCAsyncStorage: 767abb068db6ad28b5f59a129fbc9fab18b377e2 - RNPingBinding: c9449a4e6b808afc9dcc311a07804559c0c522b4 - RNPingBrowser: 042c960b67b47a85b0e1de373b76ddb2609487e1 + RNPingBinding: 1731d5254b7d026df05ee056ab7802f4888537e9 + RNPingBrowser: b6afbf0fa46c9ae0a10daeb46927f05eca5c7c6d RNPingCore: 3926e39f9ab60d83fb4d58225303864ca0d8171b - RNPingDavinci: b37645623c3b3b3b1b0669a56a3d2e7ec231e75d - RNPingDeviceClient: bd78e33420a8f5dcd6ab3b21691805743b12079f - RNPingDeviceId: 24f49f8d518103367f6bbcbcf54138a424541ba7 - RNPingDeviceProfile: 4c6b306859c9bc9cdad0aea830d9a8e0227dcc4a - RNPingExternalIdp: 372123fab1006f80c184a1f7992a3b335f69eb3c - RNPingFido: a67c3cb1fa2ff1930476189e5ebc1bc0a6e84d4a - RNPingJourney: 90546edde90b7c30f9b4a526a094e531a92094fe - RNPingLogger: db39fa39b31cd5026a7c279cd52996fafac190e1 - RNPingOath: 2e64a03cd27ac198b21d2e4a4d767eaa31bd2b03 - RNPingOidc: dceb88744c13a9bdd44a339f244d3a0535bf8232 - RNPingPush: 898e5dd90a372e2ac9a27f0c622c2f17614fbd26 - RNPingStorage: 17cf506d51259fa7c64a649d97ed974bd5350b22 + RNPingDavinci: 81122638cb43d20c7e24e66eea5bd8700fd48aae + RNPingDeviceClient: 0ff89a604e97d1168eff3aba4b1d889139619bd7 + RNPingDeviceId: 6eb3e9fc68a78e1aee87652e025f6e1ec6d5d67e + RNPingDeviceProfile: 3086f14fc5024196a64290afbbf7917432dd5900 + RNPingExternalIdp: 8e6e224400407ab3e732bc72976f250940ad644c + RNPingFido: 3bb455d8ccc47e45c902af0033f8b3cccee579e7 + RNPingJourney: 4e2a18cbda69fae0011109b8c7bef8b5dc4bc9d2 + RNPingLogger: b7dd73f42b3fea86a56fc7a35999cf4333fbde20 + RNPingOath: 261b44b957975c0c036b1bed6ef953c4767b8fcc + RNPingOidc: d490892cb09a11c189b2259bca0fecfc09a109fd + RNPingPush: 3f02ee0f3d971c0d8affdb13b8fcefc4de789de1 + RNPingStorage: 2c45c6d29cfcf8e1ed8ec3e32df1443e29dabd67 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: daa1e4de4b971b977b23bc842aaa3e135324f1f3 diff --git a/packages/binding/RNPingBinding.podspec b/packages/binding/RNPingBinding.podspec index e3b04b279..2b7483717 100644 --- a/packages/binding/RNPingBinding.podspec +++ b/packages/binding/RNPingBinding.podspec @@ -36,12 +36,12 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingBinding", "2.0.0" + test_spec.dependency "PingBinding", "2.1.0" test_spec.dependency "RNPingCore" end # Native Ping SDK dependencies - s.dependency "PingBinding", "2.0.0" + s.dependency "PingBinding", "2.1.0" s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/binding/android/build.gradle b/packages/binding/android/build.gradle index b13a0cc7d..5d85ce84f 100644 --- a/packages/binding/android/build.gradle +++ b/packages/binding/android/build.gradle @@ -62,8 +62,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -79,14 +83,14 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:journey:2.0.1") - implementation("com.pingidentity.sdks:binding:2.0.1") - implementation("com.pingidentity.sdks:binding-ui:2.0.1") + implementation("com.pingidentity.sdks:journey:2.1.0") + implementation("com.pingidentity.sdks:binding:2.1.0") + implementation("com.pingidentity.sdks:binding-ui:2.1.0") implementation("androidx.biometric:biometric-ktx:1.4.0-alpha02") // Required by Application PIN authenticator (X.509 / PKIX support). implementation("org.bouncycastle:bcpkix-jdk18on:1.82") - implementation("com.pingidentity.sdks:android:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") + implementation("com.pingidentity.sdks:android:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation(project(":ping-identity_rn-core")) testImplementation "junit:junit:4.13.2" diff --git a/packages/browser/RNPingBrowser.podspec b/packages/browser/RNPingBrowser.podspec index 6029162e0..21bd5a487 100644 --- a/packages/browser/RNPingBrowser.podspec +++ b/packages/browser/RNPingBrowser.podspec @@ -40,15 +40,15 @@ Pod::Spec.new do |s| s.swift_version = ['5.0', '5.1', '6.0'] # Native Ping SDK dependency - s.dependency 'PingBrowser', '2.0.0' - s.dependency 'PingLogger', '2.0.0' + s.dependency 'PingBrowser', '2.1.0' + s.dependency 'PingLogger', '2.1.0' s.dependency 'RNPingCore' s.dependency 'RNPingLogger' s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency 'PingBrowser', '2.0.0' - test_spec.dependency 'PingLogger', '2.0.0' + test_spec.dependency 'PingBrowser', '2.1.0' + test_spec.dependency 'PingLogger', '2.1.0' test_spec.dependency 'RNPingCore' test_spec.dependency 'RNPingLogger' end diff --git a/packages/browser/android/build.gradle b/packages/browser/android/build.gradle index f80dc3e3e..db4644fd2 100644 --- a/packages/browser/android/build.gradle +++ b/packages/browser/android/build.gradle @@ -64,8 +64,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -89,8 +93,8 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation("com.pingidentity.sdks:browser:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") + implementation("com.pingidentity.sdks:browser:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation(project(":ping-identity_rn-core")) testImplementation "junit:junit:4.13.2" diff --git a/packages/core/android/build.gradle b/packages/core/android/build.gradle index 50345194b..6f8c13142 100644 --- a/packages/core/android/build.gradle +++ b/packages/core/android/build.gradle @@ -60,8 +60,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { diff --git a/packages/davinci/RNPingDavinci.podspec b/packages/davinci/RNPingDavinci.podspec index 180ba7337..3e5a2d5e0 100644 --- a/packages/davinci/RNPingDavinci.podspec +++ b/packages/davinci/RNPingDavinci.podspec @@ -36,16 +36,16 @@ Pod::Spec.new do |s| s.swift_version = ['5.0', '5.1', '6.0'] s.dependency "RNPingCore" - s.dependency "PingDavinci", '2.0.0' - s.dependency "PingDavinciPlugin", '2.0.0' - s.dependency "PingLogger", '2.0.0' - s.dependency "PingOidc", '2.0.0' - s.dependency "PingOrchestrate", '2.0.0' - s.dependency "PingStorage", '2.0.0' + s.dependency "PingDavinci", '2.1.0' + s.dependency "PingDavinciPlugin", '2.1.0' + s.dependency "PingLogger", '2.1.0' + s.dependency "PingOidc", '2.1.0' + s.dependency "PingOrchestrate", '2.1.0' + s.dependency "PingStorage", '2.1.0' s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingDavinci", '2.0.0' + test_spec.dependency "PingDavinci", '2.1.0' test_spec.dependency "RNPingCore" end diff --git a/packages/davinci/android/build.gradle b/packages/davinci/android/build.gradle index 6e6edce76..de54868c3 100644 --- a/packages/davinci/android/build.gradle +++ b/packages/davinci/android/build.gradle @@ -70,8 +70,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -95,7 +99,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation("com.pingidentity.sdks:davinci:2.0.1") + implementation("com.pingidentity.sdks:davinci:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation(project(":ping-identity_rn-core")) diff --git a/packages/device-client/RNPingDeviceClient.podspec b/packages/device-client/RNPingDeviceClient.podspec index aaf21169b..6e9c6a6c0 100644 --- a/packages/device-client/RNPingDeviceClient.podspec +++ b/packages/device-client/RNPingDeviceClient.podspec @@ -38,12 +38,12 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingDeviceClient", '2.0.0' + test_spec.dependency "PingDeviceClient", '2.1.0' test_spec.dependency "RNPingCore" end # Native Ping SDK dependency - s.dependency "PingDeviceClient", '2.0.0' + s.dependency "PingDeviceClient", '2.1.0' s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/device-client/android/build.gradle b/packages/device-client/android/build.gradle index 11d97e6b2..1afb86a69 100644 --- a/packages/device-client/android/build.gradle +++ b/packages/device-client/android/build.gradle @@ -67,8 +67,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -84,9 +88,9 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:device-client:2.0.1") - implementation("com.pingidentity.sdks:android:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") + implementation("com.pingidentity.sdks:device-client:2.1.0") + implementation("com.pingidentity.sdks:android:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") implementation "io.ktor:ktor-client-core:2.3.12" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" diff --git a/packages/device-id/RNPingDeviceId.podspec b/packages/device-id/RNPingDeviceId.podspec index 76f0e1358..b7b896c59 100644 --- a/packages/device-id/RNPingDeviceId.podspec +++ b/packages/device-id/RNPingDeviceId.podspec @@ -41,12 +41,12 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingDeviceId", '2.0.0' + test_spec.dependency "PingDeviceId", '2.1.0' test_spec.dependency "RNPingCore" end # Native Ping SDK dependency - s.dependency "PingDeviceId", '2.0.0' + s.dependency "PingDeviceId", '2.1.0' s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/device-id/android/build.gradle b/packages/device-id/android/build.gradle index 11b58fd3c..a6a93c763 100644 --- a/packages/device-id/android/build.gradle +++ b/packages/device-id/android/build.gradle @@ -70,8 +70,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -87,8 +91,8 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:device-id:2.0.1") - implementation("com.pingidentity.sdks:android:2.0.1") + implementation("com.pingidentity.sdks:device-id:2.1.0") + implementation("com.pingidentity.sdks:android:2.1.0") implementation(project(":ping-identity_rn-core")) testImplementation "junit:junit:4.13.2" testImplementation "io.mockk:mockk:1.13.12" diff --git a/packages/device-profile/RNPingDeviceProfile.podspec b/packages/device-profile/RNPingDeviceProfile.podspec index ee4b78fe6..8e2624e78 100644 --- a/packages/device-profile/RNPingDeviceProfile.podspec +++ b/packages/device-profile/RNPingDeviceProfile.podspec @@ -40,12 +40,12 @@ Pod::Spec.new do |s| s.swift_version = ['5.0', '5.1', '6.0'] # Native Ping SDK dependency - s.dependency "PingDeviceProfile", '2.0.0' + s.dependency "PingDeviceProfile", '2.1.0' s.dependency "RNPingCore" s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingDeviceProfile", '2.0.0' + test_spec.dependency "PingDeviceProfile", '2.1.0' test_spec.dependency "RNPingCore" end diff --git a/packages/device-profile/android/build.gradle b/packages/device-profile/android/build.gradle index fe3dc479d..11643e465 100644 --- a/packages/device-profile/android/build.gradle +++ b/packages/device-profile/android/build.gradle @@ -71,8 +71,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -88,10 +92,10 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:device-profile:2.0.1") - implementation("com.pingidentity.sdks:journey-plugin:2.0.1") - implementation("com.pingidentity.sdks:device-root:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") + implementation("com.pingidentity.sdks:device-profile:2.1.0") + implementation("com.pingidentity.sdks:journey-plugin:2.1.0") + implementation("com.pingidentity.sdks:device-root:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation(project(":ping-identity_rn-core")) @@ -104,5 +108,5 @@ dependencies { testImplementation "junit:junit:4.13.2" testImplementation "io.mockk:mockk:1.13.9" testImplementation "org.robolectric:robolectric:4.11.1" - testImplementation("com.pingidentity.sdks:device-profile:2.0.1") + testImplementation("com.pingidentity.sdks:device-profile:2.1.0") } diff --git a/packages/external-idp/RNPingExternalIdp.podspec b/packages/external-idp/RNPingExternalIdp.podspec index 270186276..e0a9f9a25 100644 --- a/packages/external-idp/RNPingExternalIdp.podspec +++ b/packages/external-idp/RNPingExternalIdp.podspec @@ -37,11 +37,11 @@ Pod::Spec.new do |s| # Native Ping SDK dependency s.dependency "RNPingCore" - s.dependency "PingExternalIdP", '2.0.0' + s.dependency "PingExternalIdP", '2.1.0' s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingExternalIdP", '2.0.0' + test_spec.dependency "PingExternalIdP", '2.1.0' test_spec.dependency "RNPingCore" end diff --git a/packages/external-idp/android/build.gradle b/packages/external-idp/android/build.gradle index f5aca5e8f..2d5ad690e 100644 --- a/packages/external-idp/android/build.gradle +++ b/packages/external-idp/android/build.gradle @@ -70,8 +70,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -95,10 +99,10 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation("com.pingidentity.sdks:android:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") - implementation("com.pingidentity.sdks:external-idp:2.0.1") - implementation("com.pingidentity.sdks:journey-plugin:2.0.1") + implementation("com.pingidentity.sdks:android:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") + implementation("com.pingidentity.sdks:external-idp:2.1.0") + implementation("com.pingidentity.sdks:journey-plugin:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation(project(":ping-identity_rn-core")) diff --git a/packages/fido/RNPingFido.podspec b/packages/fido/RNPingFido.podspec index 4779841c8..b959ea766 100644 --- a/packages/fido/RNPingFido.podspec +++ b/packages/fido/RNPingFido.podspec @@ -41,12 +41,12 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingFido", '2.0.0' + test_spec.dependency "PingFido", '2.1.0' test_spec.dependency "RNPingCore" end # Native Ping SDK dependency - s.dependency "PingFido", '2.0.0' + s.dependency "PingFido", '2.1.0' s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/fido/android/build.gradle b/packages/fido/android/build.gradle index be30b457f..d9c21954e 100644 --- a/packages/fido/android/build.gradle +++ b/packages/fido/android/build.gradle @@ -67,8 +67,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -84,10 +88,10 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:journey:2.0.1") - implementation("com.pingidentity.sdks:fido:2.0.1") - implementation("com.pingidentity.sdks:android:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") + implementation("com.pingidentity.sdks:journey:2.1.0") + implementation("com.pingidentity.sdks:fido:2.1.0") + implementation("com.pingidentity.sdks:android:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation(project(":ping-identity_rn-core")) testImplementation "junit:junit:4.13.2" diff --git a/packages/journey/RNPingJourney.podspec b/packages/journey/RNPingJourney.podspec index 076c3f8ed..e7a6ec328 100644 --- a/packages/journey/RNPingJourney.podspec +++ b/packages/journey/RNPingJourney.podspec @@ -38,22 +38,22 @@ Pod::Spec.new do |s| s.swift_version = ['5.0', '5.1', '6.0'] # Native Ping SDK dependency - s.dependency "PingLogger", '2.0.0' - s.dependency "PingJourney", '2.0.0' - s.dependency "PingJourneyPlugin", '2.0.0' - s.dependency "PingFido", '2.0.0' - s.dependency "PingDavinciPlugin", '2.0.0' - s.dependency "PingOidc", '2.0.0' - s.dependency "PingOrchestrate", '2.0.0' - s.dependency "PingStorage", '2.0.0' + s.dependency "PingLogger", '2.1.0' + s.dependency "PingJourney", '2.1.0' + s.dependency "PingJourneyPlugin", '2.1.0' + s.dependency "PingFido", '2.1.0' + s.dependency "PingDavinciPlugin", '2.1.0' + s.dependency "PingOidc", '2.1.0' + s.dependency "PingOrchestrate", '2.1.0' + s.dependency "PingStorage", '2.1.0' s.dependency "RNPingCore" s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingJourney", '2.0.0' - test_spec.dependency "PingJourneyPlugin", '2.0.0' - test_spec.dependency "PingFido", '2.0.0' - test_spec.dependency "PingDavinciPlugin", '2.0.0' + test_spec.dependency "PingJourney", '2.1.0' + test_spec.dependency "PingJourneyPlugin", '2.1.0' + test_spec.dependency "PingFido", '2.1.0' + test_spec.dependency "PingDavinciPlugin", '2.1.0' test_spec.dependency "RNPingCore" end diff --git a/packages/journey/android/build.gradle b/packages/journey/android/build.gradle index a5723e1a2..61645eb8d 100644 --- a/packages/journey/android/build.gradle +++ b/packages/journey/android/build.gradle @@ -63,8 +63,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -88,8 +92,8 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "com.pingidentity.sdks:journey:2.0.1" - implementation "com.pingidentity.sdks:android:2.0.1" + implementation "com.pingidentity.sdks:journey:2.1.0" + implementation "com.pingidentity.sdks:android:2.1.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation(project(":ping-identity_rn-core")) diff --git a/packages/journey/ios/Factory/JourneyClientFactory.swift b/packages/journey/ios/Factory/JourneyClientFactory.swift index 91bc6a6ef..497f6900e 100644 --- a/packages/journey/ios/Factory/JourneyClientFactory.swift +++ b/packages/journey/ios/Factory/JourneyClientFactory.swift @@ -87,10 +87,12 @@ final class JourneyClientFactory { if !oidcConfig.additionalParameters.isEmpty { module.additionalParameters = oidcConfig.additionalParameters } + // TODO-PARITY(SDKS-5245): PingOidc 2.1.0 made `openId` private(set); only + // `openIdOverride` (patches fields after discovery completes) is public now. + // Configs that previously relied on `openId` to skip discovery entirely + // (no `discoveryEndpoint`) can no longer do so. if let openId = oidcConfig.openId { - if let openIdConfiguration = Self.buildOpenIdConfiguration(openId) { - module.openId = openIdConfiguration - } + module.openIdOverride = Self.openIdOverride(for: openId) } if let oidcStorage { module.storage = oidcStorage @@ -215,25 +217,27 @@ final class JourneyClientFactory { ) } - /// Builds OpenID configuration for `OidcClientConfig`. + /// Builds an `openIdOverride` closure that patches discovered endpoints from the shared payload. /// /// - Parameter openId: Shared OpenID configuration payload. - /// - Returns: Native OpenID configuration when encoding succeeds. - private static func buildOpenIdConfiguration(_ openId: OidcOpenIdConfig) -> OpenIdConfiguration? { - var payload: [String: Any] = [ - "authorization_endpoint": openId.authorizationEndpoint, - "token_endpoint": openId.tokenEndpoint, - "userinfo_endpoint": openId.userinfoEndpoint, - "end_session_endpoint": openId.endSessionEndpoint ?? "", - "revocation_endpoint": openId.revocationEndpoint ?? "" - ] - if let pingEnd = openId.pingEndIdpSessionEndpoint { - payload["ping_end_idp_session_endpoint"] = pingEnd - } - guard let data = try? JSONSerialization.data(withJSONObject: payload, options: []) else { - return nil + /// - Returns: Closure applied to the `OpenIdConfiguration` produced by discovery. + private static func openIdOverride( + for openId: OidcOpenIdConfig + ) -> (inout OpenIdConfiguration) -> Void { + return { config in + config.authorizationEndpoint = openId.authorizationEndpoint + config.tokenEndpoint = openId.tokenEndpoint + config.userinfoEndpoint = openId.userinfoEndpoint + if let endSessionEndpoint = openId.endSessionEndpoint { + config.endSessionEndpoint = endSessionEndpoint + } + if let revocationEndpoint = openId.revocationEndpoint { + config.revocationEndpoint = revocationEndpoint + } + if let pingEnd = openId.pingEndIdpSessionEndpoint { + config.pingEndsessionEndpoint = pingEnd + } } - return try? JSONDecoder().decode(OpenIdConfiguration.self, from: data) } /// Builds an OIDC storage delegate from a registered storage id. diff --git a/packages/logger/RNPingLogger.podspec b/packages/logger/RNPingLogger.podspec index 23fa540a7..e4e590f96 100644 --- a/packages/logger/RNPingLogger.podspec +++ b/packages/logger/RNPingLogger.podspec @@ -41,12 +41,12 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingLogger", '2.0.0' + test_spec.dependency "PingLogger", '2.1.0' test_spec.dependency "RNPingCore" end # Native Ping SDK dependency - s.dependency "PingLogger", '2.0.0' + s.dependency "PingLogger", '2.1.0' s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/logger/android/build.gradle b/packages/logger/android/build.gradle index 705108945..16e269594 100644 --- a/packages/logger/android/build.gradle +++ b/packages/logger/android/build.gradle @@ -68,8 +68,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -93,7 +97,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "com.pingidentity.sdks:logger:2.0.1" + implementation "com.pingidentity.sdks:logger:2.1.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation(project(":ping-identity_rn-core")) diff --git a/packages/oath/RNPingOath.podspec b/packages/oath/RNPingOath.podspec index abde2c7a6..f8716e6c4 100644 --- a/packages/oath/RNPingOath.podspec +++ b/packages/oath/RNPingOath.podspec @@ -35,12 +35,12 @@ Pod::Spec.new do |s| s.swift_version = ['5.0', '5.1', '6.0'] # Native Ping SDK dependency - s.dependency "PingOath", '2.0.0' + s.dependency "PingOath", '2.1.0' s.dependency "RNPingCore" s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingOath", '2.0.0' + test_spec.dependency "PingOath", '2.1.0' test_spec.dependency "RNPingCore" end diff --git a/packages/oath/android/build.gradle b/packages/oath/android/build.gradle index 26d8f9e6e..8ace01f2d 100644 --- a/packages/oath/android/build.gradle +++ b/packages/oath/android/build.gradle @@ -70,8 +70,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -87,8 +91,8 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:oath:2.0.1") - implementation("com.pingidentity.sdks:android:2.0.1") + implementation("com.pingidentity.sdks:oath:2.1.0") + implementation("com.pingidentity.sdks:android:2.1.0") implementation(project(":ping-identity_rn-core")) testImplementation "junit:junit:4.13.2" diff --git a/packages/oidc/RNPingOidc.podspec b/packages/oidc/RNPingOidc.podspec index 460a6396f..2ed1fd859 100644 --- a/packages/oidc/RNPingOidc.podspec +++ b/packages/oidc/RNPingOidc.podspec @@ -40,16 +40,16 @@ Pod::Spec.new do |s| s.swift_version = ['5.0', '5.1', '6.0'] # Native Ping SDK dependency - s.dependency 'PingBrowser', '2.0.0' - s.dependency 'PingLogger', '2.0.0' - s.dependency 'PingOidc', '2.0.0' - s.dependency 'PingOrchestrate', '2.0.0' - s.dependency 'PingStorage', '2.0.0' + s.dependency 'PingBrowser', '2.1.0' + s.dependency 'PingLogger', '2.1.0' + s.dependency 'PingOidc', '2.1.0' + s.dependency 'PingOrchestrate', '2.1.0' + s.dependency 'PingStorage', '2.1.0' s.dependency 'RNPingCore' s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingOidc", '2.0.0' + test_spec.dependency "PingOidc", '2.1.0' test_spec.dependency "RNPingCore" end diff --git a/packages/oidc/android/build.gradle b/packages/oidc/android/build.gradle index 6fb277846..f76270e65 100644 --- a/packages/oidc/android/build.gradle +++ b/packages/oidc/android/build.gradle @@ -70,8 +70,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -95,11 +99,11 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation("com.pingidentity.sdks:android:2.0.1") - implementation("com.pingidentity.sdks:oidc:2.0.1") - implementation("com.pingidentity.sdks:browser:2.0.1") - implementation("com.pingidentity.sdks:orchestrate:2.0.1") - implementation("com.pingidentity.sdks:storage:2.0.1") + implementation("com.pingidentity.sdks:android:2.1.0") + implementation("com.pingidentity.sdks:oidc:2.1.0") + implementation("com.pingidentity.sdks:browser:2.1.0") + implementation("com.pingidentity.sdks:orchestrate:2.1.0") + implementation("com.pingidentity.sdks:storage:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" implementation(project(":ping-identity_rn-core")) diff --git a/packages/oidc/ios/OidcClientFactory.swift b/packages/oidc/ios/OidcClientFactory.swift index 09d2349df..1bfec3d8c 100644 --- a/packages/oidc/ios/OidcClientFactory.swift +++ b/packages/oidc/ios/OidcClientFactory.swift @@ -51,8 +51,13 @@ enum OidcClientFactory { config.logger = logger } - if let openId = payload.openId, let openIdConfig = buildOpenIdConfiguration(openId) { - config.openId = openIdConfig + // TODO-PARITY(SDKS-5245): PingOidc 2.1.0 made `openId` private(set); only + // `openIdOverride` (patches fields after discovery completes) is public now. + // Configs that previously relied on `openId` to skip discovery entirely + // (no `discoveryEndpoint`) can no longer do so — `openIdOverride` never + // fires without a prior successful `discover()` call. + if let openId = payload.openId { + config.openIdOverride = openIdOverride(for: openId) } if let storage = buildStorageDelegate(payload.storageId, queueKey: queueKey) { @@ -100,8 +105,9 @@ enum OidcClientFactory { if !payload.additionalParameters.isEmpty { oidc.additionalParameters = payload.additionalParameters } - if let openId = payload.openId, let openIdConfig = buildOpenIdConfiguration(openId) { - oidc.openId = openIdConfig + // TODO-PARITY(SDKS-5245): see buildOidcClient — same `openId` API narrowing applies here. + if let openId = payload.openId { + oidc.openIdOverride = openIdOverride(for: openId) } if let storage = buildStorageDelegate(payload.storageId, queueKey: queueKey) { oidc.storage = storage @@ -185,25 +191,27 @@ enum OidcClientFactory { return .NO_CACHE } - /// Build OpenID configuration using the Codable initializer. + /// Build an `openIdOverride` closure that patches discovered endpoints from the JS payload. /// /// - Parameter openId: Parsed OpenID override payload. - /// - Returns: OpenID configuration or nil when serialization fails. - private static func buildOpenIdConfiguration(_ openId: OpenIdPayload) -> OpenIdConfiguration? { - var payload: [String: Any] = [ - "authorization_endpoint": openId.authorizationEndpoint, - "token_endpoint": openId.tokenEndpoint, - "userinfo_endpoint": openId.userinfoEndpoint, - "end_session_endpoint": openId.endSessionEndpoint ?? "", - "revocation_endpoint": openId.revocationEndpoint ?? "" - ] - if let pingEnd = openId.pingEndIdpSessionEndpoint { - payload["ping_end_idp_session_endpoint"] = pingEnd - } - guard let data = try? JSONSerialization.data(withJSONObject: payload, options: []) else { - return nil + /// - Returns: Closure applied to the `OpenIdConfiguration` produced by discovery. + private static func openIdOverride( + for openId: OpenIdPayload + ) -> (inout OpenIdConfiguration) -> Void { + return { config in + config.authorizationEndpoint = openId.authorizationEndpoint + config.tokenEndpoint = openId.tokenEndpoint + config.userinfoEndpoint = openId.userinfoEndpoint + if let endSessionEndpoint = openId.endSessionEndpoint { + config.endSessionEndpoint = endSessionEndpoint + } + if let revocationEndpoint = openId.revocationEndpoint { + config.revocationEndpoint = revocationEndpoint + } + if let pingEnd = openId.pingEndIdpSessionEndpoint { + config.pingEndsessionEndpoint = pingEnd + } } - return try? JSONDecoder().decode(OpenIdConfiguration.self, from: data) } /// Map JS string values to PingBrowser BrowserType. diff --git a/packages/oidc/ios/Tests/OidcClientFactoryTests.swift b/packages/oidc/ios/Tests/OidcClientFactoryTests.swift index d2b76491e..c7ec2375e 100644 --- a/packages/oidc/ios/Tests/OidcClientFactoryTests.swift +++ b/packages/oidc/ios/Tests/OidcClientFactoryTests.swift @@ -45,9 +45,24 @@ final class OidcClientFactoryTests: XCTestCase { let config = OidcClientFactory.buildOidcClient(payload, logger: nil) - XCTAssertEqual(config.openId?.endSessionEndpoint, "") - XCTAssertEqual(config.openId?.revocationEndpoint, "") - XCTAssertNil(config.openId?.pingEndsessionEndpoint) + // `openIdOverride` only runs after a successful `discover()` (see OidcClientConfig.oidcInitialize), + // so it is exercised directly here against a stand-in discovered configuration rather than + // through `config.openId`, which stays nil until discovery completes. + var discovered = OpenIdConfiguration( + authorizationEndpoint: "", + tokenEndpoint: "", + userinfoEndpoint: "", + endSessionEndpoint: "", + revocationEndpoint: "" + ) + config.openIdOverride?(&discovered) + + XCTAssertEqual(discovered.authorizationEndpoint, "https://example.com/oauth2/authorize") + XCTAssertEqual(discovered.tokenEndpoint, "https://example.com/oauth2/token") + XCTAssertEqual(discovered.userinfoEndpoint, "https://example.com/oauth2/userinfo") + XCTAssertEqual(discovered.endSessionEndpoint, "") + XCTAssertEqual(discovered.revocationEndpoint, "") + XCTAssertNil(discovered.pingEndsessionEndpoint) } func testBuildWebClientMapsBrowserOptions() { diff --git a/packages/push/RNPingPush.podspec b/packages/push/RNPingPush.podspec index 0e94c22d8..dfb37bef2 100644 --- a/packages/push/RNPingPush.podspec +++ b/packages/push/RNPingPush.podspec @@ -36,14 +36,14 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingPush", "2.0.0" + test_spec.dependency "PingPush", "2.1.0" test_spec.dependency "RNPingCore" end # Native Ping SDK dependencies - s.dependency "PingPush", "2.0.0" - s.dependency "PingStorage", "2.0.0" - s.dependency "PingLogger", "~> 2.0.0" + s.dependency "PingPush", "2.1.0" + s.dependency "PingStorage", "2.1.0" + s.dependency "PingLogger", "~> 2.1.0" s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/push/android/build.gradle b/packages/push/android/build.gradle index b118ada5d..a6631ff84 100644 --- a/packages/push/android/build.gradle +++ b/packages/push/android/build.gradle @@ -67,8 +67,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -84,10 +88,15 @@ android { dependencies { implementation "com.facebook.react:react-android" - implementation("com.pingidentity.sdks:push:2.0.1") - implementation("com.pingidentity.sdks:commons:2.0.1") - implementation("com.pingidentity.sdks:android:2.0.1") - implementation("com.pingidentity.sdks:logger:2.0.1") + implementation("com.pingidentity.sdks:push:2.1.0") + implementation("com.pingidentity.sdks:commons:2.1.0") + implementation("com.pingidentity.sdks:android:2.1.0") + implementation("com.pingidentity.sdks:logger:2.1.0") + // com.pingidentity.mfa.push.exception.PushNumberChallengeException extends + // com.pingidentity.exception.ApiException, defined here. The push SDK only + // declares this as a runtime dependency, so it must be added explicitly to + // make the class hierarchy visible to the Kotlin compiler. + implementation("com.pingidentity.sdks:utils:2.1.0") // FCM is a peer dependency — host app adds the version via its own BOM implementation("com.google.firebase:firebase-messaging") implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" diff --git a/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorCode.kt b/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorCode.kt index 59f076ee5..2aad27813 100644 --- a/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorCode.kt +++ b/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorCode.kt @@ -32,4 +32,5 @@ internal object PushErrorCode { const val POLICY_VIOLATION = "policy_violation" const val REGISTRATION_FAILED = "registration_failed" const val NETWORK_FAILURE = "network_failure" + const val PUSH_NUMBER_CHALLENGE_ERROR = "push_number_challenge_error" } diff --git a/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorMapper.kt b/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorMapper.kt index e452ea449..b41933316 100644 --- a/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorMapper.kt +++ b/packages/push/android/src/main/java/com/pingidentity/rnpush/PushErrorMapper.kt @@ -18,6 +18,7 @@ import com.pingidentity.mfa.commons.exception.MfaStorageException import com.pingidentity.mfa.push.exception.DeviceTokenMissingException import com.pingidentity.mfa.push.exception.NotificationExpiredException import com.pingidentity.mfa.push.exception.NotificationNotFoundException +import com.pingidentity.mfa.push.exception.PushNumberChallengeException import com.pingidentity.rncore.error.ErrorType import com.pingidentity.rncore.error.GenericError import com.pingidentity.rncore.error.reject @@ -49,6 +50,7 @@ object PushErrorMapper { * - [DeviceTokenMissingException] → `"device_token_not_set"` * - [NotificationNotFoundException] → `"notification_not_found"` * - [NotificationExpiredException] → `"notification_not_found"` (expired is a subset of not-found) + * - [PushNumberChallengeException] → `"push_number_challenge_error"` * - All other [MfaException] subtypes → `"network_failure"` * - All other [Exception] → `"network_failure"` * @@ -79,6 +81,7 @@ object PushErrorMapper { is NotificationNotFoundException -> ErrorType.STATE_ERROR is NotificationExpiredException -> ErrorType.STATE_ERROR is DeviceTokenMissingException -> ErrorType.STATE_ERROR + is PushNumberChallengeException -> ErrorType.ARGUMENT_ERROR else -> ErrorType.NETWORK_ERROR } @@ -96,9 +99,10 @@ object PushErrorMapper { is DuplicateCredentialException -> PushErrorCode.DUPLICATE_CREDENTIAL is CredentialNotFoundException -> PushErrorCode.CREDENTIAL_NOT_FOUND is DeviceTokenMissingException -> PushErrorCode.DEVICE_TOKEN_NOT_SET + is PushNumberChallengeException -> PushErrorCode.PUSH_NUMBER_CHALLENGE_ERROR // All other MfaException subtypes fall through to NETWORK_FAILURE. // - // Android SDK coverage gap: 8 of the 18 PushErrorCode values have no + // Android SDK coverage gap: 8 of the 19 PushErrorCode values have no // corresponding Android exception class in the mfa-commons / mfa-push SDK: // - INVALID_URI (URI validation is client-side) // - MISSING_REQUIRED_PARAMETER diff --git a/packages/push/android/src/test/java/com/pingidentity/rnpush/RNPingPushTest.kt b/packages/push/android/src/test/java/com/pingidentity/rnpush/RNPingPushTest.kt index 0f6fc2c87..574edc53b 100644 --- a/packages/push/android/src/test/java/com/pingidentity/rnpush/RNPingPushTest.kt +++ b/packages/push/android/src/test/java/com/pingidentity/rnpush/RNPingPushTest.kt @@ -21,6 +21,7 @@ import com.pingidentity.mfa.commons.exception.MfaStorageException import com.pingidentity.mfa.push.exception.DeviceTokenMissingException import com.pingidentity.mfa.push.exception.NotificationExpiredException import com.pingidentity.mfa.push.exception.NotificationNotFoundException +import com.pingidentity.mfa.push.exception.PushNumberChallengeException import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Assert.assertFalse @@ -147,6 +148,15 @@ class RNPingPushTest { assertEquals("notification_not_found", PushErrorMapper.resolveErrorCode(error)) } + /** + * PushNumberChallengeException maps to "push_number_challenge_error". + */ + @Test + fun pushNumberChallengeExceptionMapsToPushNumberChallengeError() { + val error = PushNumberChallengeException(400, "number challenge failed") + assertEquals("push_number_challenge_error", PushErrorMapper.resolveErrorCode(error)) + } + /** * Generic MfaException (not a specific subtype) maps to "network_failure". */ @@ -212,6 +222,15 @@ class RNPingPushTest { assertEquals(com.pingidentity.rncore.error.ErrorType.STATE_ERROR, PushErrorMapper.resolveErrorType(error)) } + /** + * PushNumberChallengeException maps to ARGUMENT_ERROR type. + */ + @Test + fun pushNumberChallengeExceptionMapsToArgumentErrorType() { + val error = PushNumberChallengeException(400, "number challenge failed") + assertEquals(com.pingidentity.rncore.error.ErrorType.ARGUMENT_ERROR, PushErrorMapper.resolveErrorType(error)) + } + /** * Generic MfaException maps to NETWORK_ERROR type. */ diff --git a/packages/push/ios/PushErrorCode.swift b/packages/push/ios/PushErrorCode.swift index c14e3654a..91c7921ec 100644 --- a/packages/push/ios/PushErrorCode.swift +++ b/packages/push/ios/PushErrorCode.swift @@ -29,4 +29,5 @@ enum PushErrorCode: String { case policyViolation = "policy_violation" case registrationFailed = "registration_failed" case networkFailure = "network_failure" + case pushNumberChallengeError = "push_number_challenge_error" } diff --git a/packages/push/ios/PushErrorMapper.swift b/packages/push/ios/PushErrorMapper.swift index 64c4a5f95..d378a55ff 100644 --- a/packages/push/ios/PushErrorMapper.swift +++ b/packages/push/ios/PushErrorMapper.swift @@ -34,6 +34,7 @@ func pushErrorCode(_ error: Error) -> String { case .policyViolation: return PushErrorCode.policyViolation.rawValue case .registrationFailed: return PushErrorCode.registrationFailed.rawValue case .networkFailure: return PushErrorCode.networkFailure.rawValue + case .pushNumberChallengeError: return PushErrorCode.pushNumberChallengeError.rawValue } } @@ -62,6 +63,7 @@ func pushErrorType(_ error: Error) -> ErrorType { case .messageParsingFailed: return .parseError case .registrationFailed, .networkFailure: return .networkError + case .pushNumberChallengeError: return .argumentError } } diff --git a/packages/push/src/types/error.types.ts b/packages/push/src/types/error.types.ts index 5883fa32e..620e135f5 100644 --- a/packages/push/src/types/error.types.ts +++ b/packages/push/src/types/error.types.ts @@ -36,6 +36,7 @@ import { PingError } from '@ping-identity/rn-types'; * | `'policy_violation'` | The operation violates a credential or account policy. | * | `'registration_failed'` | Device registration with the push service failed. | * | `'network_failure'` | A network error occurred communicating with the push service. | + * | `'push_number_challenge_error'` | The server rejected a Push Number Challenge response. | */ export type PushErrorCode = | 'not_initialized' @@ -56,6 +57,7 @@ export type PushErrorCode = | 'policy_violation' | 'registration_failed' | 'network_failure' + | 'push_number_challenge_error' | (string & {}); /** diff --git a/packages/storage/RNPingStorage.podspec b/packages/storage/RNPingStorage.podspec index 8280ef93a..780f7e6c1 100644 --- a/packages/storage/RNPingStorage.podspec +++ b/packages/storage/RNPingStorage.podspec @@ -41,12 +41,12 @@ Pod::Spec.new do |s| s.test_spec "Tests" do |test_spec| test_spec.source_files = "ios/Tests/**/*.{swift}" - test_spec.dependency "PingStorage", '2.0.0' + test_spec.dependency "PingStorage", '2.1.0' test_spec.dependency "RNPingCore" end # Native Ping SDK dependency - s.dependency "PingStorage", '2.0.0' + s.dependency "PingStorage", '2.1.0' s.dependency "RNPingCore" install_modules_dependencies(s) diff --git a/packages/storage/android/build.gradle b/packages/storage/android/build.gradle index 8fd676df8..f6ea95c75 100644 --- a/packages/storage/android/build.gradle +++ b/packages/storage/android/build.gradle @@ -61,8 +61,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } + + kotlinOptions { + jvmTarget = "21" } sourceSets { @@ -87,7 +91,7 @@ dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.datastore:datastore-core:1.1.7' - implementation("com.pingidentity.sdks:storage:2.0.1") + implementation("com.pingidentity.sdks:storage:2.1.0") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" implementation(project(":ping-identity_rn-core"))