override fun generate()

in kotlin-node/karakum/src/jsMain/kotlin/node/karakum/plugins/ResourceRecordTypePlugin.kt [101:138]


    override fun generate(context: Context, render: Render<Node>): ReadonlyArray<GeneratedFile> {
        val name = "ResourceRecordType"

        val body = rrtypes.joinToString("\n") {
            val marker = if (it in stringRrtypes) "StringRecord" else ""

            "sealed interface $it : $name${ifPresent(marker) { ", $marker"}}"
        }

        val companionBody = rrtypes.joinToString("\n") {
            """
                @seskar.js.JsValue("$it")
                val ${it}: $it
            """.trimIndent()
        }

        val fileBody = """
            sealed external interface $name {

            sealed interface StringRecord : $name

            $body

            companion object {
            $companionBody
            }
            }
        """.trimIndent()

        val declaration = DerivedDeclaration(
            sourceFileName,
            namespace,
            fileName = "${name}.kt",
            fileBody,
        )

        return generateDerivedDeclarations(promiseApiDeclarations.toTypedArray() + declaration, context)
    }