-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Morpheus GraphQL -- -- Build GraphQL APIs with your favourite functional language! @package morpheus-graphql-server @version 0.24.2 module Data.Morpheus.Server.Resolvers class (ToJSON (Dep a)) => ResolveNamed (m :: Type -> Type) a where { type Dep a :: Type; } resolveNamed :: (ResolveNamed m a, Monad m) => Dep a -> m a data NamedResolverT (m :: Type -> Type) a [Ref] :: ResolveNamed m a => m (Dep a) -> NamedResolverT m a [Refs] :: ResolveNamed m a => m [Dep a] -> NamedResolverT m [a] [Value] :: m a -> NamedResolverT m a resolve :: forall m a b. ResolveByType (RES_TYPE a b) m a b => Monad m => m a -> NamedResolverT m b data NamedResolvers (m :: Type -> Type) event (qu :: (Type -> Type) -> Type) (mu :: (Type -> Type) -> Type) (su :: (Type -> Type) -> Type) NamedResolvers :: NamedResolvers (m :: Type -> Type) event (qu :: (Type -> Type) -> Type) (mu :: (Type -> Type) -> Type) (su :: (Type -> Type) -> Type) -- | GraphQL Root resolver, also the interpreter generates a GQL schema -- from it. queryResolver is required, mutationResolver and -- subscriptionResolver are optional, if your schema does not -- supports mutation or subscription , you can use -- () for it. data RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) RootResolver :: query (Resolver QUERY event m) -> mutation (Resolver MUTATION event m) -> subscription (Resolver SUBSCRIPTION event m) -> RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) [queryResolver] :: RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) -> query (Resolver QUERY event m) [mutationResolver] :: RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) -> mutation (Resolver MUTATION event m) [subscriptionResolver] :: RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) -> subscription (Resolver SUBSCRIPTION event m) defaultRootResolver :: RootResolver m event Undefined Undefined Undefined type ResolverO o e m a = Flexible (Resolver o e m) a type ComposedResolver o e m f a = Composed (Resolver o e m) f a publish :: Monad m => [e] -> Resolver MUTATION e m () constRes :: (WithOperation o, Monad m) => b -> a -> Resolver o e m b type ResolverQ e m a = Flexible (Resolver QUERY e m) a type ResolverM e m a = Flexible (Resolver MUTATION e m) a type ResolverS e m a = Flexible (Resolver SUBSCRIPTION e m) a instance Data.Morpheus.Server.Resolvers.FlexibleResolver f a instance Data.Morpheus.Server.Resolvers.FlexibleResolver f a -- | GraphQL Wai Server Applications module Data.Morpheus.Server httpPlayground :: ByteString -- | normal morpheus server validates schema at runtime (after the schema -- derivation). this method allows you to validate it at compile time. compileTimeSchemaValidation :: SchemaConstraints event m qu mu su => proxy (root m event qu mu su) -> Q Exp -- | Generates schema.gql file from RootResolver printSchema :: RootResolverConstraint m event query mut sub => proxy (RootResolver m event query mut sub) -> ByteString type RootResolverConstraint m e query mutation subscription = (EncodeConstraints e m query mutation subscription, SchemaConstraints e m query mutation subscription, Monad m) -- | main query processor and resolver interpreter :: (MapAPI a b, RootResolverConstraint m e query mut sub) => RootResolver m e query mut sub -> a -> m b debugInterpreter :: (MapAPI a b, RootResolverConstraint m e query mut sub) => RootResolver m e query mut sub -> a -> m b data App event (m :: Type -> Type) deriveApp :: DeriveApp f m event qu mu su => f m event qu mu su -> App event m runApp :: (MapAPI a b, Monad m) => App e m -> a -> m b withDebugger :: forall e (m :: Type -> Type). App e m -> App e m -- | GQL Types module Data.Morpheus.Server.Types -- | GraphQL type, every graphQL type should have an instance of -- Generic and GQLType. -- --
-- ... deriving (Generic, GQLType) -- ---- -- if you want to add description -- --
-- ... deriving (Generic) -- -- instance GQLType ... where -- description = const "your description ..." -- --class GQLType a where { type KIND a :: DerivingKind; type KIND a = TYPE; } -- | A description of the type. -- -- Used for documentation in the GraphQL schema. -- | Deprecated: use: directive Describe { text } with typeDirective description :: GQLType a => f a -> Maybe Text directives :: GQLType a => f a -> DirectiveUsages -- | A dictionary of descriptions for fields, keyed on field name. -- -- Used for documentation in the GraphQL schema. -- | Deprecated: use: directive Describe { text } with -- fieldDirective getDescriptions :: GQLType a => f a -> Map Text Description -- | Deprecated: use: custom directives with VisitType typeOptions :: GQLType a => f a -> GQLTypeOptions -> GQLTypeOptions -- | Deprecated: use: directives getDirectives :: GQLType a => f a -> Map Text (Directives CONST) defaultValues :: GQLType a => f a -> Map Text (Value CONST) -- | GraphQL Scalar Serializer class EncodeScalar a encodeScalar :: EncodeScalar a => a -> ScalarValue -- | GraphQL Wrapper Serializer class EncodeWrapper (wrapper :: Type -> Type) encodeWrapper :: (EncodeWrapper wrapper, Monad m) => (a -> m (ResolverValue m)) -> wrapper a -> m (ResolverValue m) -- | GraphQL Scalar parser class DecodeScalar a decodeScalar :: DecodeScalar a => ScalarValue -> Either Text a -- | GraphQL Wrapper Deserializer class DecodeWrapper (f :: Type -> Type) decodeWrapper :: (DecodeWrapper f, Monad m, DecodeWrapperConstraint f a) => (ValidValue -> m a) -> ValidValue -> ExceptT GQLError m (f a) -- | GraphQL HTTP Request Body data GQLRequest GQLRequest :: Maybe FieldName -> Text -> Maybe Value -> GQLRequest [operationName] :: GQLRequest -> Maybe FieldName [query] :: GQLRequest -> Text [variables] :: GQLRequest -> Maybe Value -- | GraphQL Response data GQLResponse Data :: ValidValue -> GQLResponse Errors :: [GQLError] -> GQLResponse -- | default GraphQL type, parses only ScalarValue and -- ScalarValue values, serialized always as ScalarValue newtype ID ID :: Text -> ID [unpackID] :: ID -> Text -- | Primitive Values for GQLScalar: ScalarValue, -- ScalarValue, ScalarValue, Boolean. for -- performance reason type Text represents GraphQl -- ScalarValue value data ScalarValue Int :: Int -> ScalarValue Float :: Double -> ScalarValue String :: Text -> ScalarValue Boolean :: Bool -> ScalarValue Value :: Value -> ScalarValue data Undefined (m :: Type -> Type) data Resolver (o :: OperationType) event (m :: Type -> Type) value type QUERY = 'Query type MUTATION = 'Mutation type SUBSCRIPTION = 'Subscription -- | Lift a computation from the argument monad to the constructed monad. lift :: (MonadTrans t, Monad m) => m a -> t m a type WithOperation (o :: OperationType) = LiftOperation o subscribe :: forall (m :: Type -> Type) e a. Monad m => Channel e -> Resolver QUERY e m (e -> Resolver SUBSCRIPTION e m a) -> SubscriptionField (Resolver SUBSCRIPTION e m a) -- | A function to return the internal ResolverContext within a -- resolver's monad. Using the ResolverContext itself is unsafe -- because it exposes internal structures of the AST, but you can use the -- Data.Morpheus.Types.SelectionTree typeClass to manipulate the -- internal AST with a safe interface. unsafeInternalContext :: forall (m :: Type -> Type) (o :: OperationType) e. (Monad m, LiftOperation o) => Resolver o e m ResolverContext data ResolverContext ResolverContext :: Selection VALID -> Schema VALID -> Operation VALID -> Config -> TypeDefinition ANY VALID -> ResolverContext [currentSelection] :: ResolverContext -> Selection VALID [schema] :: ResolverContext -> Schema VALID [operation] :: ResolverContext -> Operation VALID [config] :: ResolverContext -> Config [currentType] :: ResolverContext -> TypeDefinition ANY VALID data SubscriptionField a data App event (m :: Type -> Type) class RenderGQL a render :: RenderGQL a => a -> ByteString data TypeGuard interface union ResolveInterface :: interface -> TypeGuard interface union ResolveType :: union -> TypeGuard interface union newtype Arg (name :: Symbol) a Arg :: a -> Arg (name :: Symbol) a [argValue] :: Arg (name :: Symbol) a -> a -- | Options that specify how to map GraphQL field, type, and constructor -- names to and from their Haskell equivalent. -- -- Options can be set using record syntax on defaultOptions with -- the fields below. -- | Deprecated: use: custom directives with VisitType data GQLTypeOptions -- | Default encoding GQLTypeOptions: -- --
-- GQLTypeOptions
-- { fieldLabelModifier = id
-- , constructorTagModifier = id
-- , typeNameModifier = const id
-- }
--
-- | Deprecated: use: custom directives with VisitType
defaultTypeOptions :: GQLTypeOptions
-- | Function applied to field labels. Handy for removing common record
-- prefixes for example.
fieldLabelModifier :: GQLTypeOptions -> String -> String
-- | Function applied to constructor tags.
constructorTagModifier :: GQLTypeOptions -> String -> String
-- | Construct a new type name depending on whether it is an input, and
-- being given the original type name.
typeNameModifier :: GQLTypeOptions -> Bool -> String -> String
-- | a custom GraphQL directive for adding or removing of prefixes
data Prefixes
Prefixes :: Text -> Text -> Prefixes
[addPrefix] :: Prefixes -> Text
[removePrefix] :: Prefixes -> Text
class VisitType a
-- | Construct a new type name depending on whether it is an input, and
-- being given the original type name.
visitTypeName :: VisitType a => a -> Bool -> Text -> Text
visitTypeDescription :: VisitType a => a -> Maybe Text -> Maybe Text
-- | Function applied to field labels. Handy for removing common record
-- prefixes for example.
visitFieldNames :: VisitType a => a -> Text -> Text
-- | Function applied to enum values Handy for removing common enum
-- prefixes for example.
visitEnumNames :: VisitType a => a -> Text -> Text
class VisitField a
visitFieldName :: VisitField a => a -> Text -> Text
visitFieldDescription :: VisitField a => a -> Maybe Text -> Maybe Text
class VisitEnum a
visitEnumName :: VisitEnum a => a -> Text -> Text
visitEnumDescription :: VisitEnum a => a -> Maybe Text -> Maybe Text
typeDirective :: TypeDirectiveConstraint a => a -> DirectiveUsages
fieldDirective :: TypeDirectiveConstraint a => FieldName -> a -> DirectiveUsages
enumDirective :: TypeDirectiveConstraint a => TypeName -> a -> DirectiveUsages
fieldDirective' :: TypeDirectiveConstraint a => Name -> a -> DirectiveUsages
enumDirective' :: TypeDirectiveConstraint a => Name -> a -> DirectiveUsages
class (Typeable a, WITH_VISITOR a VISIT_TYPE TYPE_VISITOR_KIND, WITH_VISITOR a VISIT_FIELD FIELD_VISITOR_KIND, WITH_VISITOR a VISIT_ENUM ENUM_VISITOR_KIND) => GQLDirective a where {
type DIRECTIVE_LOCATIONS a :: [DirectiveLocation];
}
excludeFromSchema :: GQLDirective a => f a -> Bool
newtype Deprecated
Deprecated :: Maybe Text -> Deprecated
[reason] :: Deprecated -> Maybe Text
newtype Describe
Describe :: Text -> Describe
[text] :: Describe -> Text
-- | Deprecated: use: custom directives
dropNamespaceOptions :: TypeKind -> Text -> GQLTypeOptions -> GQLTypeOptions
-- | GraphQL Scalar: Int, Float, String, Boolean or any user defined custom
-- Scalar type
type SCALAR = 'SCALAR
data DerivingKind
SCALAR :: DerivingKind
TYPE :: DerivingKind
WRAPPER :: DerivingKind
CUSTOM :: DerivingKind
-- | GraphQL input, type, union , enum
type TYPE = 'TYPE
type CUSTOM = 'CUSTOM
-- | GraphQL Arrays , Resolvers and NonNull fields
type WRAPPER = 'WRAPPER
-- | GraphQL Root resolver, also the interpreter generates a GQL schema
-- from it. queryResolver is required, mutationResolver and
-- subscriptionResolver are optional, if your schema does not
-- supports mutation or subscription , you can use
-- () for it.
data RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type)
RootResolver :: query (Resolver QUERY event m) -> mutation (Resolver MUTATION event m) -> subscription (Resolver SUBSCRIPTION event m) -> RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type)
[queryResolver] :: RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) -> query (Resolver QUERY event m)
[mutationResolver] :: RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) -> mutation (Resolver MUTATION event m)
[subscriptionResolver] :: RootResolver (m :: Type -> Type) event (query :: (Type -> Type) -> Type) (mutation :: (Type -> Type) -> Type) (subscription :: (Type -> Type) -> Type) -> subscription (Resolver SUBSCRIPTION event m)
defaultRootResolver :: RootResolver m event Undefined Undefined Undefined
-- | a custom GraphQL directive for adding or removing of prefixes
newtype Rename
Rename :: Text -> Rename
[newName] :: Rename -> Text
newtype InputTypeNamespace
InputTypeNamespace :: Text -> InputTypeNamespace
[inputTypeNamespace] :: InputTypeNamespace -> Text
newtype DropNamespace
DropNamespace :: Text -> DropNamespace
[dropNamespace] :: DropNamespace -> Text