in kotlin-node/karakum/src/jsMain/kotlin/node/karakum/plugins/InspectorSessionMethodPlugin.kt [68:103]
override fun generate(context: Context, render: Render<Node>): ReadonlyArray<GeneratedFile> {
val name = "SessionMethod"
val entries = methods.map { eventName ->
val key = constIdentifier(eventName)
key to eventName
}
val body = entries.joinToString("\n") { (key) -> "sealed interface $key : $name" }
val companionBody = entries.joinToString("\n") { (key, value) ->
"""
@seskar.js.JsValue("$value")
val ${key}: $key
""".trimIndent()
}
val fileBody = """
sealed external interface $name {
$body
companion object {
$companionBody
}
}
""".trimIndent()
val declaration = DerivedDeclaration(
sourceFileName,
namespace,
fileName = "${name}.kt",
fileBody,
)
return generateDerivedDeclarations(arrayOf(declaration), context)
}