From 5a7b4294c58491205f6f13e3e3f9f3704e559f0e Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 7 Oct 2022 13:56:08 +0200 Subject: [PATCH] [Gradle, JS] Add typescript optionally --- .../kotlin/gradle/targets/js/KotlinJsTarget.kt | 4 ++++ .../gradle/targets/js/dsl/KotlinJsTargetDsl.kt | 2 ++ .../kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt | 13 +++++++++++++ .../tasks/configuration/KotlinJsIrLinkConfig.kt | 4 +--- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index 1a31f70b305..fec5a602de7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -187,4 +187,8 @@ constructor( override fun useEsModules() { error("ES modules are not supported in legacy JS compiler. Please, use IR one instead.") } + + override fun generateTypeScriptDefinitions() { + project.logger.warn("Legacy compiler does not support generation of TypeScript Definitions") + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt index 861e62f05ee..b4b4b1d3eff 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt @@ -55,6 +55,8 @@ interface KotlinJsTargetDsl : KotlinTarget { fun useCommonJs() fun useEsModules() + fun generateTypeScriptDefinitions() + val binaries: KotlinJsBinaryContainer @Deprecated( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index 54007775a3f..2aea632e187 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt @@ -384,4 +384,17 @@ constructor( sourceMap = true sourceMapEmbedSources = "never" } + + override fun generateTypeScriptDefinitions() { + compilations + .all { + binaries + .withType(JsIrBinary::class.java) + .all { + it.linkTask.configure { linkTask -> + linkTask.compilerOptions.freeCompilerArgs.add(GENERATE_D_TS) + } + } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinJsIrLinkConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinJsIrLinkConfig.kt index 10a6c8eb394..056262c1c52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinJsIrLinkConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinJsIrLinkConfig.kt @@ -61,15 +61,13 @@ internal open class KotlinJsIrLinkConfig( configureOptions( compilation, ENABLE_DCE, - GENERATE_D_TS, MINIMIZED_MEMBER_NAMES ) } KotlinJsBinaryMode.DEVELOPMENT -> { configureOptions( - compilation, - GENERATE_D_TS + compilation ) } else -> throw InvalidUserDataException(