[Wasm][Gradle] Enable asyncWebAssembly and topLevelAwait in webpack.

Needed for new async module ESM launchers.

Merge-request: KT-MR-5738
Merged-by: Svyatoslav Kuzmich <svyatoslav.kuzmich@jetbrains.com>
This commit is contained in:
Svyatoslav Kuzmich
2022-02-15 09:19:05 +00:00
committed by Space
parent 582e8fc9ad
commit 016143328a
2 changed files with 26 additions and 0 deletions
@@ -18,6 +18,7 @@ import org.gradle.deployment.internal.DeploymentHandle
import org.gradle.deployment.internal.DeploymentRegistry
import org.gradle.process.internal.ExecHandle
import org.gradle.process.internal.ExecHandleFactory
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.archivesName
@@ -28,6 +29,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
import org.jetbrains.kotlin.gradle.utils.getValue
import org.jetbrains.kotlin.gradle.utils.injected
import org.jetbrains.kotlin.gradle.utils.property
import java.io.File
@@ -218,6 +220,10 @@ constructor(
private val webpackConfigAppliers: MutableList<(KotlinWebpackConfig) -> Unit> =
mutableListOf()
private val platformType by project.provider {
compilation.platformType
}
private fun createRunner(): KotlinWebpackRunner {
val config = KotlinWebpackConfig(
mode = mode,
@@ -236,6 +242,13 @@ constructor(
webpackMajorVersion = webpackMajorVersion
)
if (platformType == KotlinPlatformType.wasm) {
config.experiments += listOf(
"asyncWebAssembly",
"topLevelAwait"
)
}
webpackConfigAppliers
.forEach { it(config) }
@@ -48,6 +48,8 @@ data class KotlinWebpackConfig(
@Input
@Optional
var devServer: DevServer? = null,
@Input
var experiments: MutableSet<String> = mutableSetOf(),
@Nested
var cssSupport: KotlinWebpackCssSupport = KotlinWebpackCssSupport(),
@Input
@@ -207,6 +209,7 @@ data class KotlinWebpackConfig(
appendErrorPlugin()
appendFromConfigDir()
appendEvaluatedFileReport()
appendExperiments()
if (export) {
//language=JavaScript 1.8
@@ -277,6 +280,16 @@ data class KotlinWebpackConfig(
appendLine()
}
private fun Appendable.appendExperiments() {
if (experiments.isEmpty()) return
appendLine("config.experiments = {")
for (experiment in experiments.sorted()) {
appendLine(" $experiment: true,")
}
appendLine("}")
}
private fun Appendable.appendSourceMaps() {
if (!sourceMaps) return