override fun generate()

in kotlin-node/karakum/src/jsMain/kotlin/node/karakum/plugins/AmbiguousSignaturePlugin.kt [265:308]


    override fun generate(context: Context, render: Render<Node>): ReadonlyArray<GeneratedFile> {
        val typeScriptService = context.lookupService(typeScriptServiceKey) ?: return emptyArray()
        val namespaceInfoService = context.lookupService(namespaceInfoServiceKey) ?: return emptyArray()

        val declarations = getAmbiguousDeclarations(context)
            .flatMap { declaration ->
                val sourceFileName = declaration.getSourceFileOrNull()?.fileName ?: "generated.d.ts"
                val namespace = typeScriptService.findClosestNamespace(declaration)

                val name = declaration.name?.text ?: "Anonymous"

                if (
                    namespace != null
                    && namespaceInfoService.resolveNamespaceStrategy(namespace) == NamespaceStrategy.`object`
                ) {
                    return@flatMap emptyList()
                }

                buildList {
                    val (body, suspendBody) = renderAmbiguousDeclaration(declaration, "external ", context, render)
                    add(
                        DerivedDeclaration(
                            sourceFileName,
                            namespace,
                            fileName = "${name}.kt",
                            body,
                        )
                    )
                    suspendBody?.let {
                        add(
                            DerivedDeclaration(
                                sourceFileName,
                                namespace,
                                fileName = "${name}.suspend.kt",
                                body = suspendBody,
                            )
                        )
                    }
                }
            }
            .toTypedArray()

        return generateDerivedDeclarations(declarations, context)
    }