diff --git a/README.md b/README.md index d30f247..39f87d9 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,10 @@ After setting up Kotlin per the linked instructions above, ./gradlew :compileProductionExecutableKotlinJs ``` -That will compile your code and package it into a JavaScript executable, after which you can run `wrangler publish` to push it to Cloudflare. +That will compile your code and package it into a JavaScript executable, after which you can run `wrangler deploy` to push it to Cloudflare. ``` -wrangler publish build/js/packages/kotlin-worker-hello-world/kotlin/kotlin-worker-hello-world.js +wrangler deploy build/js/packages/kotlin-worker-hello-world/kotlin/kotlin-worker-hello-world.js ``` For more information on interop between Kotlin and Javascript, see the [Kotlin docs](https://kotlinlang.org/docs/reference/js-interop.html). Regarding coroutines, see [this issue and workaround](https://github.com/cloudflare/kotlin-worker-hello-world/issues/2) diff --git a/build.gradle.kts b/build.gradle.kts index e31f80e..c50bc21 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - kotlin("js") version "1.7.10" + kotlin("multiplatform") version "2.2.10" } group = "org.example" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..3ae1e2f 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.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/kotlin/main.kt b/src/jsMain/kotlin/main.kt similarity index 55% rename from src/main/kotlin/main.kt rename to src/jsMain/kotlin/main.kt index dd8d0a6..f98243b 100644 --- a/src/main/kotlin/main.kt +++ b/src/jsMain/kotlin/main.kt @@ -1,7 +1,17 @@ +import org.w3c.dom.events.EventListener import org.w3c.fetch.Request import org.w3c.fetch.Response import org.w3c.fetch.ResponseInit +fun main() { + @Suppress("UNUSED_VARIABLE") + val eventListener = EventListener {event -> + event.asDynamic().respondWith(fetch(event.asDynamic().request as Request)) + Unit + } + js("addEventListener('fetch', eventListener)") +} + @OptIn(ExperimentalJsExport::class) @JsExport fun fetch(request: Request) : Response { diff --git a/src/main/resources/index.html b/src/jsMain/resources/index.html similarity index 100% rename from src/main/resources/index.html rename to src/jsMain/resources/index.html