diff --git a/packages/sdk/java/build.gradle b/packages/sdk/java/build.gradle index 59170e6a..41be13eb 100644 --- a/packages/sdk/java/build.gradle +++ b/packages/sdk/java/build.gradle @@ -23,13 +23,13 @@ java { dependencies { // HTTP client - implementation 'com.squareup.okhttp3:okhttp:4.12.0' + implementation 'com.squareup.okhttp3:okhttp:5.4.0' // JSON - implementation 'com.google.code.gson:gson:2.11.0' + implementation 'com.google.code.gson:gson:2.14.0' // Testing - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + testImplementation 'org.junit.jupiter:junit-jupiter:6.1.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/packages/sdk/java/packages/admin/build.gradle b/packages/sdk/java/packages/admin/build.gradle index 254f6c12..0970e073 100644 --- a/packages/sdk/java/packages/admin/build.gradle +++ b/packages/sdk/java/packages/admin/build.gradle @@ -14,9 +14,9 @@ def projectPath = { String monorepoPath, String standalonePath -> } dependencies { api project(projectPath(':packages:core', ':core')) - implementation 'com.squareup.okhttp3:okhttp:4.12.0' - implementation 'com.google.code.gson:gson:2.11.0' - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + implementation 'com.squareup.okhttp3:okhttp:5.4.0' + implementation 'com.google.code.gson:gson:2.14.0' + testImplementation 'org.junit.jupiter:junit-jupiter:6.1.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.test { diff --git a/packages/sdk/java/packages/android/build.gradle b/packages/sdk/java/packages/android/build.gradle index 47319b16..8f9348df 100644 --- a/packages/sdk/java/packages/android/build.gradle +++ b/packages/sdk/java/packages/android/build.gradle @@ -15,19 +15,19 @@ def projectPath = { String monorepoPath, String standalonePath -> dependencies { api project(projectPath(':packages:core', ':core')) api project(projectPath(':packages:admin', ':admin')) - implementation 'com.squareup.okhttp3:okhttp:4.12.0' - implementation 'com.google.code.gson:gson:2.11.0' + implementation 'com.squareup.okhttp3:okhttp:5.4.0' + implementation 'com.google.code.gson:gson:2.14.0' // Modern Android API stubs for host-side SDK compilation. The obsolete // Android 4.1 Maven stub omits WebView failure/process callbacks and can // silently let release code drift from the supported Android runtime. compileOnly 'org.robolectric:android-all:14-robolectric-10818077' - compileOnly 'org.json:json:20231013' - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + compileOnly 'org.json:json:20260522' + testImplementation 'org.junit.jupiter:junit-jupiter:6.1.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' // Android stubs needed at test runtime — TurnstileProvider imports android.* at class level // (compileOnly is not available during `gradle test` JVM execution → NoClassDefFoundError) testImplementation 'org.robolectric:android-all:14-robolectric-10818077' - testImplementation 'org.json:json:20231013' + testImplementation 'org.json:json:20260522' } tasks.test { diff --git a/packages/sdk/java/packages/core/build.gradle b/packages/sdk/java/packages/core/build.gradle index 1d2f8985..dd396aef 100644 --- a/packages/sdk/java/packages/core/build.gradle +++ b/packages/sdk/java/packages/core/build.gradle @@ -10,10 +10,10 @@ tasks.jar { } repositories { mavenCentral() } dependencies { - implementation 'com.squareup.okhttp3:okhttp:4.12.0' - implementation 'com.google.code.gson:gson:2.11.0' - implementation 'org.json:json:20231013' - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + implementation 'com.squareup.okhttp3:okhttp:5.4.0' + implementation 'com.google.code.gson:gson:2.14.0' + implementation 'org.json:json:20260522' + testImplementation 'org.junit.jupiter:junit-jupiter:6.1.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.test { diff --git a/packages/sdk/kotlin/admin/build.gradle.kts b/packages/sdk/kotlin/admin/build.gradle.kts index 9ecfe316..6c03bc88 100644 --- a/packages/sdk/kotlin/admin/build.gradle.kts +++ b/packages/sdk/kotlin/admin/build.gradle.kts @@ -21,13 +21,13 @@ java { dependencies { api(project(":core")) - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0") testImplementation(kotlin("test")) testImplementation(kotlin("reflect")) - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") - testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.11.0") + testImplementation("org.junit.jupiter:junit-jupiter:6.1.1") } tasks.test { diff --git a/packages/sdk/kotlin/build.gradle.kts b/packages/sdk/kotlin/build.gradle.kts index 44fe448e..6e410f95 100644 --- a/packages/sdk/kotlin/build.gradle.kts +++ b/packages/sdk/kotlin/build.gradle.kts @@ -7,10 +7,10 @@ // :admin — JVM-only admin SDK (depends on :core JVM artifact) plugins { - kotlin("multiplatform") version "2.1.10" apply false - kotlin("jvm") version "2.1.10" apply false - kotlin("plugin.serialization") version "2.1.10" apply false - id("com.android.library") version "8.2.0" apply false + kotlin("multiplatform") version "2.4.0" apply false + kotlin("jvm") version "2.4.0" apply false + kotlin("plugin.serialization") version "2.4.0" apply false + id("com.android.library") version "9.3.0" apply false } val edgebaseReleaseVersion = "0.4.9" diff --git a/packages/sdk/kotlin/client/build.gradle.kts b/packages/sdk/kotlin/client/build.gradle.kts index a89d2c61..ce05e603 100644 --- a/packages/sdk/kotlin/client/build.gradle.kts +++ b/packages/sdk/kotlin/client/build.gradle.kts @@ -87,26 +87,26 @@ kotlin { val commonMain by getting { dependencies { api(project(":core")) - implementation("io.ktor:ktor-client-core:3.1.0") - implementation("io.ktor:ktor-client-websockets:3.1.0") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") + implementation("io.ktor:ktor-client-core:3.5.1") + implementation("io.ktor:ktor-client-websockets:3.5.1") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0") } } val androidMain by getting { dependencies { - implementation("io.ktor:ktor-client-okhttp:3.1.0") - implementation("com.google.firebase:firebase-messaging:24.1.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0") + implementation("io.ktor:ktor-client-okhttp:3.5.1") + implementation("com.google.firebase:firebase-messaging:25.1.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.11.0") implementation("androidx.fragment:fragment:1.6.2") - implementation("androidx.core:core:1.12.0") + implementation("androidx.core:core:1.19.0") } } val appleMain by getting { dependencies { - implementation("io.ktor:ktor-client-darwin:3.1.0") + implementation("io.ktor:ktor-client-darwin:3.5.1") } } @@ -114,36 +114,36 @@ kotlin { val jsMain by getting { dependencies { - implementation("io.ktor:ktor-client-js:3.1.0") + implementation("io.ktor:ktor-client-js:3.5.1") } } val jvmMain by getting { dependencies { - implementation("io.ktor:ktor-client-cio:3.1.0") + implementation("io.ktor:ktor-client-cio:3.5.1") } } val commonTest by getting { dependencies { implementation(kotlin("test")) - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.11.0") } } val jvmTest by getting { dependencies { - implementation("org.junit.jupiter:junit-jupiter-api:5.10.2") - implementation("org.junit.jupiter:junit-jupiter:5.10.2") - implementation("io.ktor:ktor-client-mock:3.1.0") - runtimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") + implementation("org.junit.jupiter:junit-jupiter-api:6.1.1") + implementation("org.junit.jupiter:junit-jupiter:6.1.1") + implementation("io.ktor:ktor-client-mock:3.5.1") + runtimeOnly("org.junit.jupiter:junit-jupiter-engine:6.1.1") } } val androidUnitTest by getting { dependencies { implementation("junit:junit:4.13.2") - implementation("org.robolectric:robolectric:4.13") + implementation("org.robolectric:robolectric:4.16.1") // Robolectric 4.x pins Conscrypt 2.5.2, whose native bundle // omits Linux/macOS arm64. 2.6.0 supplies both arm64 binaries, // so Activity lifecycle regression tests run on Apple Silicon diff --git a/packages/sdk/kotlin/core/build.gradle.kts b/packages/sdk/kotlin/core/build.gradle.kts index a290f295..a7469d4e 100644 --- a/packages/sdk/kotlin/core/build.gradle.kts +++ b/packages/sdk/kotlin/core/build.gradle.kts @@ -71,51 +71,51 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - api("io.ktor:ktor-client-core:3.1.0") - implementation("io.ktor:ktor-client-content-negotiation:3.1.0") - implementation("io.ktor:ktor-serialization-kotlinx-json:3.1.0") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") + api("io.ktor:ktor-client-core:3.5.1") + implementation("io.ktor:ktor-client-content-negotiation:3.5.1") + implementation("io.ktor:ktor-serialization-kotlinx-json:3.5.1") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0") } } val androidMain by getting { dependencies { - implementation("io.ktor:ktor-client-okhttp:3.1.0") + implementation("io.ktor:ktor-client-okhttp:3.5.1") } } val appleMain by getting { dependencies { - implementation("io.ktor:ktor-client-darwin:3.1.0") + implementation("io.ktor:ktor-client-darwin:3.5.1") } } val jsMain by getting { dependencies { - implementation("io.ktor:ktor-client-js:3.1.0") + implementation("io.ktor:ktor-client-js:3.5.1") } } val jvmMain by getting { dependencies { - implementation("io.ktor:ktor-client-cio:3.1.0") + implementation("io.ktor:ktor-client-cio:3.5.1") } } val commonTest by getting { dependencies { implementation(kotlin("test")) - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.11.0") } } val jvmTest by getting { dependencies { - implementation("org.junit.jupiter:junit-jupiter-api:5.10.1") - implementation("org.junit.jupiter:junit-jupiter-params:5.10.1") - implementation("io.ktor:ktor-client-mock:3.1.0") - runtimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.1") + implementation("org.junit.jupiter:junit-jupiter-api:6.1.1") + implementation("org.junit.jupiter:junit-jupiter-params:6.1.1") + implementation("io.ktor:ktor-client-mock:3.5.1") + runtimeOnly("org.junit.jupiter:junit-jupiter-engine:6.1.1") } } @@ -124,7 +124,7 @@ kotlin { implementation("junit:junit:4.13.2") // Provide real org.json implementation to replace Android stubs in unit tests. // Android SDK's org.json.JSONObject throws RuntimeException when not mocked. - implementation("org.json:json:20240303") + implementation("org.json:json:20260522") } } } diff --git a/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.jar b/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.jar index f8e1ee31..b1b8ef56 100644 Binary files a/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.jar and b/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.jar differ diff --git a/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.properties b/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.properties index b82aa23a..a351597e 100644 --- a/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.properties +++ b/packages/sdk/kotlin/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/packages/sdk/kotlin/gradlew b/packages/sdk/kotlin/gradlew index 9a7c680b..249efbb0 100755 --- a/packages/sdk/kotlin/gradlew +++ b/packages/sdk/kotlin/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -141,57 +141,6 @@ location of your Java installation." fi fi -# Gradle 8.7's Kotlin DSL bootstrap crashes on JDK 25+, so prefer an -# installed JDK 17 for this workspace when one is available. -resolve_java_home_for_edgebase () { - for candidate in \ - "${EDGEBASE_JAVA17_HOME:-}" \ - /opt/homebrew/opt/openjdk@17 \ - /usr/local/opt/openjdk@17 \ - /usr/lib/jvm/java-17-openjdk \ - /usr/lib/jvm/java-17-openjdk-amd64 \ - /usr/lib/jvm/temurin-17-jdk - do - if [ -n "$candidate" ] && [ -x "$candidate/bin/java" ] - then - printf '%s\n' "$candidate" - return 0 - fi - done - - if "$darwin" && command -v brew >/dev/null 2>&1 - then - candidate=$(brew --prefix openjdk@17 2>/dev/null) - if [ -n "$candidate" ] && [ -x "$candidate/bin/java" ] - then - printf '%s\n' "$candidate" - return 0 - fi - fi - - return 1 -} - -current_java_version=$("$JAVACMD" -version 2>&1 | sed -n '1s/.*version "\([^"]*\)".*/\1/p') -current_java_major=${current_java_version%%.*} -if [ "$current_java_major" = "1" ] -then - current_java_major=${current_java_version#1.} - current_java_major=${current_java_major%%.*} -fi - -if [ -n "$current_java_major" ] && [ "$current_java_major" -ge 25 ] 2>/dev/null -then - fallback_java_home=$(resolve_java_home_for_edgebase) - if [ -n "$fallback_java_home" ] - then - JAVA_HOME=$fallback_java_home - export JAVA_HOME - JAVACMD=$JAVA_HOME/bin/java - warn "Using Java 17 at $JAVA_HOME because this Kotlin Gradle build is not compatible with Java $current_java_version." - fi -fi - # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( diff --git a/packages/sdk/kotlin/gradlew.bat b/packages/sdk/kotlin/gradlew.bat index c4bdd3ab..8508ef68 100644 --- a/packages/sdk/kotlin/gradlew.bat +++ b/packages/sdk/kotlin/gradlew.bat @@ -1,93 +1,82 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem gradlew startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:execute +@rem Setup the command line + + + +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel + +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/packages/sdk/scala/build.gradle.kts b/packages/sdk/scala/build.gradle.kts index ec154248..32e81677 100644 --- a/packages/sdk/scala/build.gradle.kts +++ b/packages/sdk/scala/build.gradle.kts @@ -30,12 +30,12 @@ subprojects { } dependencies { - "implementation"("org.scala-lang:scala-library:2.13.16") - "implementation"("com.squareup.okhttp3:okhttp:4.12.0") - "implementation"("com.google.code.gson:gson:2.11.0") - "implementation"("org.json:json:20231013") - "testImplementation"("org.scalatest:scalatest_2.13:3.2.19") - "testImplementation"("org.junit.jupiter:junit-jupiter:5.11.0") + "implementation"("org.scala-lang:scala-library:3.8.4") + "implementation"("com.squareup.okhttp3:okhttp:5.4.0") + "implementation"("com.google.code.gson:gson:2.14.0") + "implementation"("org.json:json:20260522") + "testImplementation"("org.scalatest:scalatest_2.13:3.2.20") + "testImplementation"("org.junit.jupiter:junit-jupiter:6.1.1") "testRuntimeOnly"("org.junit.platform:junit-platform-launcher") }