[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:
committed by
Space
parent
582e8fc9ad
commit
016143328a
+13
@@ -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) }
|
||||
|
||||
|
||||
+13
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user