github.com/niko0xdev/gqlgen@v0.17.55-0.20240120102243-2ecff98c3e37/plugin/plugin.go (about)

     1  // plugin package interfaces are EXPERIMENTAL.
     2  
     3  package plugin
     4  
     5  import (
     6  	"github.com/vektah/gqlparser/v2/ast"
     7  
     8  	"github.com/niko0xdev/gqlgen/codegen"
     9  	"github.com/niko0xdev/gqlgen/codegen/config"
    10  )
    11  
    12  type Plugin interface {
    13  	Name() string
    14  }
    15  
    16  type ConfigMutator interface {
    17  	MutateConfig(cfg *config.Config) error
    18  }
    19  
    20  type CodeGenerator interface {
    21  	GenerateCode(cfg *codegen.Data) error
    22  }
    23  
    24  // EarlySourceInjector is used to inject things that are required for user schema files to compile.
    25  type EarlySourceInjector interface {
    26  	InjectSourceEarly() *ast.Source
    27  }
    28  
    29  // LateSourceInjector is used to inject more sources, after we have loaded the users schema.
    30  type LateSourceInjector interface {
    31  	InjectSourceLate(schema *ast.Schema) *ast.Source
    32  }
    33  
    34  // ResolverImplementer is used to generate code inside resolvers
    35  type ResolverImplementer interface {
    36  	Implement(field *codegen.Field) string
    37  }