[Stdlib] Generate Stdlib API reference for webMain source set + minor renaming

^KT-79489 Fixed

Co-authored-by: Filipp Zhinkin <filipp.zhinkin@jetbrains.com>

Merge-request: KT-MR-22746
Merged-by: Artem Kobzar <Artem.Kobzar@jetbrains.com>
diff --git a/libraries/stdlib/build.gradle.kts b/libraries/stdlib/build.gradle.kts
index fb2b64a..5fad59d 100644
--- a/libraries/stdlib/build.gradle.kts
+++ b/libraries/stdlib/build.gradle.kts
@@ -414,7 +414,7 @@
         val webMain by creating {
             dependsOn(commonMain.get())
             kotlin {
-                srcDir("jsAndWasmJsCommon/src")
+                srcDir("common-js-wasmjs/src")
             }
         }
 
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/JsInterop.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/JsInterop.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/JsInterop.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/JsInterop.kt
diff --git a/libraries/stdlib/common-js-wasmjs/src/kotlin/js/ExperimentalWasmJsInterop.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/ExperimentalWasmJsInterop.kt
new file mode 100644
index 0000000..a30ae82
--- /dev/null
+++ b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/ExperimentalWasmJsInterop.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package kotlin.js
+
+/**
+ * Marks API related to interoperability with JS as experimental.
+ *
+ * Note that the behavior of such API may be changed in the future.
+ *
+ * Usages of such API will be reported as warnings unless an explicit opt-in with
+ * the [OptIn] annotation, e.g. `@OptIn(ExperimentalWasmJsInterop::class)`,
+ * or with the `-opt-in=kotlin.js.ExperimentalWasmJsInterop` compiler option is given.
+ */
+@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
+@MustBeDocumented
+@Retention(AnnotationRetention.BINARY)
+@SinceKotlin("2.2")
+@Target(
+    AnnotationTarget.CLASS,
+    AnnotationTarget.FUNCTION,
+    AnnotationTarget.PROPERTY,
+    AnnotationTarget.TYPEALIAS
+)
+public annotation class ExperimentalWasmJsInterop
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsAny.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsAny.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsAny.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsAny.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsArray.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsArray.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsArray.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsArray.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsBigInt.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsBigInt.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsBigInt.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsBigInt.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsBoolean.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsBoolean.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsBoolean.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsBoolean.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsError.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsError.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsError.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsError.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsException.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsException.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsException.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsException.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsNumber.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsNumber.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsNumber.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsNumber.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsReference.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsReference.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsReference.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsReference.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsString.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsString.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/JsString.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/JsString.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/Promise.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/Promise.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/Promise.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/Promise.kt
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/annotations.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/annotations.kt
similarity index 78%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/annotations.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/annotations.kt
index acd44af..7888e49 100644
--- a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/annotations.kt
+++ b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/annotations.kt
@@ -6,27 +6,6 @@
 package kotlin.js
 
 /**
- * Marks API related to interoperability with JS as experimental.
- *
- * Note that the behavior of such API may be changed in the future.
- *
- * Usages of such API will be reported as warnings unless an explicit opt-in with
- * the [OptIn] annotation, e.g. `@OptIn(ExperimentalWasmJsInterop::class)`,
- * or with the `-opt-in=kotlin.js.ExperimentalWasmJsInterop` compiler option is given.
- */
-@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
-@MustBeDocumented
-@Retention(AnnotationRetention.BINARY)
-@SinceKotlin("2.2")
-@Target(
-    AnnotationTarget.CLASS,
-    AnnotationTarget.FUNCTION,
-    AnnotationTarget.PROPERTY,
-    AnnotationTarget.TYPEALIAS
-)
-public annotation class ExperimentalWasmJsInterop
-
-/**
  * Denotes an `external` declaration that must be imported from JavaScript module.
  *
  * The annotation can be used on top-level external declarations (classes, properties, functions) and files.
diff --git a/libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/core.kt b/libraries/stdlib/common-js-wasmjs/src/kotlin/js/core.kt
similarity index 100%
rename from libraries/stdlib/jsAndWasmJsCommon/src/kotlin/js/core.kt
rename to libraries/stdlib/common-js-wasmjs/src/kotlin/js/core.kt
diff --git a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts
index 083bd03e..5fbfad8 100644
--- a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts
+++ b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts
@@ -108,17 +108,18 @@
     into(layout.buildDirectory.dir("commonNonJvmMainSources"))
 }
 
-val jsAndWasmJsCommonSources by task<Sync> {
-    val jsAndWasmJsDir = file("$rootDir/libraries/stdlib/jsAndWasmJsCommon")
+val commonJsAndWasmJsSources by task<Sync> {
+    val jsAndWasmJsDir = file("$rootDir/libraries/stdlib/common-js-wasmjs")
 
     from("$jsAndWasmJsDir/src") {
         include(
             "kotlin/js/annotations.kt",
+            "kotlin/js/ExperimentalWasmJsInterop.kt",
             "kotlin/js/core.kt",
         )
     }
 
-    into(layout.buildDirectory.dir("jsAndWasmJsCommon"))
+    into(layout.buildDirectory.dir("commonJsAndWasmJsSources"))
 }
 
 val jsMainSources by task<Sync> {
@@ -186,12 +187,12 @@
             dependsOn(commonMain)
             kotlin.srcDir(files(commonNonJvmMainSources.map { it.destinationDir }))
         }
-        val jsAndWasmJsCommon by creating {
+        val commonJsAndWasmJs by creating {
             dependsOn(commonMain)
-            kotlin.srcDir(files(jsAndWasmJsCommonSources.map { it.destinationDir }))
+            kotlin.srcDir(files(commonJsAndWasmJsSources.map { it.destinationDir }))
         }
         named("jsMain") {
-            dependsOn(jsAndWasmJsCommon)
+            dependsOn(commonJsAndWasmJs)
             dependsOn(commonNonJvmMain)
             kotlin.srcDir(files(jsMainSources.map { it.destinationDir }))
             kotlin.srcDir("js-src")
diff --git a/libraries/tools/kotlin-stdlib-docs/build.gradle.kts b/libraries/tools/kotlin-stdlib-docs/build.gradle.kts
index 4589e8b..cfa4cb8 100644
--- a/libraries/tools/kotlin-stdlib-docs/build.gradle.kts
+++ b/libraries/tools/kotlin-stdlib-docs/build.gradle.kts
@@ -139,6 +139,10 @@
                 sourceRoots.from("$kotlin_stdlib_dir/js/src/kotlin")
 
                 sourceRoots.from("$kotlin_stdlib_dir/js/builtins")
+                // We don't generate docs for the intermediate webMain source set, so to make
+                // regular declarations from it visible, they are explicitly included in js and wasm-js source sets.
+                sourceRoots.from("$kotlin_stdlib_dir/common-js-wasmjs/src/kotlin/JsInterop.kt")
+                sourceRoots.from("$kotlin_stdlib_dir/common-js-wasmjs/src/kotlin/js/ExperimentalWasmJsInterop.kt")
 
                 // builtin sources that are copied from common builtins during JS stdlib build
                 listOf(
@@ -188,6 +192,10 @@
                 sourceRoots.from("$kotlin_stdlib_dir/wasm/js/builtins")
                 sourceRoots.from("$kotlin_stdlib_dir/wasm/js/internal")
                 sourceRoots.from("$kotlin_stdlib_dir/wasm/js/src")
+                // We don't generate docs for the intermediate webMain source set, so to make
+                // regular declarations from it visible, they are explicitly included in js and wasm-js source sets.
+                sourceRoots.from("$kotlin_stdlib_dir/common-js-wasmjs/src/kotlin/JsInterop.kt")
+                sourceRoots.from("$kotlin_stdlib_dir/common-js-wasmjs/src/kotlin/js/ExperimentalWasmJsInterop.kt")
 
                 // builtin sources that are copied from common builtins during Wasm stdlib build
                 listOf(
@@ -613,4 +621,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}