Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[⚙️compiler] Add KDoc + remove hooks + API tweaks #5591

Merged
merged 8 commits into from
Feb 5, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
41 changes: 30 additions & 11 deletions libraries/apollo-compiler/api/apollo-compiler.api
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ public final class com/apollographql/apollo3/compiler/ApolloCompiler {
public final fun buildCodegenSchema (Ljava/util/List;Lcom/apollographql/apollo3/compiler/ApolloCompiler$Logger;Lcom/apollographql/apollo3/compiler/CodegenSchemaOptions;)Lcom/apollographql/apollo3/compiler/CodegenSchema;
public final fun buildExecutableSchemaSources (Lcom/apollographql/apollo3/compiler/CodegenSchema;Lcom/apollographql/apollo3/compiler/CodegenMetadata;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
public final fun buildIrOperations (Lcom/apollographql/apollo3/compiler/CodegenSchema;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lcom/apollographql/apollo3/compiler/IrOptions;Lcom/apollographql/apollo3/compiler/ApolloCompiler$Logger;)Lcom/apollographql/apollo3/compiler/ir/IrOperations;
public final fun buildSchemaAndOperationsSources (Ljava/util/List;Ljava/util/List;Lcom/apollographql/apollo3/compiler/CodegenSchemaOptions;Lcom/apollographql/apollo3/compiler/IrOptions;Lcom/apollographql/apollo3/compiler/CodegenOptions;Lcom/apollographql/apollo3/compiler/LayoutFactory;Lcom/apollographql/apollo3/compiler/OperationOutputGenerator;Ljava/util/List;Ljava/util/List;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/ApolloCompiler$Logger;Ljava/io/File;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
public final fun buildSchemaAndOperationsSourcesFromIr (Lcom/apollographql/apollo3/compiler/CodegenSchema;Lcom/apollographql/apollo3/compiler/ir/IrOperations;Ljava/util/Map;Ljava/util/List;Lcom/apollographql/apollo3/compiler/CodegenOptions;Lcom/apollographql/apollo3/compiler/codegen/SchemaAndOperationsLayout;Lcom/apollographql/apollo3/compiler/OperationOutputGenerator;Ljava/util/List;Ljava/util/List;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Ljava/io/File;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
public final fun buildSchemaSources (Lcom/apollographql/apollo3/compiler/CodegenSchema;Ljava/util/Map;Lcom/apollographql/apollo3/compiler/CodegenOptions;Lcom/apollographql/apollo3/compiler/codegen/SchemaLayout;Ljava/util/List;Ljava/util/List;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
public final fun buildSchemaAndOperationsSources (Ljava/util/List;Ljava/util/List;Lcom/apollographql/apollo3/compiler/CodegenSchemaOptions;Lcom/apollographql/apollo3/compiler/IrOptions;Lcom/apollographql/apollo3/compiler/CodegenOptions;Lcom/apollographql/apollo3/compiler/LayoutFactory;Lcom/apollographql/apollo3/compiler/OperationOutputGenerator;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/ApolloCompiler$Logger;Ljava/io/File;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
public final fun buildSchemaAndOperationsSourcesFromIr (Lcom/apollographql/apollo3/compiler/CodegenSchema;Lcom/apollographql/apollo3/compiler/ir/IrOperations;Ljava/util/Map;Ljava/util/List;Lcom/apollographql/apollo3/compiler/CodegenOptions;Lcom/apollographql/apollo3/compiler/codegen/SchemaAndOperationsLayout;Lcom/apollographql/apollo3/compiler/OperationOutputGenerator;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;Ljava/io/File;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
public final fun buildSchemaSources (Lcom/apollographql/apollo3/compiler/CodegenSchema;Ljava/util/Map;Lcom/apollographql/apollo3/compiler/CodegenOptions;Lcom/apollographql/apollo3/compiler/codegen/SchemaLayout;Lcom/apollographql/apollo3/compiler/Transform;Lcom/apollographql/apollo3/compiler/Transform;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
}

public abstract interface class com/apollographql/apollo3/compiler/ApolloCompiler$Logger {
Expand All @@ -24,6 +24,14 @@ public final class com/apollographql/apollo3/compiler/ApolloCompilerKt {
public static final fun toInputFiles (Ljava/util/Collection;)Ljava/util/List;
}

public final class com/apollographql/apollo3/compiler/CodegenMetadata {
public static final field Companion Lcom/apollographql/apollo3/compiler/CodegenMetadata$Companion;
public fun <init> (Lcom/apollographql/apollo3/compiler/TargetLanguage;Ljava/util/List;)V
public final fun getEntries ()Ljava/util/List;
public final fun getTargetLanguage ()Lcom/apollographql/apollo3/compiler/TargetLanguage;
public final fun plus (Lcom/apollographql/apollo3/compiler/CodegenMetadata;)Lcom/apollographql/apollo3/compiler/CodegenMetadata;
}

public final class com/apollographql/apollo3/compiler/CodegenMetadata$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/apollographql/apollo3/compiler/CodegenMetadata$$serializer;
public fun childSerializers ()[Lkotlinx/serialization/KSerializer;
Expand Down Expand Up @@ -300,7 +308,7 @@ public final class com/apollographql/apollo3/compiler/OperationIdGenerator$Sha25

public abstract interface class com/apollographql/apollo3/compiler/OperationOutputGenerator {
public abstract fun generate (Ljava/util/Collection;)Ljava/util/Map;
public abstract fun getVersion ()Ljava/lang/String;
public fun getVersion ()Ljava/lang/String;
}

public final class com/apollographql/apollo3/compiler/OperationOutputGenerator$Default : com/apollographql/apollo3/compiler/OperationOutputGenerator {
Expand Down Expand Up @@ -328,8 +336,6 @@ public final class com/apollographql/apollo3/compiler/OptionsKt {
public static final field MODELS_OPERATION_BASED Ljava/lang/String;
public static final field MODELS_OPERATION_BASED_WITH_INTERFACES Ljava/lang/String;
public static final field MODELS_RESPONSE_BASED Ljava/lang/String;
public static final field defaultDecapitalizeFields Z
public static final field defaultUseSemanticNaming Z
public static final fun buildCodegenOptions (Lcom/apollographql/apollo3/compiler/TargetLanguage;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/String;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Boolean;Lcom/apollographql/apollo3/compiler/JavaNullable;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/String;)Lcom/apollographql/apollo3/compiler/CodegenOptions;
public static synthetic fun buildCodegenOptions$default (Lcom/apollographql/apollo3/compiler/TargetLanguage;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/String;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Boolean;Lcom/apollographql/apollo3/compiler/JavaNullable;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/apollographql/apollo3/compiler/CodegenOptions;
public static final fun buildCodegenSchemaOptions (Ljava/util/Map;Ljava/lang/Boolean;)Lcom/apollographql/apollo3/compiler/CodegenSchemaOptions;
Expand All @@ -340,19 +346,17 @@ public final class com/apollographql/apollo3/compiler/OptionsKt {
}

public abstract interface class com/apollographql/apollo3/compiler/PackageNameGenerator {
public abstract fun getVersion ()Ljava/lang/String;
public fun getVersion ()Ljava/lang/String;
public abstract fun packageName (Ljava/lang/String;)Ljava/lang/String;
}

public final class com/apollographql/apollo3/compiler/PackageNameGenerator$Flat : com/apollographql/apollo3/compiler/PackageNameGenerator {
public fun <init> (Ljava/lang/String;)V
public fun getVersion ()Ljava/lang/String;
public fun packageName (Ljava/lang/String;)Ljava/lang/String;
}

public final class com/apollographql/apollo3/compiler/PackageNameGenerator$NormalizedPathAware : com/apollographql/apollo3/compiler/PackageNameGenerator {
public fun <init> (Ljava/lang/String;)V
public fun getVersion ()Ljava/lang/String;
public fun packageName (Ljava/lang/String;)Ljava/lang/String;
}

Expand Down Expand Up @@ -428,15 +432,15 @@ public final class com/apollographql/apollo3/compiler/VersionKt {
}

public abstract interface class com/apollographql/apollo3/compiler/codegen/CommonLayout {
public abstract fun className (Ljava/lang/String;)Ljava/lang/String;
public abstract fun propertyName (Ljava/lang/String;)Ljava/lang/String;
public abstract fun topLevelName (Ljava/lang/String;)Ljava/lang/String;
}

public abstract interface class com/apollographql/apollo3/compiler/codegen/ExecutableSchemaLayout : com/apollographql/apollo3/compiler/codegen/SchemaLayout {
}

public final class com/apollographql/apollo3/compiler/codegen/LayoutImplKt {
public static final fun SchemaAndOperationsLayout (Lcom/apollographql/apollo3/compiler/CodegenSchema;Lcom/apollographql/apollo3/compiler/PackageNameGenerator;ZZ)Lcom/apollographql/apollo3/compiler/codegen/SchemaAndOperationsLayout;
public static final fun SchemaAndOperationsLayout (Lcom/apollographql/apollo3/compiler/CodegenSchema;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;)Lcom/apollographql/apollo3/compiler/codegen/SchemaAndOperationsLayout;
}

public abstract interface class com/apollographql/apollo3/compiler/codegen/OperationsLayout : com/apollographql/apollo3/compiler/codegen/CommonLayout {
Expand All @@ -445,6 +449,14 @@ public abstract interface class com/apollographql/apollo3/compiler/codegen/Opera
public abstract fun operationName (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
}

public final class com/apollographql/apollo3/compiler/codegen/ResolverClassName {
public static final field Companion Lcom/apollographql/apollo3/compiler/codegen/ResolverClassName$Companion;
public fun <init> (Ljava/lang/String;Ljava/util/List;)V
public fun <init> (Ljava/lang/String;[Ljava/lang/String;)V
public final fun getPackageName ()Ljava/lang/String;
public final fun getSimpleNames ()Ljava/util/List;
}

public final class com/apollographql/apollo3/compiler/codegen/ResolverClassName$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/apollographql/apollo3/compiler/codegen/ResolverClassName$$serializer;
public fun childSerializers ()[Lkotlinx/serialization/KSerializer;
Expand Down Expand Up @@ -537,6 +549,9 @@ public abstract interface class com/apollographql/apollo3/compiler/codegen/Schem
}

public abstract interface class com/apollographql/apollo3/compiler/codegen/SchemaLayout : com/apollographql/apollo3/compiler/codegen/CommonLayout {
public abstract fun assertionsName ()Ljava/lang/String;
public abstract fun paginationName ()Ljava/lang/String;
public abstract fun schemaName ()Ljava/lang/String;
public abstract fun schemaPackageName ()Ljava/lang/String;
public abstract fun schemaTypeName (Ljava/lang/String;)Ljava/lang/String;
}
Expand Down Expand Up @@ -603,6 +618,10 @@ public final class com/apollographql/apollo3/compiler/codegen/kotlin/KotlinOutpu
public static final fun toSourceOutput (Lcom/apollographql/apollo3/compiler/codegen/kotlin/KotlinOutput;)Lcom/apollographql/apollo3/compiler/codegen/SourceOutput;
}

public final class com/apollographql/apollo3/compiler/codegen/kotlin/helpers/Add_internalKt {
public static final fun addInternal (Lcom/squareup/kotlinpoet/FileSpec$Builder;Ljava/util/List;)Lcom/squareup/kotlinpoet/FileSpec$Builder;
}

public final class com/apollographql/apollo3/compiler/ir/IrCatchTo$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ import com.apollographql.apollo3.compiler.codegen.kotlin.KotlinCodegen
import com.apollographql.apollo3.compiler.codegen.kotlin.KotlinOutput
import com.apollographql.apollo3.compiler.codegen.kotlin.toSourceOutput
import com.apollographql.apollo3.compiler.codegen.plus
import com.apollographql.apollo3.compiler.hooks.ApolloCompilerJavaHooks
import com.apollographql.apollo3.compiler.hooks.ApolloCompilerKotlinHooks
import com.apollographql.apollo3.compiler.internal.addRequiredFields
import com.apollographql.apollo3.compiler.internal.checkApolloInlineFragmentsHaveTypeCondition
import com.apollographql.apollo3.compiler.internal.checkApolloReservedEnumValueNames
Expand Down Expand Up @@ -323,8 +321,6 @@ object ApolloCompiler {
usedCoordinates: UsedCoordinates?,
codegenOptions: CodegenOptions,
schemaLayout: SchemaLayout?,
compilerKotlinHooks: List<ApolloCompilerKotlinHooks>?,
compilerJavaHooks: List<ApolloCompilerJavaHooks>?,
javaOutputTransform: Transform<JavaOutput>?,
kotlinOutputTransform: Transform<KotlinOutput>?,
): SourceOutput {
Expand All @@ -333,11 +329,13 @@ object ApolloCompiler {
val targetLanguage = defaultTargetLanguage(codegenOptions.targetLanguage, emptyList())
codegenOptions.validate()

val layout = schemaLayout ?: LayoutImpl(
val layout = schemaLayout ?: SchemaAndOperationsLayout(
codegenSchema = codegenSchema,
packageNameGenerator = packageNameGenerator(codegenOptions.packageName, codegenOptions.rootPackageName),
useSemanticNaming = codegenOptions.useSemanticNaming ?: defaultUseSemanticNaming,
decapitalizeFields = codegenOptions.decapitalizeFields ?: defaultDecapitalizeFields
packageName = codegenOptions.packageName,
rootPackageName = codegenOptions.rootPackageName,
useSemanticNaming = codegenOptions.useSemanticNaming ,
decapitalizeFields = codegenOptions.decapitalizeFields,
generatedSchemaName = codegenOptions.generatedSchemaName,
)

return if (targetLanguage == TargetLanguage.JAVA) {
Expand All @@ -346,7 +344,6 @@ object ApolloCompiler {
irSchema = irSchema,
codegenOptions = codegenOptions,
layout = layout,
compilerJavaHooks = compilerJavaHooks ?: defaultCompilerJavaHooks,
javaOutputTransform = javaOutputTransform
).toSourceOutput()
} else {
Expand All @@ -356,7 +353,6 @@ object ApolloCompiler {
irSchema = irSchema,
codegenOptions = codegenOptions,
layout = layout,
compilerKotlinHooks = compilerKotlinHooks ?: defaultCompilerKotlinHooks,
kotlinOutputTransform = kotlinOutputTransform
).toSourceOutput()
}
Expand All @@ -370,8 +366,6 @@ object ApolloCompiler {
codegenOptions: CodegenOptions,
layout: SchemaAndOperationsLayout?,
operationOutputGenerator: OperationOutputGenerator?,
compilerKotlinHooks: List<ApolloCompilerKotlinHooks>?,
compilerJavaHooks: List<ApolloCompilerJavaHooks>?,
irOperationsTransform: Transform<IrOperations>?,
javaOutputTransform: Transform<JavaOutput>?,
kotlinOutputTransform: Transform<KotlinOutput>?,
Expand Down Expand Up @@ -414,11 +408,13 @@ object ApolloCompiler {


@Suppress("NAME_SHADOWING")
val layout = layout ?: LayoutImpl(
val layout = layout ?: SchemaAndOperationsLayout(
codegenSchema = codegenSchema,
packageNameGenerator = packageNameGenerator(codegenOptions.packageName, codegenOptions.rootPackageName),
useSemanticNaming = codegenOptions.useSemanticNaming ?: defaultUseSemanticNaming,
decapitalizeFields = codegenOptions.decapitalizeFields ?: defaultDecapitalizeFields
packageName = codegenOptions.packageName,
rootPackageName = codegenOptions.rootPackageName,
useSemanticNaming = codegenOptions.useSemanticNaming,
decapitalizeFields = codegenOptions.decapitalizeFields,
generatedSchemaName = codegenOptions.generatedSchemaName,
)

var sourceOutput: SourceOutput? = null
Expand All @@ -428,8 +424,6 @@ object ApolloCompiler {
usedCoordinates = downstreamUsedCoordinates?.mergeWith(irOperations.usedFields),
codegenOptions = codegenOptions,
schemaLayout = layout,
compilerKotlinHooks = compilerKotlinHooks,
compilerJavaHooks = compilerJavaHooks,
javaOutputTransform = javaOutputTransform,
kotlinOutputTransform = kotlinOutputTransform,
)
Expand All @@ -442,7 +436,6 @@ object ApolloCompiler {
upstreamCodegenMetadata = upstreamCodegenMetadata + listOfNotNull(sourceOutput?.codegenMetadata),
codegenOptions = codegenOptions,
layout = layout,
compilerJavaHooks = compilerJavaHooks,
javaOutputTransform = javaOutputTransform,
).toSourceOutput()
} else {
Expand All @@ -454,7 +447,6 @@ object ApolloCompiler {
upstreamCodegenMetadata = upstreamCodegenMetadata + listOfNotNull(sourceOutput?.codegenMetadata),
codegenOptions = codegenOptions,
layout = layout,
compilerKotlinHooks = compilerKotlinHooks,
kotlinOutputTransform = kotlinOutputTransform
).toSourceOutput()
}
Expand All @@ -473,8 +465,6 @@ object ApolloCompiler {
codegenOptions: CodegenOptions,
layoutFactory: LayoutFactory?,
operationOutputGenerator: OperationOutputGenerator?,
compilerJavaHooks: List<ApolloCompilerJavaHooks>?,
compilerKotlinHooks: List<ApolloCompilerKotlinHooks>?,
irOperationsTransform: Transform<IrOperations>?,
javaOutputTransform: Transform<JavaOutput>?,
kotlinOutputTransform: Transform<KotlinOutput>?,
Expand Down Expand Up @@ -503,8 +493,6 @@ object ApolloCompiler {
upstreamCodegenMetadata = emptyList(),
codegenOptions = codegenOptions,
layout = layoutFactory?.create(codegenSchema),
compilerJavaHooks = compilerJavaHooks,
compilerKotlinHooks = compilerKotlinHooks,
irOperationsTransform = irOperationsTransform,
javaOutputTransform = javaOutputTransform,
kotlinOutputTransform = kotlinOutputTransform,
Expand All @@ -523,11 +511,13 @@ object ApolloCompiler {
serviceName: String,
): SourceOutput {
val layout = LayoutImpl(
codegenSchema,
PackageNameGenerator.Flat(packageName),
false,
false
codegenSchema = codegenSchema,
packageNameGenerator = PackageNameGenerator.Flat(packageName),
useSemanticNaming = null,
decapitalizeFields = null,
generatedSchemaName = null,
)

return KotlinCodegen.buildExecutableSchema(
codegenSchema = codegenSchema,
codegenMetadata = codegenMetadata,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import com.apollographql.apollo3.compiler.codegen.ResolverKeyKind
import kotlinx.serialization.Serializable

/**
* resolver info used by the codegen to lookup already existing ClassNames
* [CodegenMetadata] contains information about what target classes were generated for each GraphQL types
* so that downstream modules can reuse them.
*/
@Serializable
@ApolloInternal
class CodegenMetadata(
val targetLanguage: TargetLanguage,
val entries: List<ResolverEntry>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ interface OperationOutputGenerator {
* When using the compiler outside a Gradle context, [version] is not used, making it the empty string is fine.
*/
val version: String
get() = error("Use Apollo compiler plugins instead of passing operationOutputGenerator from your Gradle classpath")

class Default(private val operationIdGenerator: OperationIdGenerator) : OperationOutputGenerator {
override fun generate(operationDescriptorList: Collection<OperationDescriptor>): OperationOutput {
Expand Down