From 79de7319e7a4f39f4fb87ff07ecc4e248c9f8e7d Mon Sep 17 00:00:00 2001 From: Danilo Pianini Date: Mon, 24 Mar 2025 18:27:12 +0100 Subject: [PATCH 1/2] fix: adapt to Kotlin 2.1.20 Currently, Kotlin 2.1.20 throws `kotlin.NoWhenBranchMatchedException`. I believe this is caused by `JsIrBinary` now having more implementations: `LibraryWasm` and `ExecutableWasm`. This patch *disables* the publication of `LibraryWasm`, but makes the plugin compatible with the newest Kotlin. --- .../src/main/kotlin/config/kotlinJsTarget.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt b/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt index 53368ca2..0ce326ff 100644 --- a/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt +++ b/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt @@ -35,11 +35,13 @@ internal fun Project.configure(target: KotlinJsTargetDsl): Unit = with(PluginLog extensions.getByType(NpmPublishExtension::class.java).packages.register(target.name) { pkg -> val binary = provider { when (val it = target.binaries.find { it.mode == KotlinJsBinaryMode.PRODUCTION }) { + null -> null is Library -> it - is Executable -> { + // Kotlin 2.1.20 introduces LibraryWasm and ExecutableWasm. + else -> { warn { """ - Kotlin/JS executable binaries are not valid npm package targets. + Kotlin/JS ${it::class.simpleName} binaries are not valid npm package targets. Consider switching to Kotlin/JS library binary: kotlin { js(IR) { @@ -50,8 +52,6 @@ internal fun Project.configure(target: KotlinJsTargetDsl): Unit = with(PluginLog } null } - - null -> null } } val compileKotlinTask = binary.flatMap(JsIrBinary::linkTask) From b3dbd34aa6c4f703d5888230850a3932bee108c3 Mon Sep 17 00:00:00 2001 From: Danilo Pianini Date: Mon, 24 Mar 2025 18:36:01 +0100 Subject: [PATCH 2/2] style: drop unused import --- .../src/main/kotlin/config/kotlinJsTarget.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt b/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt index 0ce326ff..6f3e5379 100644 --- a/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt +++ b/npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt @@ -15,7 +15,6 @@ import org.gradle.api.tasks.Copy import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl -import org.jetbrains.kotlin.gradle.targets.js.ir.Executable import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.ir.Library