override fun toCode()

in build-logic/generatorlegacybuild/src/main/kotlin/karakum/query/Interface.kt [35:89]


    override fun toCode(): String {
        if (name in SKIPPED_INTERFACES)
            return ""

        val extends = parentType?.let {
            val parent = it
                .replace("BaseResult<", "Result<")
                .replace(
                    "FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>",
                    "FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey, Void>",
                )

            ":\n$parent"
        } ?: ""

        when (name) {
            "QueryMeta",
            "MutationMeta",
                -> {
                return "external interface $name : Record<String, Any>"
            }

            "FetchMeta" -> {
                check(source == FETCH_META_SOURCE)
                return FETCH_META_CODE
            }

            "HydrateOptions" -> {
                check(source == HYDRATE_OPTIONS_SOURCE)
                return HYDRATE_OPTIONS_CODE
            }
        }

        val body = when {
            name.startsWith("MutationObserver")
                -> content.replaceFirst("status: QueryStatus", "status: MutationStatus")

            name.startsWith("NotifyEvent")
                -> content.replaceFirst("type: Type /*", "type: NotifyEventType /*")

            name.startsWith("UseSuspense") || name.startsWith("UsePrefetch")
                -> "/* $content */"

            else -> content
        }

        val annotations = when (type) {
            InterfaceType.PROPS,
                -> ""

            InterfaceType.JSO,
                -> "@JsPlainObject\n"
        }
        return "${annotations}external interface $name ${formatParameters(typeParameters)} $extends {\n$body\n}"
    }