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)
}