Documentation ¶
Index ¶
- Constants
- Variables
- func CreateTypeFieldArgumentsLookupMap(typeFieldArgs []TypeFieldArguments) map[TypeFieldLookupKey]TypeFieldArguments
- func UnmarshalHttpRequest(r *http.Request, request *Request) error
- func UnmarshalRequest(reader io.Reader, request *Request) error
- type ComplexityCalculator
- type ComplexityResult
- type DataSourceConfiguration
- type DataSourceV2GeneratorOption
- type DefaultFieldsValidator
- func (d DefaultFieldsValidator) Validate(request *Request, schema *Schema, restrictions []Type) (RequestFieldsValidationResult, error)deprecated
- func (d DefaultFieldsValidator) ValidateByFieldList(request *Request, schema *Schema, restrictionList FieldRestrictionList) (RequestFieldsValidationResult, error)
- type EngineResultWriter
- func (e *EngineResultWriter) AsHTTPResponse(status int, headers http.Header) *http.Response
- func (e *EngineResultWriter) Bytes() []byte
- func (e *EngineResultWriter) Complete()
- func (e *EngineResultWriter) Flush() error
- func (e *EngineResultWriter) Len() int
- func (e *EngineResultWriter) Read(p []byte) (n int, err error)
- func (e *EngineResultWriter) Reset()
- func (e *EngineResultWriter) SetFlushCallback(flushCb func(data []byte))
- func (e *EngineResultWriter) String() string
- func (e *EngineResultWriter) Write(p []byte) (n int, err error)
- type EngineV2Configuration
- func (e *EngineV2Configuration) AddDataSource(dataSource plan.DataSource)
- func (e *EngineV2Configuration) AddFieldConfiguration(fieldConfig plan.FieldConfiguration)
- func (e *EngineV2Configuration) DataSources() []plan.DataSource
- func (e *EngineV2Configuration) EnableSingleFlight(enable bool)
- func (e *EngineV2Configuration) FieldConfigurations() plan.FieldConfigurations
- func (e *EngineV2Configuration) SetCustomResolveMap(customResolveMap map[string]resolve.CustomResolve)
- func (e *EngineV2Configuration) SetDataSources(dataSources []plan.DataSource)
- func (e *EngineV2Configuration) SetFieldConfigurations(fieldConfigs plan.FieldConfigurations)
- func (e *EngineV2Configuration) SetWebsocketBeforeStartHook(hook WebsocketBeforeStartHook)
- type ErrorPath
- type Errors
- type ExecutionEngineV2
- type ExecutionOptionsV2
- type Extractor
- type FederationEngineConfigFactory
- type FederationEngineConfigFactoryOption
- func WithCustomResolveMap(customResolveMap map[string]resolve.CustomResolve) FederationEngineConfigFactoryOption
- func WithFederationHttpClient(client *http.Client) FederationEngineConfigFactoryOption
- func WithFederationStreamingClient(client *http.Client) FederationEngineConfigFactoryOption
- func WithFederationSubscriptionClientFactory(factory graphqlDataSource.GraphQLSubscriptionClientFactory) FederationEngineConfigFactoryOption
- func WithFederationSubscriptionType(subscriptionType SubscriptionType) FederationEngineConfigFactoryOption
- type FieldComplexityResult
- type FieldRestrictionList
- type FieldRestrictionListKind
- type FieldRestrictionValidator
- type NormalizationResult
- type OperationType
- type ProxyEngineConfigFactory
- type ProxyEngineConfigFactoryOption
- func WithDataSourceID(id string) ProxyEngineConfigFactoryOption
- func WithProxyHttpClient(client *http.Client) ProxyEngineConfigFactoryOption
- func WithProxyStreamingClient(client *http.Client) ProxyEngineConfigFactoryOption
- func WithProxySubscriptionClientFactory(factory graphqlDataSource.GraphQLSubscriptionClientFactory) ProxyEngineConfigFactoryOption
- type ProxyUpstreamConfig
- type Request
- func (r *Request) CalculateComplexity(complexityCalculator ComplexityCalculator, schema *Schema) (ComplexityResult, error)
- func (r *Request) IsIntrospectionQuery() (result bool, err error)
- func (r *Request) IsNormalized() bool
- func (r *Request) Normalize(schema *Schema) (result NormalizationResult, err error)
- func (r *Request) OperationType() (OperationType, error)
- func (r Request) Print(writer io.Writer) (n int, err error)
- func (r *Request) SetHeader(header http.Header)
- func (r *Request) ValidateFieldRestrictions(schema *Schema, restrictedFieldsList FieldRestrictionList, ...) (RequestFieldsValidationResult, error)
- func (r *Request) ValidateForSchema(schema *Schema) (result ValidationResult, err error)
- func (r *Request) ValidateRestrictedFields(schema *Schema, restrictedFields []Type) (RequestFieldsValidationResult, error)deprecated
- type RequestError
- type RequestErrors
- type RequestFields
- type RequestFieldsValidationResult
- type RequestFieldsValidator
- type RequestTypes
- type Response
- type Schema
- func (s *Schema) Document() []byte
- func (s *Schema) GetAllFieldArguments(skipFieldFuncs ...SkipFieldFunc) []TypeFieldArguments
- func (s *Schema) GetAllNestedFieldChildrenFromTypeField(typeName string, fieldName string, skipFieldFuncs ...SkipFieldFunc) []TypeFields
- func (s *Schema) HasMutationType() bool
- func (s *Schema) HasQueryType() bool
- func (s *Schema) HasSubscriptionType() bool
- func (s *Schema) Hash() uint64
- func (s *Schema) Input() []byte
- func (s *Schema) IsNormalized() bool
- func (s *Schema) MutationTypeName() string
- func (s *Schema) Normalize() (result NormalizationResult, err error)
- func (s *Schema) QueryTypeName() string
- func (s *Schema) SubscriptionTypeName() string
- func (s *Schema) Validate() (result ValidationResult, err error)
- type SchemaValidationError
- type SchemaValidationErrors
- type SkipFieldFunc
- type SubscriptionType
- type Type
- type TypeFieldArguments
- type TypeFieldLookupKey
- type TypeFields
- type ValidationResult
- type WebsocketBeforeStartHook
Constants ¶
const ( // SubscriptionTypeUnknown is for unknown or undefined subscriptions. SubscriptionTypeUnknown = iota // SubscriptionTypeSSE is for Server-Sent Events (SSE) subscriptions. SubscriptionTypeSSE // SubscriptionTypeGraphQLWS is for subscriptions using a WebSocket connection with // 'graphql-ws' as protocol. SubscriptionTypeGraphQLWS // SubscriptionTypeGraphQLTransportWS is for subscriptions using a WebSocket connection with // 'graphql-transport-ws' as protocol. SubscriptionTypeGraphQLTransportWS )
const (
DefaultFlushIntervalInMilliseconds = 1000
)
Variables ¶
var ( ErrEmptyRequest = errors.New("the provided request is empty") ErrNilSchema = errors.New("the provided schema is nil") )
var DefaultComplexityCalculator = defaultComplexityCalculator{}
Functions ¶
func CreateTypeFieldArgumentsLookupMap ¶
func CreateTypeFieldArgumentsLookupMap(typeFieldArgs []TypeFieldArguments) map[TypeFieldLookupKey]TypeFieldArguments
Types ¶
type ComplexityCalculator ¶
type ComplexityCalculator interface {
Calculate(operation, definition *ast.Document) (ComplexityResult, error)
}
type ComplexityResult ¶
type ComplexityResult struct { NodeCount int Complexity int Depth int PerRootField []FieldComplexityResult Errors Errors }
type DataSourceConfiguration ¶
type DataSourceConfiguration struct { ID string // ID of the data source which is used to identify the data source in the engine. Configuration graphqlDataSource.Configuration // Configuration fetch and schema related configuration for the data source. }
type DataSourceV2GeneratorOption ¶
type DataSourceV2GeneratorOption func(options *dataSourceV2GeneratorOptions)
func WithDataSourceV2GeneratorSubscriptionClientFactory ¶
func WithDataSourceV2GeneratorSubscriptionClientFactory(factory graphqlDataSource.GraphQLSubscriptionClientFactory) DataSourceV2GeneratorOption
func WithDataSourceV2GeneratorSubscriptionConfiguration ¶
func WithDataSourceV2GeneratorSubscriptionConfiguration(streamingClient *http.Client, subscriptionType SubscriptionType) DataSourceV2GeneratorOption
type DefaultFieldsValidator ¶
type DefaultFieldsValidator struct { }
func (DefaultFieldsValidator) Validate
deprecated
func (d DefaultFieldsValidator) Validate(request *Request, schema *Schema, restrictions []Type) (RequestFieldsValidationResult, error)
Validate validates a request by checking if `restrictions` contains blocked fields.
Deprecated: This function can only handle blocked fields. Use `ValidateByFieldList` if you want to check for blocked or allowed fields instead.
func (DefaultFieldsValidator) ValidateByFieldList ¶
func (d DefaultFieldsValidator) ValidateByFieldList(request *Request, schema *Schema, restrictionList FieldRestrictionList) (RequestFieldsValidationResult, error)
ValidateByFieldList will validate a request by using a list of allowed or blocked fields.
type EngineResultWriter ¶
type EngineResultWriter struct {
// contains filtered or unexported fields
}
func NewEngineResultWriter ¶
func NewEngineResultWriter() EngineResultWriter
func NewEngineResultWriterFromBuffer ¶
func NewEngineResultWriterFromBuffer(buf *bytes.Buffer) EngineResultWriter
func (*EngineResultWriter) AsHTTPResponse ¶
func (*EngineResultWriter) Bytes ¶
func (e *EngineResultWriter) Bytes() []byte
func (*EngineResultWriter) Complete ¶
func (e *EngineResultWriter) Complete()
func (*EngineResultWriter) Flush ¶
func (e *EngineResultWriter) Flush() error
func (*EngineResultWriter) Len ¶
func (e *EngineResultWriter) Len() int
func (*EngineResultWriter) Reset ¶
func (e *EngineResultWriter) Reset()
func (*EngineResultWriter) SetFlushCallback ¶
func (e *EngineResultWriter) SetFlushCallback(flushCb func(data []byte))
func (*EngineResultWriter) String ¶
func (e *EngineResultWriter) String() string
type EngineV2Configuration ¶
type EngineV2Configuration struct {
// contains filtered or unexported fields
}
func NewEngineV2Configuration ¶
func NewEngineV2Configuration(schema *Schema) EngineV2Configuration
func (*EngineV2Configuration) AddDataSource ¶
func (e *EngineV2Configuration) AddDataSource(dataSource plan.DataSource)
func (*EngineV2Configuration) AddFieldConfiguration ¶
func (e *EngineV2Configuration) AddFieldConfiguration(fieldConfig plan.FieldConfiguration)
func (*EngineV2Configuration) DataSources ¶
func (e *EngineV2Configuration) DataSources() []plan.DataSource
func (*EngineV2Configuration) EnableSingleFlight ¶
func (e *EngineV2Configuration) EnableSingleFlight(enable bool)
func (*EngineV2Configuration) FieldConfigurations ¶
func (e *EngineV2Configuration) FieldConfigurations() plan.FieldConfigurations
func (*EngineV2Configuration) SetCustomResolveMap ¶
func (e *EngineV2Configuration) SetCustomResolveMap(customResolveMap map[string]resolve.CustomResolve)
func (*EngineV2Configuration) SetDataSources ¶
func (e *EngineV2Configuration) SetDataSources(dataSources []plan.DataSource)
func (*EngineV2Configuration) SetFieldConfigurations ¶
func (e *EngineV2Configuration) SetFieldConfigurations(fieldConfigs plan.FieldConfigurations)
func (*EngineV2Configuration) SetWebsocketBeforeStartHook ¶
func (e *EngineV2Configuration) SetWebsocketBeforeStartHook(hook WebsocketBeforeStartHook)
SetWebsocketBeforeStartHook - sets before start hook which will be called before processing any operation sent over websockets
type ErrorPath ¶
type ErrorPath struct {
// contains filtered or unexported fields
}
func (*ErrorPath) MarshalJSON ¶
type ExecutionEngineV2 ¶
type ExecutionEngineV2 struct {
// contains filtered or unexported fields
}
func NewExecutionEngineV2 ¶
func NewExecutionEngineV2(ctx context.Context, logger abstractlogger.Logger, engineConfig EngineV2Configuration) (*ExecutionEngineV2, error)
func (*ExecutionEngineV2) Execute ¶
func (e *ExecutionEngineV2) Execute(ctx context.Context, operation *Request, writer resolve.SubscriptionResponseWriter, options ...ExecutionOptionsV2) error
func (*ExecutionEngineV2) GetWebsocketBeforeStartHook ¶
func (e *ExecutionEngineV2) GetWebsocketBeforeStartHook() WebsocketBeforeStartHook
type ExecutionOptionsV2 ¶
type ExecutionOptionsV2 func(ctx *internalExecutionContext)
func WithAdditionalHttpHeaders ¶
func WithAdditionalHttpHeaders(headers http.Header, excludeByKeys ...string) ExecutionOptionsV2
type Extractor ¶
type Extractor struct {
// contains filtered or unexported fields
}
func NewExtractor ¶
func NewExtractor() *Extractor
func (*Extractor) ExtractFieldsFromRequest ¶
func (e *Extractor) ExtractFieldsFromRequest(request *Request, schema *Schema, report *operationreport.Report, data RequestTypes)
type FederationEngineConfigFactory ¶
type FederationEngineConfigFactory struct {
// contains filtered or unexported fields
}
FederationEngineConfigFactory is used to create a v2 engine config for a supergraph with multiple data sources for subgraphs.
func NewFederationEngineConfigFactory ¶
func NewFederationEngineConfigFactory(engineCtx context.Context, dataSourceConfigs []DataSourceConfiguration, opts ...FederationEngineConfigFactoryOption) *FederationEngineConfigFactory
func (*FederationEngineConfigFactory) EngineV2Configuration ¶
func (f *FederationEngineConfigFactory) EngineV2Configuration() (conf EngineV2Configuration, err error)
func (*FederationEngineConfigFactory) MergedSchema ¶
func (f *FederationEngineConfigFactory) MergedSchema() (*Schema, error)
func (*FederationEngineConfigFactory) SetMergedSchemaFromString ¶
func (f *FederationEngineConfigFactory) SetMergedSchemaFromString(mergedSchema string) (err error)
type FederationEngineConfigFactoryOption ¶
type FederationEngineConfigFactoryOption func(options *federationEngineConfigFactoryOptions)
func WithCustomResolveMap ¶
func WithCustomResolveMap(customResolveMap map[string]resolve.CustomResolve) FederationEngineConfigFactoryOption
func WithFederationHttpClient ¶
func WithFederationHttpClient(client *http.Client) FederationEngineConfigFactoryOption
func WithFederationStreamingClient ¶
func WithFederationStreamingClient(client *http.Client) FederationEngineConfigFactoryOption
func WithFederationSubscriptionClientFactory ¶
func WithFederationSubscriptionClientFactory(factory graphqlDataSource.GraphQLSubscriptionClientFactory) FederationEngineConfigFactoryOption
func WithFederationSubscriptionType ¶
func WithFederationSubscriptionType(subscriptionType SubscriptionType) FederationEngineConfigFactoryOption
type FieldComplexityResult ¶
type FieldRestrictionList ¶
type FieldRestrictionList struct { Kind FieldRestrictionListKind Types []Type }
type FieldRestrictionListKind ¶
type FieldRestrictionListKind int
const ( AllowList FieldRestrictionListKind = iota BlockList )
type FieldRestrictionValidator ¶
type FieldRestrictionValidator interface {
ValidateByFieldList(request *Request, schema *Schema, restrictionList FieldRestrictionList) (RequestFieldsValidationResult, error)
}
type NormalizationResult ¶
type OperationType ¶
type OperationType ast.OperationType
const ( OperationTypeUnknown OperationType = OperationType(ast.OperationTypeUnknown) OperationTypeQuery OperationType = OperationType(ast.OperationTypeQuery) OperationTypeMutation OperationType = OperationType(ast.OperationTypeMutation) OperationTypeSubscription OperationType = OperationType(ast.OperationTypeSubscription) )
type ProxyEngineConfigFactory ¶
type ProxyEngineConfigFactory struct {
// contains filtered or unexported fields
}
ProxyEngineConfigFactory is used to create a v2 engine config with a single upstream and a single data source for this upstream.
func NewProxyEngineConfigFactory ¶
func NewProxyEngineConfigFactory(engineCtx context.Context, schema *Schema, proxyUpstreamConfig ProxyUpstreamConfig, opts ...ProxyEngineConfigFactoryOption) *ProxyEngineConfigFactory
func (*ProxyEngineConfigFactory) EngineV2Configuration ¶
func (p *ProxyEngineConfigFactory) EngineV2Configuration() (EngineV2Configuration, error)
type ProxyEngineConfigFactoryOption ¶
type ProxyEngineConfigFactoryOption func(options *proxyEngineConfigFactoryOptions)
func WithDataSourceID ¶
func WithDataSourceID(id string) ProxyEngineConfigFactoryOption
func WithProxyHttpClient ¶
func WithProxyHttpClient(client *http.Client) ProxyEngineConfigFactoryOption
func WithProxyStreamingClient ¶
func WithProxyStreamingClient(client *http.Client) ProxyEngineConfigFactoryOption
func WithProxySubscriptionClientFactory ¶
func WithProxySubscriptionClientFactory(factory graphqlDataSource.GraphQLSubscriptionClientFactory) ProxyEngineConfigFactoryOption
type ProxyUpstreamConfig ¶
type ProxyUpstreamConfig struct { URL string Method string StaticHeaders http.Header SubscriptionType SubscriptionType }
ProxyUpstreamConfig holds configuration to configure a single data source to a single upstream.
type Request ¶
type Request struct { OperationName string `json:"operationName"` Variables json.RawMessage `json:"variables,omitempty"` Query string `json:"query"` // contains filtered or unexported fields }
func (*Request) CalculateComplexity ¶
func (r *Request) CalculateComplexity(complexityCalculator ComplexityCalculator, schema *Schema) (ComplexityResult, error)
func (*Request) IsIntrospectionQuery ¶
func (*Request) IsNormalized ¶
func (*Request) Normalize ¶
func (r *Request) Normalize(schema *Schema) (result NormalizationResult, err error)
func (*Request) OperationType ¶
func (r *Request) OperationType() (OperationType, error)
func (*Request) ValidateFieldRestrictions ¶
func (r *Request) ValidateFieldRestrictions(schema *Schema, restrictedFieldsList FieldRestrictionList, validator FieldRestrictionValidator) (RequestFieldsValidationResult, error)
ValidateFieldRestrictions will validate a request by using a list of allowed or blocked fields.
func (*Request) ValidateForSchema ¶
func (r *Request) ValidateForSchema(schema *Schema) (result ValidationResult, err error)
func (*Request) ValidateRestrictedFields
deprecated
func (r *Request) ValidateRestrictedFields(schema *Schema, restrictedFields []Type) (RequestFieldsValidationResult, error)
ValidateRestrictedFields validates a request by checking if `restrictedFields` contains blocked fields.
Deprecated: This function can only handle blocked fields. Use `ValidateFieldRestrictions` if you want to check for blocked or allowed fields instead.
type RequestError ¶
type RequestError struct { Message string `json:"message"` Locations []graphqlerrors.Location `json:"locations,omitempty"` Path ErrorPath `json:"path"` }
func (RequestError) Error ¶
func (o RequestError) Error() string
func (RequestError) MarshalJSON ¶
func (o RequestError) MarshalJSON() ([]byte, error)
type RequestErrors ¶
type RequestErrors []RequestError
func RequestErrorsFromError ¶
func RequestErrorsFromError(err error) RequestErrors
func RequestErrorsFromOperationReport ¶
func RequestErrorsFromOperationReport(report operationreport.Report) (errors RequestErrors)
func (RequestErrors) Count ¶
func (o RequestErrors) Count() int
func (RequestErrors) Error ¶
func (o RequestErrors) Error() string
func (RequestErrors) ErrorByIndex ¶
func (o RequestErrors) ErrorByIndex(i int) error
func (RequestErrors) WriteResponse ¶
func (o RequestErrors) WriteResponse(writer io.Writer) (n int, err error)
type RequestFields ¶
type RequestFields map[string]struct{}
type RequestFieldsValidator ¶
type RequestFieldsValidator interface {
Validate(request *Request, schema *Schema, restrictions []Type) (RequestFieldsValidationResult, error)
}
type RequestTypes ¶
type RequestTypes map[string]RequestFields
type Response ¶
type Schema ¶
type Schema struct {
// contains filtered or unexported fields
}
func NewSchemaFromString ¶
func (*Schema) GetAllFieldArguments ¶
func (s *Schema) GetAllFieldArguments(skipFieldFuncs ...SkipFieldFunc) []TypeFieldArguments
func (*Schema) GetAllNestedFieldChildrenFromTypeField ¶
func (s *Schema) GetAllNestedFieldChildrenFromTypeField(typeName string, fieldName string, skipFieldFuncs ...SkipFieldFunc) []TypeFields
func (*Schema) HasMutationType ¶
func (*Schema) HasQueryType ¶
HasQueryType TODO: should be deprecated?
func (*Schema) HasSubscriptionType ¶
func (*Schema) IsNormalized ¶
func (*Schema) MutationTypeName ¶
func (*Schema) Normalize ¶
func (s *Schema) Normalize() (result NormalizationResult, err error)
func (*Schema) QueryTypeName ¶
func (*Schema) SubscriptionTypeName ¶
func (*Schema) Validate ¶
func (s *Schema) Validate() (result ValidationResult, err error)
type SchemaValidationError ¶
type SchemaValidationError struct {
Message string `json:"message"`
}
func (SchemaValidationError) Error ¶
func (s SchemaValidationError) Error() string
type SchemaValidationErrors ¶
type SchemaValidationErrors []SchemaValidationError
func (SchemaValidationErrors) Count ¶
func (s SchemaValidationErrors) Count() int
func (SchemaValidationErrors) Error ¶
func (s SchemaValidationErrors) Error() string
func (SchemaValidationErrors) ErrorByIndex ¶
func (s SchemaValidationErrors) ErrorByIndex(i int) error
func (SchemaValidationErrors) WriteResponse ¶
func (s SchemaValidationErrors) WriteResponse(writer io.Writer) (n int, err error)
type SkipFieldFunc ¶
func NewIsDataSourceConfigV2RootFieldSkipFunc ¶
func NewIsDataSourceConfigV2RootFieldSkipFunc(dataSources []plan.DataSource) SkipFieldFunc
func NewSkipReservedNamesFunc ¶
func NewSkipReservedNamesFunc() SkipFieldFunc
type SubscriptionType ¶
type SubscriptionType int
type TypeFieldArguments ¶
type TypeFieldLookupKey ¶
type TypeFieldLookupKey string
func CreateTypeFieldLookupKey ¶
func CreateTypeFieldLookupKey(typeName string, fieldName string) TypeFieldLookupKey
type TypeFields ¶
type ValidationResult ¶
func ValidateSchemaString ¶
func ValidateSchemaString(schema string) (result ValidationResult, err error)