github.com/99designs/gqlgen@v0.17.45/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/99designs/gqlgen/codegen" 9 "github.com/99designs/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 }