From 3761a18c75c7b94da1e390a17ef32044236bb105 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 26 Apr 2026 16:32:52 +0700 Subject: [PATCH] fix(folio-core): wire kotlinx-browser so wasmJs DriverFactory compiles org.w3c.dom.Worker on wasmJs lives in kotlinx-browser, not the stdlib. Pin 0.5.0 alongside the @sqlite.org/sqlite-wasm 3.53.0-build1 version that the upcoming web app will depend on, and switch the worker constructor to the module-worker form that webpack expects. --- examples/folio/core/build.gradle.kts | 1 + .../kotlin/app/folio/core/data/DriverFactory.wasmJs.kt | 9 +++++---- examples/folio/gradle/libs.versions.toml | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/folio/core/build.gradle.kts b/examples/folio/core/build.gradle.kts index 6f81007..375fba2 100644 --- a/examples/folio/core/build.gradle.kts +++ b/examples/folio/core/build.gradle.kts @@ -43,6 +43,7 @@ kotlin { } wasmJsMain.dependencies { implementation(libs.sqldelight.web.worker.driver) + implementation(libs.kotlinx.browser) } } } diff --git a/examples/folio/core/src/wasmJsMain/kotlin/app/folio/core/data/DriverFactory.wasmJs.kt b/examples/folio/core/src/wasmJsMain/kotlin/app/folio/core/data/DriverFactory.wasmJs.kt index 5c3d21b..117340a 100644 --- a/examples/folio/core/src/wasmJsMain/kotlin/app/folio/core/data/DriverFactory.wasmJs.kt +++ b/examples/folio/core/src/wasmJsMain/kotlin/app/folio/core/data/DriverFactory.wasmJs.kt @@ -1,3 +1,5 @@ +@file:OptIn(kotlin.js.ExperimentalWasmJsInterop::class) + package app.folio.core.data import app.cash.sqldelight.async.coroutines.awaitCreate @@ -8,12 +10,11 @@ import org.w3c.dom.Worker actual class DriverFactory { actual suspend fun create(): SqlDriver { - val worker = Worker(workerScriptUrl()) - val driver = WebWorkerDriver(worker) + val driver = WebWorkerDriver(createSqliteWorker()) LedgerDatabase.Schema.awaitCreate(driver) return driver } } -private fun workerScriptUrl(): String = - js("""new URL("./sqlite.worker.js", import.meta.url).toString()""") +private fun createSqliteWorker(): Worker = + js("""new Worker(new URL("./sqlite.worker.js", import.meta.url), { type: "module" })""") diff --git a/examples/folio/gradle/libs.versions.toml b/examples/folio/gradle/libs.versions.toml index 7d850cb..5e4f40b 100644 --- a/examples/folio/gradle/libs.versions.toml +++ b/examples/folio/gradle/libs.versions.toml @@ -9,6 +9,8 @@ lifecycle-viewmodel-compose = "2.10.0" activity-compose = "1.13.0" metro = "1.0.0-RC4" navigation-compose = "2.9.2" +kotlinx-browser = "0.5.0" +sqlite-wasm = "3.53.0-build1" [libraries] kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } @@ -26,6 +28,8 @@ navigation-compose = { module = "org.jetbrains.androidx.navigation:navigation-co androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity-compose" } +kotlinx-browser = { module = "org.jetbrains.kotlinx:kotlinx-browser", version.ref = "kotlinx-browser" } + [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" }