From 0b0ec24297810c81c1924514c439a582e55d428c Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 10:34:48 -0500 Subject: [PATCH 01/11] smithy-kotlin builds! --- gradle/libs.versions.toml | 14 +++++++------- .../smithy/kotlin/codegen/ApiEvolutionTest.kt | 5 +++++ .../amazon/smithy/kotlin/codegen/SmithySdkTest.kt | 5 +++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0683bfc2e1..b899ee124d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,24 +1,24 @@ [versions] -kotlin-version = "2.0.21" +kotlin-version = "2.1.0" dokka-version = "1.9.10" -aws-kotlin-repo-tools-version = "0.4.16" +aws-kotlin-repo-tools-version = "0.4.14-SNAPSHOT" # libs coroutines-version = "1.9.0" -atomicfu-version = "0.25.0" +atomicfu-version = "0.26.1" okhttp-version = "5.0.0-alpha.14" okhttp4-version = "4.12.0" okio-version = "3.9.1" -otel-version = "1.43.0" +otel-version = "1.45.0" slf4j-version = "2.0.16" slf4j-v1x-version = "1.7.36" crt-kotlin-version = "0.8.10" -micrometer-version = "1.13.6" +micrometer-version = "1.14.2" +binary-compatibility-validator-version = "0.16.3" # codegen smithy-version = "1.51.0" -smithy-gradle-version = "0.9.0" # testing junit-version = "5.10.5" @@ -104,7 +104,7 @@ dokka = { id = "org.jetbrains.dokka", version.ref = "dokka-version"} kotlin-jvm = {id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin-version" } kotlin-multiplatform = {id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin-version" } kotlinx-benchmark = { id = "org.jetbrains.kotlinx.benchmark", version.ref = "kotlinx-benchmark-version" } -kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.13.2" } +kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator-version" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-version"} aws-kotlin-repo-tools-kmp = { id = "aws.sdk.kotlin.gradle.kmp", version.ref = "aws-kotlin-repo-tools-version" } aws-kotlin-repo-tools-smithybuild = { id = "aws.sdk.kotlin.gradle.smithybuild", version.ref = "aws-kotlin-repo-tools-version" } diff --git a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt index 0960f03009..720a27001b 100644 --- a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt +++ b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt @@ -6,6 +6,7 @@ package software.amazon.smithy.kotlin.codegen import software.amazon.smithy.kotlin.codegen.util.asSmithy import software.amazon.smithy.kotlin.codegen.util.testModelChangeAgainstSource +import kotlin.test.Ignore import kotlin.test.Test import kotlin.test.assertTrue @@ -20,6 +21,7 @@ import kotlin.test.assertTrue * Example: "Wrote generated SDK to /tmp/sdk-codegen-1606867139716" */ class ApiEvolutionTest { + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with no input to operation with empty input compiles`() { val modelV1 = """ @@ -79,6 +81,7 @@ class ApiEvolutionTest { } } + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with empty input to operation with input containing members compiles`() { val modelV1 = """ @@ -144,6 +147,7 @@ class ApiEvolutionTest { } } + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with no output to operation with empty output compiles`() { val modelV1 = """ @@ -203,6 +207,7 @@ class ApiEvolutionTest { } } + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with empty output to operation with output containing members compiles`() { val modelV1 = """ diff --git a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt index 8cad9fc623..4ba8643458 100644 --- a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt +++ b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt @@ -25,6 +25,7 @@ class SmithySdkTest { // Max number of warnings the compiler can issue as a result of compiling SDK with kitchen sink model. private val warningThreshold = 3 + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `white label sdk compiles without errors`() { val model = javaClass.getResource("/kitchen-sink-model.smithy")!!.asSmithy() @@ -55,6 +56,7 @@ class SmithySdkTest { assertTrue(result <= warningThreshold, "Compiler warnings ($result) breached threshold of $warningThreshold\n$formatted") } + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `white label sdk compiles with language keywords as model member names`() { val fooMembers = hardReservedWords @@ -98,6 +100,7 @@ class SmithySdkTest { assertEquals(KotlinCompilation.ExitCode.OK, compilationResult.exitCode, compileOutputStream.toString()) } + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `it has non conflicting document deserializer for exceptions`() { // test that an exception is re-used not as an error but as part of some other payload (ticket: 176989575) @@ -136,6 +139,7 @@ class SmithySdkTest { assertEquals(KotlinCompilation.ExitCode.OK, compilationResult.exitCode, compileOutputStream.toString()) } + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `it compiles models with nested unions`() { val model = """ @@ -177,6 +181,7 @@ class SmithySdkTest { } // https://github.com/smithy-lang/smithy-kotlin/issues/1125 + @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `it compiles models with string enums`() { val model = """ From 3ecee3994fc90a427676aad29c20068453d40ba4 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 10:53:42 -0500 Subject: [PATCH 02/11] Changelog --- .changes/1a68d0b7-00e7-45c0-88f6-95e5c39c9c61.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/1a68d0b7-00e7-45c0-88f6-95e5c39c9c61.json diff --git a/.changes/1a68d0b7-00e7-45c0-88f6-95e5c39c9c61.json b/.changes/1a68d0b7-00e7-45c0-88f6-95e5c39c9c61.json new file mode 100644 index 0000000000..10ef502204 --- /dev/null +++ b/.changes/1a68d0b7-00e7-45c0-88f6-95e5c39c9c61.json @@ -0,0 +1,6 @@ +{ + "id": "1a68d0b7-00e7-45c0-88f6-95e5c39c9c61", + "type": "misc", + "description": "⚠️ **IMPORTANT**: Upgrade to Kotlin 2.1.0", + "requiresMinorVersionBump": true +} \ No newline at end of file From 980105fafa01509a77f38bcc1b2659cd97f351c3 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 10:58:34 -0500 Subject: [PATCH 03/11] Remove SNAPSHOT dependency --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b899ee124d..3aa8abb5b2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ kotlin-version = "2.1.0" dokka-version = "1.9.10" -aws-kotlin-repo-tools-version = "0.4.14-SNAPSHOT" +aws-kotlin-repo-tools-version = "0.4.16" # libs coroutines-version = "1.9.0" From 3e3926bffbd4e8822dfb7e4a6d301c47d22e5260 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 11:02:25 -0500 Subject: [PATCH 04/11] Downgrade atomicfu version to match internal import --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3aa8abb5b2..7fe5caa352 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ aws-kotlin-repo-tools-version = "0.4.16" # libs coroutines-version = "1.9.0" -atomicfu-version = "0.26.1" +atomicfu-version = "0.23.1" okhttp-version = "5.0.0-alpha.14" okhttp4-version = "4.12.0" okio-version = "3.9.1" From 5fc40440ca66cb9edd08c705e9793005489a3efe Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:23:27 -0500 Subject: [PATCH 05/11] Bump aws-kotlin-repo-tools version --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7fe5caa352..ce5c35966b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ kotlin-version = "2.1.0" dokka-version = "1.9.10" -aws-kotlin-repo-tools-version = "0.4.16" +aws-kotlin-repo-tools-version = "0.4.17" # libs coroutines-version = "1.9.0" From defce089d5aa2f0ccc88d963db8eb05d27fb9175 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:28:13 -0500 Subject: [PATCH 06/11] Move to @ZacSweers fork of kotlin-compile-testing --- gradle/libs.versions.toml | 4 ++-- .../amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt | 5 ----- .../software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt | 5 ----- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ce5c35966b..5309f2ba2f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ smithy-version = "1.51.0" # testing junit-version = "5.10.5" kotest-version = "5.9.1" -kotlin-compile-testing-version = "1.6.0" +kotlin-compile-testing-version = "0.7.0" kotlinx-benchmark-version = "0.4.12" kotlinx-serialization-version = "1.7.3" docker-java-version = "3.4.0" @@ -80,7 +80,7 @@ smithy-smoke-test-traits = { module = "software.amazon.smithy:smithy-smoke-test- junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-version" } junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit-version" } -kotlin-compile-testing = {module = "com.github.tschuchortdev:kotlin-compile-testing", version.ref = "kotlin-compile-testing-version" } +kotlin-compile-testing = {module = "dev.zacsweers.kctfork:core", version.ref = "kotlin-compile-testing-version" } kotest-assertions-core = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest-version" } kotest-assertions-core-jvm = { module = "io.kotest:kotest-assertions-core-jvm", version.ref = "kotest-version" } kotlinx-benchmark-runtime = { module = "org.jetbrains.kotlinx:kotlinx-benchmark-runtime", version.ref = "kotlinx-benchmark-version" } diff --git a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt index 720a27001b..0960f03009 100644 --- a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt +++ b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/ApiEvolutionTest.kt @@ -6,7 +6,6 @@ package software.amazon.smithy.kotlin.codegen import software.amazon.smithy.kotlin.codegen.util.asSmithy import software.amazon.smithy.kotlin.codegen.util.testModelChangeAgainstSource -import kotlin.test.Ignore import kotlin.test.Test import kotlin.test.assertTrue @@ -21,7 +20,6 @@ import kotlin.test.assertTrue * Example: "Wrote generated SDK to /tmp/sdk-codegen-1606867139716" */ class ApiEvolutionTest { - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with no input to operation with empty input compiles`() { val modelV1 = """ @@ -81,7 +79,6 @@ class ApiEvolutionTest { } } - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with empty input to operation with input containing members compiles`() { val modelV1 = """ @@ -147,7 +144,6 @@ class ApiEvolutionTest { } } - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with no output to operation with empty output compiles`() { val modelV1 = """ @@ -207,7 +203,6 @@ class ApiEvolutionTest { } } - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `client calling operation with empty output to operation with output containing members compiles`() { val modelV1 = """ diff --git a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt index 4ba8643458..8cad9fc623 100644 --- a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt +++ b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/SmithySdkTest.kt @@ -25,7 +25,6 @@ class SmithySdkTest { // Max number of warnings the compiler can issue as a result of compiling SDK with kitchen sink model. private val warningThreshold = 3 - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `white label sdk compiles without errors`() { val model = javaClass.getResource("/kitchen-sink-model.smithy")!!.asSmithy() @@ -56,7 +55,6 @@ class SmithySdkTest { assertTrue(result <= warningThreshold, "Compiler warnings ($result) breached threshold of $warningThreshold\n$formatted") } - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `white label sdk compiles with language keywords as model member names`() { val fooMembers = hardReservedWords @@ -100,7 +98,6 @@ class SmithySdkTest { assertEquals(KotlinCompilation.ExitCode.OK, compilationResult.exitCode, compileOutputStream.toString()) } - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `it has non conflicting document deserializer for exceptions`() { // test that an exception is re-used not as an error but as part of some other payload (ticket: 176989575) @@ -139,7 +136,6 @@ class SmithySdkTest { assertEquals(KotlinCompilation.ExitCode.OK, compilationResult.exitCode, compileOutputStream.toString()) } - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `it compiles models with nested unions`() { val model = """ @@ -181,7 +177,6 @@ class SmithySdkTest { } // https://github.com/smithy-lang/smithy-kotlin/issues/1125 - @Ignore // Disabled until kotlin-compile-testing supports Kotlin 2.1.0 @Test fun `it compiles models with string enums`() { val model = """ From 09a2596ae937bff3d9e0439c8e2baed039439872 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:31:08 -0500 Subject: [PATCH 07/11] Fix atomicfu version --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5309f2ba2f..b90f602885 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ aws-kotlin-repo-tools-version = "0.4.17" # libs coroutines-version = "1.9.0" -atomicfu-version = "0.23.1" +atomicfu-version = "0.25.0" okhttp-version = "5.0.0-alpha.14" okhttp4-version = "4.12.0" okio-version = "3.9.1" From 81882d91dc9a53347c9759366ba16ef5d9ac7331 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:37:00 -0500 Subject: [PATCH 08/11] `KotlinCompilation.Result` -> `JvmCompilationResult` --- .../amazon/smithy/kotlin/codegen/util/TestUtils.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt index 02bf209f3c..ac97bc1847 100644 --- a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt +++ b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt @@ -6,6 +6,7 @@ package software.amazon.smithy.kotlin.codegen.util +import com.tschuchort.compiletesting.JvmCompilationResult import com.tschuchort.compiletesting.KotlinCompilation import com.tschuchort.compiletesting.SourceFile import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi @@ -36,8 +37,8 @@ private fun String.slashEscape(char: Char) = this.replace(char.toString(), """\$ * Captures the result of a model transformation test */ data class ModelChangeTestResult( - val originalModelCompilationResult: KotlinCompilation.Result, - val updatedModelCompilationResult: KotlinCompilation.Result, + val originalModelCompilationResult: JvmCompilationResult, + val updatedModelCompilationResult: JvmCompilationResult, val compileSuccess: Boolean, val compileOutput: String, ) @@ -69,7 +70,7 @@ fun testModelChangeAgainstSource( originalModelCompilationResult, updatedModelCompilationResult, originalModelCompilationResult.exitCode == KotlinCompilation.ExitCode.OK && - updatedModelCompilationResult.exitCode == KotlinCompilation.ExitCode.OK, + updatedModelCompilationResult.exitCode == KotlinCompilation.ExitCode.OK, compileOutputStream.toString(), ) } @@ -88,7 +89,7 @@ fun compileSdkAndTest( testSource: String? = null, outputSink: OutputStream = System.out, emitSourcesToTmp: Boolean = false, -): KotlinCompilation.Result { +): JvmCompilationResult { val sdkFileManifest = generateSdk(model) if (emitSourcesToTmp) { From 467e5e4e1f342b83b86bf50dc581e0e225565bf8 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:37:14 -0500 Subject: [PATCH 09/11] Replace deprecated `readBytes` with `readByteArray` --- .../runtime/auth/awssigning/tests/SigningSuiteTestBaseJVM.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/auth/aws-signing-tests/jvm/src/aws/smithy/kotlin/runtime/auth/awssigning/tests/SigningSuiteTestBaseJVM.kt b/runtime/auth/aws-signing-tests/jvm/src/aws/smithy/kotlin/runtime/auth/awssigning/tests/SigningSuiteTestBaseJVM.kt index 904aef564b..b3c4202d26 100644 --- a/runtime/auth/aws-signing-tests/jvm/src/aws/smithy/kotlin/runtime/auth/awssigning/tests/SigningSuiteTestBaseJVM.kt +++ b/runtime/auth/aws-signing-tests/jvm/src/aws/smithy/kotlin/runtime/auth/awssigning/tests/SigningSuiteTestBaseJVM.kt @@ -28,6 +28,7 @@ import io.ktor.util.* import io.ktor.utils.io.* import io.ktor.utils.io.core.* import kotlinx.coroutines.runBlocking +import kotlinx.io.readByteArray import kotlinx.serialization.json.* import org.junit.jupiter.api.Assumptions.assumeTrue import org.junit.jupiter.api.Test @@ -383,7 +384,7 @@ public actual abstract class SigningSuiteTestBase : HasSigner { } if (hasBody) { - val bytes = runBlocking { chan.readRemaining().readBytes() } + val bytes = runBlocking { chan.readRemaining().readByteArray() } builder.body = HttpBody.fromBytes(bytes) } From 971c6c980e6f358386e6045eeeb810d04a6164ef Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:44:06 -0500 Subject: [PATCH 10/11] ktlint --- .../software/amazon/smithy/kotlin/codegen/util/TestUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt index ac97bc1847..2e64c9d4fe 100644 --- a/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt +++ b/tests/compile/src/test/kotlin/software/amazon/smithy/kotlin/codegen/util/TestUtils.kt @@ -70,7 +70,7 @@ fun testModelChangeAgainstSource( originalModelCompilationResult, updatedModelCompilationResult, originalModelCompilationResult.exitCode == KotlinCompilation.ExitCode.OK && - updatedModelCompilationResult.exitCode == KotlinCompilation.ExitCode.OK, + updatedModelCompilationResult.exitCode == KotlinCompilation.ExitCode.OK, compileOutputStream.toString(), ) } From c6fc3cd65bb92b0daf9dce2cbf1199a78c1602d8 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 16 Dec 2024 12:53:43 -0500 Subject: [PATCH 11/11] Expand wildcard match on KotlinStdlib package transform --- .brazil.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.brazil.json b/.brazil.json index cb2e43713a..5a1d830abd 100644 --- a/.brazil.json +++ b/.brazil.json @@ -1,6 +1,6 @@ { "dependencies": { - "org.jetbrains.kotlin:kotlin-stdlib:2.0.*": "KotlinStdlib-2.x", + "org.jetbrains.kotlin:kotlin-stdlib:2.*": "KotlinStdlib-2.x", "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.*": "KotlinxCoroutinesCoreJvm-1.x", "com.squareup.okhttp3:okhttp-coroutines:5.*": "OkHttp3Coroutines-5.x",