From 8aaa37d4d6293e58a9ceae15589f07240735f5b1 Mon Sep 17 00:00:00 2001 From: lihenggui Date: Fri, 1 Mar 2024 15:29:30 -0800 Subject: [PATCH 1/4] Use Naiper as the logging library --- core/common/build.gradle.kts | 1 + gradle/libs.versions.toml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index cd2b1fbce..c238bfcf2 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -26,6 +26,7 @@ android { kotlin { sourceSets { commonMain.dependencies { + api(libs.naiper) implementation(libs.kotlinx.coroutines.core) } commonTest.dependencies { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7c3190f05..6d5292a72 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -73,6 +73,7 @@ junit = "4.13.2" sqldelight = "2.0.1" kotlinInject = '0.6.3' multiplatform-settings = "1.1.1" +naiper = "2.7.1" [libraries] accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } @@ -176,6 +177,7 @@ multiplatform-settings = { group = "com.russhwolf", name = "multiplatform-settin multiplatform-settings-test = { group = "com.russhwolf", name = "multiplatform-settings-test", version.ref = "multiplatform-settings" } multiplatform-settings-serialization = { group = "com.russhwolf", name = "multiplatform-settings-serialization", version.ref = "multiplatform-settings" } multiplatform-settings-coroutines = { group = "com.russhwolf", name = "multiplatform-settings-coroutines", version.ref = "multiplatform-settings" } +naiper = { group = "io.github.aakira", name = "naiper", version.ref = "naiper" } # Dependencies of the included build-logic android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } From 234ad1e6cc08095db388ef6c698b83ea09aa2617 Mon Sep 17 00:00:00 2001 From: lihenggui Date: Fri, 1 Mar 2024 15:40:20 -0800 Subject: [PATCH 2/4] Change js to wasmJs --- .../apps/nowinandroid/KotlinMultiplatform.kt | 19 ++++++++++--------- .../core/di/DispatchersComponent.kt | 0 .../core/database/DriverModule.kt | 0 .../nowinandroid/core/database/BaseTest.js.kt | 0 4 files changed, 10 insertions(+), 9 deletions(-) rename core/common/src/{jsMain => wasmJsMain}/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt (100%) rename core/database/src/{jsMain => wasmJsMain}/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt (100%) rename core/database/src/{jsTest => wasmJsTest}/kotlin/com/google/samples/apps/nowinandroid/core/database/BaseTest.js.kt (100%) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt index f3bf46fc2..cb511ed06 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt @@ -21,6 +21,8 @@ import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.konan.target.HostManager @@ -28,6 +30,7 @@ import org.jetbrains.kotlin.konan.target.HostManager * A plugin that applies the Kotlin Multiplatform plugin and configures it for the project. * https://github.com/cashapp/sqldelight/blob/master/buildLogic/multiplatform-convention/src/main/kotlin/app/cash/sqldelight/multiplatform/MultiplatformConventions.kt */ +@OptIn(ExperimentalWasmDsl::class) internal fun Project.configureKotlinMultiplatform() { extensions.configure { // Enable native group by default @@ -37,19 +40,17 @@ internal fun Project.configureKotlinMultiplatform() { jvm() androidTarget() - js { + wasmJs { browser { - testTask { - useKarma { - useChromeHeadless() + commonWebpackConfig { + devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { + static = (static ?: mutableListOf()).apply { + // Serve sources to debug inside browser + add(project.projectDir.path) + } } } } - compilations.configureEach { - kotlinOptions { - moduleKind = "umd" - } - } } // tier 1 diff --git a/core/common/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt b/core/common/src/wasmJsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt similarity index 100% rename from core/common/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt rename to core/common/src/wasmJsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt diff --git a/core/database/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt b/core/database/src/wasmJsMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt similarity index 100% rename from core/database/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt rename to core/database/src/wasmJsMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt diff --git a/core/database/src/jsTest/kotlin/com/google/samples/apps/nowinandroid/core/database/BaseTest.js.kt b/core/database/src/wasmJsTest/kotlin/com/google/samples/apps/nowinandroid/core/database/BaseTest.js.kt similarity index 100% rename from core/database/src/jsTest/kotlin/com/google/samples/apps/nowinandroid/core/database/BaseTest.js.kt rename to core/database/src/wasmJsTest/kotlin/com/google/samples/apps/nowinandroid/core/database/BaseTest.js.kt From 25934d45c928083520cbcdf8bed4b8fdcacbf989 Mon Sep 17 00:00:00 2001 From: lihenggui Date: Fri, 1 Mar 2024 16:07:46 -0800 Subject: [PATCH 3/4] Remove support for wasm --- .../kotlin/KotlinInjectConventionPlugin.kt | 5 ++++ .../apps/nowinandroid/KotlinMultiplatform.kt | 26 ++++++++++--------- core/database/build.gradle.kts | 13 +++++----- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt index 61e491ff1..692c8cb02 100644 --- a/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt @@ -34,6 +34,11 @@ class KotlinInjectConventionPlugin: Plugin { add("kspIosX64", libs.findLibrary("kotlin.inject.compiler.ksp").get()) add("kspIosArm64", libs.findLibrary("kotlin.inject.compiler.ksp").get()) add("kspIosSimulatorArm64", libs.findLibrary("kotlin.inject.compiler.ksp").get()) +// add("kspWasmJs", libs.findLibrary("kotlin.inject.compiler.ksp").get()) + add("kspAndroid", libs.findLibrary("kotlin.inject.compiler.ksp").get()) + add("kspJvm", libs.findLibrary("kotlin.inject.compiler.ksp").get()) + add("kspMacosX64", libs.findLibrary("kotlin.inject.compiler.ksp").get()) + add("kspMacosArm64", libs.findLibrary("kotlin.inject.compiler.ksp").get()) } } } diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt index cb511ed06..9e77a6f91 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt @@ -39,19 +39,21 @@ internal fun Project.configureKotlinMultiplatform() { jvm() androidTarget() +// SqlDelight does not support wasm yet +// https://github.com/cashapp/sqldelight/pull/4965/files - wasmJs { - browser { - commonWebpackConfig { - devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { - static = (static ?: mutableListOf()).apply { - // Serve sources to debug inside browser - add(project.projectDir.path) - } - } - } - } - } +// wasmJs { +// browser { +// commonWebpackConfig { +// devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { +// static = (static ?: mutableListOf()).apply { +// // Serve sources to debug inside browser +// add(project.projectDir.path) +// } +// } +// } +// } +// } // tier 1 // :core:datastore:linuxMain: Could not resolve com.russhwolf:multiplatform-settings-no-arg:1.1.1. diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index ac81f18d7..faf1fc3c3 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -50,12 +50,13 @@ kotlin { jvmMain.dependencies { implementation(libs.sqldelight.sqlite.driver) } - jsMain.dependencies { - implementation(libs.sqldelight.webworker.driver) - implementation(npm("@cashapp/sqldelight-sqljs-worker", "2.0.1")) - implementation(npm("sql.js", "1.8.0")) - implementation(devNpm("copy-webpack-plugin", "9.1.0")) - } + // https://github.com/cashapp/sqldelight/pull/4965/files +// wasmJsMain.dependencies { +// implementation(libs.sqldelight.webworker.driver) +// implementation(npm("@cashapp/sqldelight-sqljs-worker", "2.0.1")) +// implementation(npm("sql.js", "1.8.0")) +// implementation(devNpm("copy-webpack-plugin", "9.1.0")) +// } commonTest.dependencies { implementation(libs.kotlin.test) implementation(libs.kotlinx.coroutines.test) From 6643cadf8b43df687d4fddf950019fc38b9e76ad Mon Sep 17 00:00:00 2001 From: lihenggui Date: Fri, 1 Mar 2024 16:10:30 -0800 Subject: [PATCH 4/4] Use Kermit as the logging framework --- core/common/build.gradle.kts | 2 +- gradle/libs.versions.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index c238bfcf2..56a6fd958 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -26,7 +26,7 @@ android { kotlin { sourceSets { commonMain.dependencies { - api(libs.naiper) + api(libs.logging) implementation(libs.kotlinx.coroutines.core) } commonTest.dependencies { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6d5292a72..6cf1f0194 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -73,7 +73,7 @@ junit = "4.13.2" sqldelight = "2.0.1" kotlinInject = '0.6.3' multiplatform-settings = "1.1.1" -naiper = "2.7.1" +kermit = "2.0.3" [libraries] accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } @@ -177,7 +177,7 @@ multiplatform-settings = { group = "com.russhwolf", name = "multiplatform-settin multiplatform-settings-test = { group = "com.russhwolf", name = "multiplatform-settings-test", version.ref = "multiplatform-settings" } multiplatform-settings-serialization = { group = "com.russhwolf", name = "multiplatform-settings-serialization", version.ref = "multiplatform-settings" } multiplatform-settings-coroutines = { group = "com.russhwolf", name = "multiplatform-settings-coroutines", version.ref = "multiplatform-settings" } -naiper = { group = "io.github.aakira", name = "naiper", version.ref = "naiper" } +logging = { group = "co.touchlab", name = "kermit", version.ref = "kermit" } # Dependencies of the included build-logic android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }