From 3bef07eeab23bedc90f01c07f08137b186b5336e Mon Sep 17 00:00:00 2001 From: Mitchell Syer Date: Fri, 21 Oct 2022 20:03:07 -0400 Subject: [PATCH] Update dependencies (#422) * Update dependencies and lint files * Revert lint --- AndroidCompat/build.gradle.kts | 8 ++--- .../src/main/java/android/text/Html.java | 4 +-- .../io/sharedprefs/JavaSharedPreferences.kt | 6 ++-- build.gradle.kts | 33 +++++++++---------- buildSrc/src/main/kotlin/Constants.kt | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- server/build.gradle.kts | 25 +++++++------- .../kanade/tachiyomi/util/storage/EpubFile.kt | 2 +- .../manga/impl/util/lang/RxCoroutineBridge.kt | 2 ++ 9 files changed, 42 insertions(+), 42 deletions(-) diff --git a/AndroidCompat/build.gradle.kts b/AndroidCompat/build.gradle.kts index b14a6d77..50a3a6a5 100644 --- a/AndroidCompat/build.gradle.kts +++ b/AndroidCompat/build.gradle.kts @@ -9,20 +9,20 @@ dependencies { implementation(project(":AndroidCompat:Config")) // APK sig verifier - compileOnly("com.android.tools.build:apksig:7.1.0-beta05") + compileOnly("com.android.tools.build:apksig:7.2.1") // AndroidX annotations - compileOnly("androidx.annotation:annotation:1.3.0") + compileOnly("androidx.annotation:annotation:1.5.0") // substitute for duktape-android implementation("org.mozilla:rhino-runtime:1.7.14") // slimmer version of 'org.mozilla:rhino' implementation("org.mozilla:rhino-engine:1.7.14") // provides the same interface as 'javax.script' a.k.a Nashorn // Kotlin wrapper around Java Preferences, makes certain things easier - val multiplatformSettingsVersion = "0.8.1" + val multiplatformSettingsVersion = "1.0.0-RC" implementation("com.russhwolf:multiplatform-settings-jvm:$multiplatformSettingsVersion") implementation("com.russhwolf:multiplatform-settings-serialization-jvm:$multiplatformSettingsVersion") // Android version of SimpleDateFormat - implementation("com.ibm.icu:icu4j:70.1") + implementation("com.ibm.icu:icu4j:72.1") } diff --git a/AndroidCompat/src/main/java/android/text/Html.java b/AndroidCompat/src/main/java/android/text/Html.java index 052afed0..443c8b27 100644 --- a/AndroidCompat/src/main/java/android/text/Html.java +++ b/AndroidCompat/src/main/java/android/text/Html.java @@ -4,7 +4,7 @@ package android.text; import android.graphics.drawable.Drawable; import org.jetbrains.annotations.NotNull; import org.jsoup.Jsoup; -import org.jsoup.safety.Whitelist; +import org.jsoup.safety.Safelist; import org.xml.sax.XMLReader; /** @@ -18,7 +18,7 @@ import org.xml.sax.XMLReader; public class Html { public static Spanned fromHtml(String source) { - return new FakeSpanned(Jsoup.clean(source, Whitelist.none())); + return new FakeSpanned(Jsoup.clean(source, Safelist.none())); } public static Spanned fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) { diff --git a/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt b/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt index 9bdf85d2..266ddc3c 100644 --- a/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt +++ b/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt @@ -10,7 +10,7 @@ package xyz.nulldev.androidcompat.io.sharedprefs import android.content.SharedPreferences import com.russhwolf.settings.ExperimentalSettingsApi import com.russhwolf.settings.ExperimentalSettingsImplementation -import com.russhwolf.settings.JvmPreferencesSettings +import com.russhwolf.settings.PreferencesSettings import com.russhwolf.settings.serialization.decodeValue import com.russhwolf.settings.serialization.decodeValueOrNull import com.russhwolf.settings.serialization.encodeValue @@ -24,7 +24,7 @@ import java.util.prefs.Preferences @OptIn(ExperimentalSettingsImplementation::class, ExperimentalSerializationApi::class, ExperimentalSettingsApi::class) class JavaSharedPreferences(key: String) : SharedPreferences { private val javaPreferences = Preferences.userRoot().node("suwayomi/tachidesk/$key") - private val preferences = JvmPreferencesSettings(javaPreferences) + private val preferences = PreferencesSettings(javaPreferences) private val listeners = mutableMapOf() // TODO: 2021-05-29 Need to find a way to get this working with all pref types @@ -76,7 +76,7 @@ class JavaSharedPreferences(key: String) : SharedPreferences { return Editor(preferences) } - class Editor(private val preferences: JvmPreferencesSettings) : SharedPreferences.Editor { + class Editor(private val preferences: PreferencesSettings) : SharedPreferences.Editor { val itemsToAdd = mutableMapOf() override fun putString(key: String, value: String?): SharedPreferences.Editor { diff --git a/build.gradle.kts b/build.gradle.kts index 6b583e2b..6693ac34 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,8 +5,9 @@ import org.jmailen.gradle.kotlinter.tasks.LintTask plugins { kotlin("jvm") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion - id("org.jmailen.kotlinter") version "3.8.0" - id("com.github.gmazzo.buildconfig") version "3.0.3" apply false + id("org.jmailen.kotlinter") version "3.12.0" + id("com.github.gmazzo.buildconfig") version "3.1.0" apply false + id("de.undercouch.download") version "5.3.0" } allprojects { @@ -43,12 +44,6 @@ configure(projects) { dependsOn(formatKotlin) kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() - freeCompilerArgs = listOf( - "-Xopt-in=kotlin.RequiresOptIn", - "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - "-Xopt-in=kotlinx.coroutines.InternalCoroutinesApi", - "-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi", - ) } } @@ -69,40 +64,42 @@ configure(projects) { testImplementation(kotlin("test-junit5")) // coroutines - val coroutinesVersion = "1.6.0" + val coroutinesVersion = "1.6.4" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$coroutinesVersion") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion") - val kotlinSerializationVersion = "1.3.2" + val kotlinSerializationVersion = "1.4.1" implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinSerializationVersion") implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$kotlinSerializationVersion") // Dependency Injection - implementation("org.kodein.di:kodein-di-conf-jvm:7.10.0") + implementation("org.kodein.di:kodein-di-conf-jvm:7.15.0") // Logging + // Stuck on old versions since + // 1. Logback 1.3.0+ requires Java 9 + // 2. Slf4j 2.0.0+ doesn't register older versions of Logback + // 3. Kotlin-logging 3.0.2+ requires Java 11, but this is probably a bug implementation("org.slf4j:slf4j-api:1.7.32") implementation("ch.qos.logback:logback-classic:1.2.6") implementation("io.github.microutils:kotlin-logging:2.1.21") // ReactiveX implementation("io.reactivex:rxjava:1.3.8") - implementation("io.reactivex:rxkotlin:1.0.0") - implementation("com.jakewharton.rxrelay:rxrelay:1.2.0") // dependency both in AndroidCompat and extensions, version locked by Tachiyomi app/extensions - implementation("org.jsoup:jsoup:1.14.3") + implementation("org.jsoup:jsoup:1.15.3") // dependency of :AndroidCompat:Config - implementation("com.typesafe:config:1.4.1") - implementation("io.github.config4k:config4k:0.4.2") + implementation("com.typesafe:config:1.4.2") + implementation("io.github.config4k:config4k:0.5.0") // to get application content root implementation("net.harawata:appdirs:1.2.1") // dex2jar - val dex2jarVersion = "v35" + val dex2jarVersion = "v56" implementation("com.github.ThexXTURBOXx.dex2jar:dex-translator:$dex2jarVersion") implementation("com.github.ThexXTURBOXx.dex2jar:dex-tools:$dex2jarVersion") diff --git a/buildSrc/src/main/kotlin/Constants.kt b/buildSrc/src/main/kotlin/Constants.kt index 007d076d..66ce7108 100644 --- a/buildSrc/src/main/kotlin/Constants.kt +++ b/buildSrc/src/main/kotlin/Constants.kt @@ -7,7 +7,7 @@ import java.io.BufferedReader * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -const val kotlinVersion = "1.6.10" +const val kotlinVersion = "1.7.20" const val MainClass = "suwayomi.tachidesk.MainKt" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e6e5897..ae04661e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 4c0d9e07..e23d32b8 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -9,17 +9,18 @@ plugins { dependencies { // okhttp - val okhttpVersion = "4.9.3" // Major version is locked by Tachiyomi extensions + val okhttpVersion = "4.10.0" // Major version is locked by Tachiyomi extensions implementation("com.squareup.okhttp3:okhttp:$okhttpVersion") implementation("com.squareup.okhttp3:logging-interceptor:$okhttpVersion") implementation("com.squareup.okhttp3:okhttp-dnsoverhttps:$okhttpVersion") - implementation("com.squareup.okio:okio:3.0.0") + implementation("com.squareup.okio:okio:3.2.0") // Javalin api - implementation("io.javalin:javalin:4.2.0") - implementation("io.javalin:javalin-openapi:4.2.0") + // Javalin 5.0.0+ requires Java 11 + implementation("io.javalin:javalin:4.6.6") + implementation("io.javalin:javalin-openapi:4.6.6") // jackson version locked by javalin, ref: `io.javalin.core.util.OptionalDependency` - val jacksonVersion = "2.12.4" + val jacksonVersion = "2.13.3" implementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion") @@ -43,23 +44,23 @@ dependencies { implementation("com.github.inorichi.injekt:injekt-core:65b0440") implementation("com.squareup.okhttp3:okhttp:$okhttpVersion") implementation("io.reactivex:rxjava:1.3.8") - implementation("org.jsoup:jsoup:1.14.3") + implementation("org.jsoup:jsoup:1.15.3") // Sort implementation("com.github.gpanther:java-nat-sort:natural-comparator-1.1") // asm for ByteCodeEditor(fixing SimpleDateFormat) (must match Dex2Jar version) - implementation("org.ow2.asm:asm:9.2") + implementation("org.ow2.asm:asm:9.4") // Disk & File - implementation("net.lingala.zip4j:zip4j:2.9.1") - implementation("com.github.junrar:junrar:7.5.0") + implementation("net.lingala.zip4j:zip4j:2.11.2") + implementation("com.github.junrar:junrar:7.5.3") // CloudflareInterceptor - implementation("net.sourceforge.htmlunit:htmlunit:2.56.0") + implementation("net.sourceforge.htmlunit:htmlunit:2.65.1") // AES/CBC/PKCS7Padding Cypher provider for zh.copymanga - implementation("org.bouncycastle:bcprov-jdk18on:1.71") + implementation("org.bouncycastle:bcprov-jdk18on:1.72") // Source models and interfaces from Tachiyomi 1.x // using source class from tachiyomi commit 9493577de27c40ce8b2b6122cc447d025e34c477 to not depend on tachiyomi.sourceapi @@ -73,7 +74,7 @@ dependencies { // implementation(fileTree("lib/")) implementation(kotlin("script-runtime")) - testImplementation("io.mockk:mockk:1.12.2") + testImplementation("io.mockk:mockk:1.13.2") } application { diff --git a/server/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt b/server/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt index 9a8b24be..5ceb9367 100644 --- a/server/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt +++ b/server/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt @@ -139,7 +139,7 @@ class EpubFile(file: File) : Closeable { */ private fun getPagesFromDocument(document: Document): List { val pages = document.select("manifest > item") - .filter { "application/xhtml+xml" == it.attr("media-type") } + .filter { element -> "application/xhtml+xml" == element.attr("media-type") } .associateBy { it.attr("id") } val spine = document.select("spine > itemref").map { it.attr("idref") } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/RxCoroutineBridge.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/RxCoroutineBridge.kt index 6f8a80b1..896a0daa 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/RxCoroutineBridge.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/RxCoroutineBridge.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.manga.impl.util.lang * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import kotlinx.coroutines.CancellableContinuation +import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.suspendCancellableCoroutine import rx.Observable import rx.Subscriber @@ -22,6 +23,7 @@ import kotlin.coroutines.resumeWithException suspend fun Observable.awaitSingle(): T = single().awaitOne() +@OptIn(InternalCoroutinesApi::class) private suspend fun Observable.awaitOne(): T = suspendCancellableCoroutine { cont -> cont.unsubscribeOnCancellation( subscribe(