-- 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 @version 0.0.1 module Data.Morpheus.Generics.GDecodeEnum class GDecodeEnum f gToEnum :: GDecodeEnum f => Text -> f a tagName :: GDecodeEnum f => Proxy f -> Text getTags :: GDecodeEnum f => Proxy f -> [Text] instance (GHC.Generics.Datatype c, Data.Morpheus.Generics.GDecodeEnum.GDecodeEnum f) => Data.Morpheus.Generics.GDecodeEnum.GDecodeEnum (GHC.Generics.M1 GHC.Generics.D c f) instance GHC.Generics.Constructor c => Data.Morpheus.Generics.GDecodeEnum.GDecodeEnum (GHC.Generics.M1 GHC.Generics.C c GHC.Generics.U1) instance (Data.Morpheus.Generics.GDecodeEnum.GDecodeEnum a, Data.Morpheus.Generics.GDecodeEnum.GDecodeEnum b) => Data.Morpheus.Generics.GDecodeEnum.GDecodeEnum (a GHC.Generics.:+: b) module Data.Morpheus.Generics.Utils typeOf :: Typeable a => Proxy a -> Text type SelOf s = M1 S s (Rec0 ()) () type RecSel s a = M1 S s (Rec0 a) module Data.Morpheus.Schema.DirectiveLocation data DirectiveLocation QUERY :: DirectiveLocation MUTATION :: DirectiveLocation SUBSCRIPTION :: DirectiveLocation FIELD :: DirectiveLocation FRAGMENT_DEFINITION :: DirectiveLocation FRAGMENT_SPREAD :: DirectiveLocation INLINE_FRAGMENT :: DirectiveLocation SCHEMA :: DirectiveLocation SCALAR :: DirectiveLocation OBJECT :: DirectiveLocation FIELD_DEFINITION :: DirectiveLocation ARGUMENT_DEFINITION :: DirectiveLocation INTERFACE :: DirectiveLocation UNION :: DirectiveLocation ENUM :: DirectiveLocation ENUM_VALUE :: DirectiveLocation INPUT_OBJECT :: DirectiveLocation INPUT_FIELD_DEFINITION :: DirectiveLocation instance GHC.Generics.Generic Data.Morpheus.Schema.DirectiveLocation.DirectiveLocation instance Data.Data.Data Data.Morpheus.Schema.DirectiveLocation.DirectiveLocation instance GHC.Show.Show Data.Morpheus.Schema.DirectiveLocation.DirectiveLocation module Data.Morpheus.Schema.EnumValue data EnumValue EnumValue :: Text -> Maybe Text -> Bool -> Maybe Text -> EnumValue [name] :: EnumValue -> Text [description] :: EnumValue -> Maybe Text [isDeprecated] :: EnumValue -> Bool [deprecationReason] :: EnumValue -> Maybe Text createEnumValue :: Text -> EnumValue isEnumOf :: Text -> [EnumValue] -> Bool instance GHC.Generics.Generic Data.Morpheus.Schema.EnumValue.EnumValue instance Data.Data.Data Data.Morpheus.Schema.EnumValue.EnumValue instance GHC.Show.Show Data.Morpheus.Schema.EnumValue.EnumValue module Data.Morpheus.Schema.InputValue data InputValue t InputValue :: Text -> Maybe Text -> t -> Maybe Text -> InputValue t [name] :: InputValue t -> Text [description] :: InputValue t -> Maybe Text [_type] :: InputValue t -> t [defaultValue] :: InputValue t -> Maybe Text createInputValueWith :: Text -> a -> InputValue a instance GHC.Generics.Generic (Data.Morpheus.Schema.InputValue.InputValue t) instance Data.Data.Data t => Data.Data.Data (Data.Morpheus.Schema.InputValue.InputValue t) instance GHC.Show.Show t => GHC.Show.Show (Data.Morpheus.Schema.InputValue.InputValue t) module Data.Morpheus.Schema.Field data Field t Field :: Text -> Maybe Text -> [InputValue t] -> t -> Bool -> Maybe Text -> Field t [name] :: Field t -> Text [description] :: Field t -> Maybe Text [args] :: Field t -> [InputValue t] [_type] :: Field t -> t [isDeprecated] :: Field t -> Bool [deprecationReason] :: Field t -> Maybe Text createFieldWith :: Text -> a -> [InputValue a] -> Field a instance GHC.Generics.Generic (Data.Morpheus.Schema.Field.Field t) instance Data.Data.Data t => Data.Data.Data (Data.Morpheus.Schema.Field.Field t) instance GHC.Show.Show t => GHC.Show.Show (Data.Morpheus.Schema.Field.Field t) module Data.Morpheus.Schema.TypeKind data TypeKind SCALAR :: TypeKind OBJECT :: TypeKind INTERFACE :: TypeKind UNION :: TypeKind ENUM :: TypeKind INPUT_OBJECT :: TypeKind LIST :: TypeKind NON_NULL :: TypeKind instance GHC.Generics.Generic Data.Morpheus.Schema.TypeKind.TypeKind instance Data.Data.Data Data.Morpheus.Schema.TypeKind.TypeKind instance GHC.Classes.Eq Data.Morpheus.Schema.TypeKind.TypeKind instance GHC.Show.Show Data.Morpheus.Schema.TypeKind.TypeKind module Data.Morpheus.Schema.Internal.Types type OutputType = InternalType ObjectField data InternalType a Scalar :: Core -> InternalType a Enum :: [EnumValue] -> Core -> InternalType a Object :: GObject a -> InternalType a data Core Core :: Text -> Text -> Core [name] :: Core -> Text [typeDescription] :: Core -> Text data Field Field :: Text -> Bool -> TypeKind -> Text -> Bool -> Field [fieldName] :: Field -> Text [notNull] :: Field -> Bool [kind] :: Field -> TypeKind [fieldType] :: Field -> Text [asList] :: Field -> Bool data ObjectField ObjectField :: [(Text, InputField)] -> Field -> ObjectField [args] :: ObjectField -> [(Text, InputField)] [fieldContent] :: ObjectField -> Field type InputType = InternalType InputField newtype InputField InputField :: Field -> InputField [unpackInputField] :: InputField -> Field data TypeLib TypeLib :: [(Text, Leaf)] -> [(Text, InputObject)] -> [(Text, OutputObject)] -> (Text, OutputObject) -> Maybe (Text, OutputObject) -> TypeLib [leaf] :: TypeLib -> [(Text, Leaf)] [inputObject] :: TypeLib -> [(Text, InputObject)] [object] :: TypeLib -> [(Text, OutputObject)] [query] :: TypeLib -> (Text, OutputObject) [mutation] :: TypeLib -> Maybe (Text, OutputObject) data GObject a GObject :: [(Text, a)] -> Core -> GObject a data Leaf LScalar :: Core -> Leaf LEnum :: [EnumValue] -> Core -> Leaf type InputObject = GObject InputField type OutputObject = GObject ObjectField isTypeDefined :: Text -> TypeLib -> Bool initTypeLib :: (Text, OutputObject) -> TypeLib defineType :: (Text, LibType) -> TypeLib -> TypeLib data LibType Leaf :: Leaf -> LibType InputObject :: InputObject -> LibType OutputObject :: OutputObject -> LibType module Data.Morpheus.Generics.TypeRep class Selectors rep t getFields :: Selectors rep t => Proxy rep -> [(t, TypeLib -> TypeLib)] resolveTypes :: TypeLib -> [TypeLib -> TypeLib] -> TypeLib instance forall k (f :: k -> *) t (x :: GHC.Generics.Meta). Data.Morpheus.Generics.TypeRep.Selectors f t => Data.Morpheus.Generics.TypeRep.Selectors (GHC.Generics.M1 GHC.Generics.D x f) t instance forall k (f :: k -> *) t (x :: GHC.Generics.Meta). Data.Morpheus.Generics.TypeRep.Selectors f t => Data.Morpheus.Generics.TypeRep.Selectors (GHC.Generics.M1 GHC.Generics.C x f) t instance forall k (a :: k -> *) t (b :: k -> *). (Data.Morpheus.Generics.TypeRep.Selectors a t, Data.Morpheus.Generics.TypeRep.Selectors b t) => Data.Morpheus.Generics.TypeRep.Selectors (a GHC.Generics.:*: b) t instance Data.Morpheus.Generics.TypeRep.Selectors GHC.Generics.U1 t module Data.Morpheus.Types.Core type Key = Text type Collection a = [(Key, a)] data EnhancedKey EnhancedKey :: Text -> Int -> EnhancedKey [uid] :: EnhancedKey -> Text [location] :: EnhancedKey -> Int enhanceKeyWithNull :: Key -> EnhancedKey instance GHC.Classes.Eq Data.Morpheus.Types.Core.EnhancedKey module Data.Morpheus.Types.Describer newtype a ::-> b Resolver :: (a -> IO (Either String b)) -> (::->) a b newtype WithDeprecationArgs a WithDeprecationArgs :: a -> WithDeprecationArgs a [unpackDeprecationArgs] :: WithDeprecationArgs a -> a newtype EnumOf a EnumOf :: a -> EnumOf a [unpackEnum] :: EnumOf a -> a newtype ScalarOf a ScalarOf :: a -> ScalarOf a [unpackScalar] :: ScalarOf a -> a instance GHC.Generics.Generic (a Data.Morpheus.Types.Describer.::-> b) instance Data.Data.Data a => Data.Data.Data (Data.Morpheus.Types.Describer.WithDeprecationArgs a) instance GHC.Generics.Generic (Data.Morpheus.Types.Describer.WithDeprecationArgs a) instance GHC.Show.Show a => GHC.Show.Show (Data.Morpheus.Types.Describer.WithDeprecationArgs a) instance Data.Data.Data a => Data.Data.Data (Data.Morpheus.Types.Describer.ScalarOf a) instance GHC.Generics.Generic (Data.Morpheus.Types.Describer.ScalarOf a) instance GHC.Show.Show a => GHC.Show.Show (Data.Morpheus.Types.Describer.ScalarOf a) instance Data.Data.Data a => Data.Data.Data (Data.Morpheus.Types.Describer.EnumOf a) instance GHC.Generics.Generic (Data.Morpheus.Types.Describer.EnumOf a) instance GHC.Show.Show a => GHC.Show.Show (Data.Morpheus.Types.Describer.EnumOf a) instance GHC.Show.Show (a Data.Morpheus.Types.Describer.::-> b) instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (a Data.Morpheus.Types.Describer.::-> b) instance GHC.Base.Functor Data.Morpheus.Types.Describer.EnumOf instance GHC.Base.Applicative Data.Morpheus.Types.Describer.EnumOf module Data.Morpheus.Schema.Type data Type Type :: EnumOf TypeKind -> Maybe Text -> Maybe Text -> Maybe (WithDeprecationArgs [Field Type]) -> Maybe Type -> Maybe [Type] -> Maybe [Type] -> Maybe (WithDeprecationArgs [EnumValue]) -> Maybe [InputValue Type] -> Type [kind] :: Type -> EnumOf TypeKind [name] :: Type -> Maybe Text [description] :: Type -> Maybe Text [fields] :: Type -> Maybe (WithDeprecationArgs [Field Type]) [ofType] :: Type -> Maybe Type [interfaces] :: Type -> Maybe [Type] [possibleTypes] :: Type -> Maybe [Type] [enumValues] :: Type -> Maybe (WithDeprecationArgs [EnumValue]) [inputFields] :: Type -> Maybe [InputValue Type] newtype DeprecationArgs DeprecationArgs :: Maybe Bool -> DeprecationArgs [includeDeprecated] :: DeprecationArgs -> Maybe Bool instance GHC.Generics.Generic Data.Morpheus.Schema.Type.DeprecationArgs instance Data.Data.Data Data.Morpheus.Schema.Type.DeprecationArgs instance GHC.Show.Show Data.Morpheus.Schema.Type.DeprecationArgs instance GHC.Generics.Generic Data.Morpheus.Schema.Type.Type instance Data.Data.Data Data.Morpheus.Schema.Type.Type instance GHC.Show.Show Data.Morpheus.Schema.Type.Type module Data.Morpheus.Schema.Utils.Utils data Type type Field = Field Type type InputValue = InputValue Type createObjectType :: Text -> Text -> [Field] -> Type typeFromObject :: (Text, OutputObject) -> Type typeFromInputObject :: (Text, InputObject) -> Type typeFromLeaf :: (Text, Leaf) -> Type module Data.Morpheus.Schema.Directive data Directive Directive :: Text -> Maybe Text -> [EnumOf DirectiveLocation] -> [InputValue] -> Directive [name] :: Directive -> Text [description] :: Directive -> Maybe Text [locations] :: Directive -> [EnumOf DirectiveLocation] [args] :: Directive -> [InputValue] instance GHC.Generics.Generic Data.Morpheus.Schema.Directive.Directive instance Data.Data.Data Data.Morpheus.Schema.Directive.Directive instance GHC.Show.Show Data.Morpheus.Schema.Directive.Directive module Data.Morpheus.Schema.Schema data Schema Schema :: [Type] -> Type -> Maybe Type -> Maybe Type -> [Directive] -> Schema [types] :: Schema -> [Type] [queryType] :: Schema -> Type [mutationType] :: Schema -> Maybe Type [subscriptionType] :: Schema -> Maybe Type [directives] :: Schema -> [Directive] convertTypes :: TypeLib -> [Type] typeFromMutation :: Maybe (Text, OutputObject) -> [Type] buildSchemaLinkType :: (Text, OutputObject) -> Type initSchema :: TypeLib -> Schema instance GHC.Generics.Generic Data.Morpheus.Schema.Schema.Schema instance Data.Data.Data Data.Morpheus.Schema.Schema.Schema instance GHC.Show.Show Data.Morpheus.Schema.Schema.Schema module Data.Morpheus.Kind.GQLKind class GQLKind a description :: GQLKind a => Proxy a -> Text typeID :: GQLKind a => Proxy a -> Text typeID :: (GQLKind a, Typeable a) => Proxy a -> Text buildType :: GQLKind a => Proxy a -> Core updateLib :: GQLKind a => (Proxy a -> LibType) -> [TypeLib -> TypeLib] -> Proxy a -> TypeLib -> TypeLib scalarTypeOf :: GQLKind a => Proxy a -> LibType asObjectType :: GQLKind a => [(Text, ObjectField)] -> Proxy a -> LibType enumTypeOf :: GQLKind a => [Text] -> Proxy a -> LibType inputObjectOf :: GQLKind a => [(Text, InputField)] -> Proxy a -> LibType introspectScalar :: GQLKind a => Proxy a -> TypeLib -> TypeLib instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.EnumValue.EnumValue instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.Type.Type instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.Utils.Utils.Field instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.Utils.Utils.InputValue instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.Schema.Schema instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.Directive.Directive instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.TypeKind.TypeKind instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Morpheus.Schema.DirectiveLocation.DirectiveLocation instance Data.Morpheus.Kind.GQLKind.GQLKind GHC.Types.Int instance Data.Morpheus.Kind.GQLKind.GQLKind GHC.Types.Float instance Data.Morpheus.Kind.GQLKind.GQLKind Data.Text.Internal.Text instance Data.Morpheus.Kind.GQLKind.GQLKind GHC.Types.Bool instance Data.Morpheus.Kind.GQLKind.GQLKind a => Data.Morpheus.Kind.GQLKind.GQLKind (GHC.Maybe.Maybe a) module Data.Morpheus.Kind.GQLEnum class GQLEnum a decode :: GQLEnum a => Text -> a decode :: (GQLEnum a, Generic a, GDecodeEnum (Rep a)) => Text -> a asInputField :: GQLEnum a => Proxy a -> Text -> InputField asInputField :: (GQLEnum a, GQLKind a) => Proxy a -> Text -> InputField asField :: GQLEnum a => Proxy a -> Text -> Field asField :: (GQLEnum a, GQLKind a) => Proxy a -> Text -> Field introspect :: GQLEnum a => Proxy a -> TypeLib -> TypeLib introspect :: (GQLEnum a, GQLKind a, GDecodeEnum (Rep a)) => Proxy a -> TypeLib -> TypeLib instance Data.Morpheus.Kind.GQLEnum.GQLEnum Data.Morpheus.Schema.TypeKind.TypeKind instance Data.Morpheus.Kind.GQLEnum.GQLEnum Data.Morpheus.Schema.DirectiveLocation.DirectiveLocation module Data.Morpheus.Types.Error data GQLError GQLError :: Text -> [Int] -> GQLError [desc] :: GQLError -> Text [posIndex] :: GQLError -> [Int] data ErrorLocation ErrorLocation :: Int -> Int -> ErrorLocation [line] :: ErrorLocation -> Int [column] :: ErrorLocation -> Int type GQLErrors = [GQLError] data JSONError JSONError :: Text -> [ErrorLocation] -> JSONError [message] :: JSONError -> Text [locations] :: JSONError -> [ErrorLocation] type Validation a = Either GQLErrors a type ResolveIO = ExceptT GQLErrors IO failResolveIO :: GQLErrors -> ResolveIO a instance Data.Aeson.Types.ToJSON.ToJSON Data.Morpheus.Types.Error.JSONError instance GHC.Generics.Generic Data.Morpheus.Types.Error.JSONError instance GHC.Show.Show Data.Morpheus.Types.Error.JSONError instance Data.Aeson.Types.ToJSON.ToJSON Data.Morpheus.Types.Error.ErrorLocation instance GHC.Generics.Generic Data.Morpheus.Types.Error.ErrorLocation instance GHC.Show.Show Data.Morpheus.Types.Error.ErrorLocation instance GHC.Show.Show Data.Morpheus.Types.Error.GQLError module Data.Morpheus.Error.Fragment cannotSpreadWithinItself :: [EnhancedKey] -> GQLErrors module Data.Morpheus.Types.JSType data JSType JSObject :: [(Text, JSType)] -> JSType JSList :: [JSType] -> JSType JSEnum :: Text -> JSType Scalar :: ScalarValue -> JSType JSNull :: JSType data ScalarValue Int :: Int -> ScalarValue Float :: Float -> ScalarValue String :: Text -> ScalarValue Boolean :: Bool -> ScalarValue decodeScientific :: Scientific -> ScalarValue instance GHC.Generics.Generic Data.Morpheus.Types.JSType.JSType instance GHC.Show.Show Data.Morpheus.Types.JSType.JSType instance GHC.Generics.Generic Data.Morpheus.Types.JSType.ScalarValue instance GHC.Show.Show Data.Morpheus.Types.JSType.ScalarValue instance Data.Aeson.Types.ToJSON.ToJSON Data.Morpheus.Types.JSType.JSType instance Data.Aeson.Types.FromJSON.FromJSON Data.Morpheus.Types.JSType.JSType instance Data.Aeson.Types.ToJSON.ToJSON Data.Morpheus.Types.JSType.ScalarValue module Data.Morpheus.PreProcess.Input.Enum validateEnum :: error -> [Text] -> JSType -> Either error JSType module Data.Morpheus.Parser.Primitive replaceType :: Text -> Text boolTrue :: Parser JSType boolFalse :: Parser JSType jsBool :: Parser JSType jsNumber :: Parser JSType codes :: String replacements :: String escaped :: Parser Char jsString :: Parser JSType token :: Parser Text variable :: Parser Text separator :: Parser Char getPosition :: Parser Int getNextLine :: Parser Int getLines :: Parser [Int] module Data.Morpheus.Error.Input inputErrorMessage :: InputError -> Text data InputError UnexpectedType :: [Prop] -> Text -> JSType -> InputError UndefinedField :: [Prop] -> Text -> InputError UnknownField :: [Prop] -> Text -> InputError data Prop Prop :: Text -> Text -> Prop [propKey] :: Prop -> Text [propType] :: Prop -> Text type InputValidation a = Either InputError a module Data.Morpheus.Types.MetaInfo data MetaInfo MetaInfo :: Position -> Text -> Text -> MetaInfo [position] :: MetaInfo -> Position [typeName] :: MetaInfo -> Text [key] :: MetaInfo -> Text initialMeta :: MetaInfo type Position = Int type LineBreaks = [Position] module Data.Morpheus.Generics.GDecode class GDecode i f gDecode :: GDecode i f => MetaInfo -> i -> Validation (f a) instance Data.Morpheus.Generics.GDecode.GDecode i GHC.Generics.U1 instance (GHC.Generics.Selector c, Data.Morpheus.Generics.GDecode.GDecode i f) => Data.Morpheus.Generics.GDecode.GDecode i (GHC.Generics.M1 GHC.Generics.S c f) instance (GHC.Generics.Datatype c, Data.Morpheus.Generics.GDecode.GDecode i f) => Data.Morpheus.Generics.GDecode.GDecode i (GHC.Generics.M1 GHC.Generics.D c f) instance Data.Morpheus.Generics.GDecode.GDecode i f => Data.Morpheus.Generics.GDecode.GDecode i (GHC.Generics.M1 GHC.Generics.C c f) instance (Data.Morpheus.Generics.GDecode.GDecode i f, Data.Morpheus.Generics.GDecode.GDecode i g) => Data.Morpheus.Generics.GDecode.GDecode i (f GHC.Generics.:*: g) module Data.Morpheus.Error.Utils errorMessage :: Position -> Text -> GQLErrors renderErrors :: LineBreaks -> [GQLError] -> [JSONError] module Data.Morpheus.Error.Variable undefinedVariable :: Text -> Position -> Text -> GQLErrors unknownType :: Text -> Position -> GQLErrors variableGotInvalidValue :: Text -> Text -> Position -> GQLErrors uninitializedVariable :: Position -> Text -> GQLErrors -- | VARIABLES: -- -- Variable -> Error (position Query Head) data E = EN | DE query M ( -- $v : E ){...} -- -- query Q ($a: D) -> "Unknown type "D"." -- -- case String - { "v" : EN } -> no error converts as enum -- -- case type mismatch - { "v": { "a": "v1" ... } } -> "Variable "$v" -- got invalid value { "a": "v1" ... } ; Expected type LANGUAGE." - { "v" -- : "v1" } -> "Variable "$v" got invalid value "v1"; Expected type -- LANGUAGE." - { "v": 1 } "Variable "$v" got invalid value 1; Expected -- type LANGUAGE." -- -- TODO: variable does not match to argument type - query M ( $v : String -- ) { a(p:$v) } -> "Variable "$v" of type "String" used in position -- expecting type "LANGUAGE"." | unusedVariables :: [EnhancedKey] -> GQLErrors module Data.Morpheus.PreProcess.Utils differKeys :: [EnhancedKey] -> [Key] -> [EnhancedKey] existsObjectType :: Position -> Text -> TypeLib -> Validation OutputObject lookupType :: error -> [(Text, a)] -> Text -> Either error a getInputType :: Text -> TypeLib -> GenError error InputType lookupField :: Text -> [(Text, fType)] -> GenError error fType checkNameCollision :: [EnhancedKey] -> [Text] -> ([EnhancedKey] -> error) -> Either error [EnhancedKey] checkForUnknownKeys :: [EnhancedKey] -> [Text] -> ([EnhancedKey] -> error) -> Either error [EnhancedKey] module Data.Morpheus.PreProcess.Input.Object validateInputObject :: [Prop] -> TypeLib -> GObject InputField -> (Text, JSType) -> InputValidation (Text, JSType) validateInput :: TypeLib -> InputType -> (Text, JSType) -> InputValidation JSType module Data.Morpheus.Error.Internal internalTypeMismatch :: Text -> JSType -> Either GQLErrors b internalArgumentError :: Text -> Either GQLErrors b internalUnknownTypeMessage :: Text -> GQLErrors module Data.Morpheus.Kind.GQLScalar toScalar :: JSType -> Validation ScalarValue class GQLScalar a parseValue :: GQLScalar a => ScalarValue -> Validation a decode :: GQLScalar a => JSType -> Validation a serialize :: GQLScalar a => a -> ScalarValue encode :: GQLScalar a => a -> JSType asInputField :: (GQLScalar a, GQLKind a) => Proxy a -> Key -> InputField asField :: GQLScalar a => Proxy a -> Key -> Field asField :: (GQLScalar a, GQLKind a) => Proxy a -> Key -> Field introspect :: GQLScalar a => Proxy a -> TypeLib -> TypeLib introspect :: (GQLScalar a, GQLKind a) => Proxy a -> TypeLib -> TypeLib module Data.Morpheus.Kind.GQLInput class GQLInput a decode :: GQLInput a => JSType -> Validation a decode :: (GQLInput a, Generic a, GDecode JSType (Rep a)) => JSType -> Validation a asArgument :: GQLInput a => Proxy a -> Text -> InputField asArgument :: (GQLInput a, GQLKind a) => Proxy a -> Text -> InputField introInput :: GQLInput a => Proxy a -> TypeLib -> TypeLib introInput :: (GQLInput a, GQLKind a, Selectors (Rep a) (Text, InputField)) => Proxy a -> TypeLib -> TypeLib instance Data.Morpheus.Kind.GQLInput.GQLInput a => Data.Morpheus.Generics.GDecode.GDecode Data.Morpheus.Types.JSType.JSType (GHC.Generics.K1 i a) instance Data.Morpheus.Kind.GQLInput.GQLInput Data.Text.Internal.Text instance Data.Morpheus.Kind.GQLInput.GQLInput GHC.Types.Bool instance Data.Morpheus.Kind.GQLInput.GQLInput GHC.Types.Int instance Data.Morpheus.Kind.GQLInput.GQLInput GHC.Types.Float instance (Data.Morpheus.Kind.GQLInput.GQLInput a, Data.Morpheus.Kind.GQLKind.GQLKind a) => Data.Morpheus.Kind.GQLInput.GQLInput (GHC.Maybe.Maybe a) instance (Data.Morpheus.Kind.GQLEnum.GQLEnum a, Data.Morpheus.Kind.GQLKind.GQLKind a) => Data.Morpheus.Kind.GQLInput.GQLInput (Data.Morpheus.Types.Describer.EnumOf a) instance (Data.Morpheus.Kind.GQLScalar.GQLScalar a, Data.Morpheus.Kind.GQLKind.GQLKind a) => Data.Morpheus.Kind.GQLInput.GQLInput (Data.Morpheus.Types.Describer.ScalarOf a) instance (Data.Morpheus.Kind.GQLInput.GQLInput a, Data.Morpheus.Kind.GQLKind.GQLKind a) => Data.Morpheus.Kind.GQLInput.GQLInput [a] module Data.Morpheus.Error.Arguments undefinedArgument :: EnhancedKey -> GQLErrors unknownArguments :: Text -> [EnhancedKey] -> GQLErrors argumentGotInvalidValue :: Text -> Text -> Int -> GQLErrors argumentNameCollision :: [EnhancedKey] -> GQLErrors module Data.Morpheus.Error.Syntax syntaxError :: Text -> Position -> GQLErrors module Data.Morpheus.Error.Spread unknownFragment :: Text -> Position -> GQLErrors cannotBeSpreadOnType :: MetaInfo -> Text -> GQLErrors module Data.Morpheus.Error.Selection cannotQueryField :: MetaInfo -> GQLErrors subfieldsNotSelected :: MetaInfo -> GQLErrors duplicateQuerySelections :: Text -> [EnhancedKey] -> GQLErrors hasNoSubfields :: MetaInfo -> GQLErrors fieldNotResolved :: Position -> Text -> Text -> GQLErrors module Data.Morpheus.PreProcess.Selection lookupFieldAsSelectionSet :: Position -> Text -> TypeLib -> ObjectField -> Validation OutputObject lookupSelectionObjectFieldType :: Position -> Text -> TypeLib -> GObject ObjectField -> Validation OutputObject mustBeObject :: (Text, Position) -> ObjectField -> Validation ObjectField notObject :: (Text, Position) -> ObjectField -> Validation ObjectField lookupSelectionField :: Position -> Text -> GObject ObjectField -> Validation ObjectField module Data.Morpheus.Error.Mutation mutationIsNotDefined :: Position -> GQLErrors module Data.Morpheus.Types.Query.RawSelection data RawArgument VariableReference :: Key -> Position -> RawArgument Argument :: JSType -> Position -> RawArgument type RawArguments = Collection RawArgument type RawSelectionSet = Collection RawSelection data RawSelection RawSelectionSet :: RawArguments -> RawSelectionSet -> Position -> RawSelection RawField :: RawArguments -> Key -> Position -> RawSelection Spread :: Key -> Position -> RawSelection instance GHC.Show.Show Data.Morpheus.Types.Query.RawSelection.RawSelection instance GHC.Show.Show Data.Morpheus.Types.Query.RawSelection.RawArgument module Data.Morpheus.Types.Query.Fragment data Fragment Fragment :: Key -> Key -> Position -> RawSelectionSet -> Fragment [key] :: Fragment -> Key [target] :: Fragment -> Key [position] :: Fragment -> Position [content] :: Fragment -> RawSelectionSet type FragmentLib = Map Key Fragment instance GHC.Show.Show Data.Morpheus.Types.Query.Fragment.Fragment module Data.Morpheus.PreProcess.Resolve.Spread getFragment :: Position -> Text -> FragmentLib -> Validation Fragment castFragmentType :: MetaInfo -> GObject ObjectField -> Fragment -> Validation Fragment resolveSpread :: FragmentLib -> GObject ObjectField -> Position -> Text -> Validation RawSelectionSet module Data.Morpheus.Parser.Arguments arguments :: Parser RawArguments module Data.Morpheus.Parser.Body body :: RawArguments -> Parser RawSelection entries :: Parser RawSelectionSet module Data.Morpheus.Parser.Fragment fragment :: Parser (Text, Fragment) module Data.Morpheus.Types.Query.Selection data Argument Argument :: JSType -> Position -> Argument type Arguments = Collection Argument type SelectionSet = Collection Selection data Selection SelectionSet :: Arguments -> SelectionSet -> Position -> Selection Field :: Arguments -> Key -> Position -> Selection instance GHC.Show.Show Data.Morpheus.Types.Query.Selection.Selection instance GHC.Show.Show Data.Morpheus.Types.Query.Selection.Argument module Data.Morpheus.Types.Query.Operator data Operator args sel Query :: Key -> args -> sel -> Position -> Operator args sel Mutation :: Key -> args -> sel -> Position -> Operator args sel type ValidOperator = Operator Arguments SelectionSet type RawOperator = Operator VariableDefinitions RawSelectionSet data Variable Variable :: Key -> Position -> Variable type VariableDefinitions = Collection Variable module Data.Morpheus.Parser.RootHead rootHeadArguments :: Parser VariableDefinitions module Data.Morpheus.Parser.Query query :: Parser RawOperator module Data.Morpheus.Parser.Mutation mutation :: Parser RawOperator module Data.Morpheus.PreProcess.Validate.Arguments validateArguments :: TypeLib -> (Text, ObjectField) -> Position -> Arguments -> Validation Arguments module Data.Morpheus.PreProcess.Validate.Validate mapSelectorValidation :: TypeLib -> GObject ObjectField -> SelectionSet -> Validation SelectionSet module Data.Morpheus.Kind.GQLArgs class GQLArgs p decode :: GQLArgs p => Arguments -> Validation p decode :: (GQLArgs p, Generic p, GDecode Arguments (Rep p)) => Arguments -> Validation p introspect :: GQLArgs p => Proxy p -> [((Text, InputField), TypeLib -> TypeLib)] introspect :: (GQLArgs p, Selectors (Rep p) (Text, InputField)) => Proxy p -> [((Text, InputField), TypeLib -> TypeLib)] instance Data.Morpheus.Kind.GQLArgs.GQLArgs () instance Data.Morpheus.Kind.GQLArgs.GQLArgs Data.Morpheus.Schema.Type.DeprecationArgs instance (GHC.Generics.Selector s, Data.Morpheus.Kind.GQLInput.GQLInput a) => Data.Morpheus.Generics.TypeRep.Selectors (Data.Morpheus.Generics.Utils.RecSel s a) (Data.Text.Internal.Text, Data.Morpheus.Schema.Internal.Types.InputField) instance Data.Morpheus.Kind.GQLInput.GQLInput a => Data.Morpheus.Generics.GDecode.GDecode Data.Morpheus.Types.Query.Selection.Arguments (GHC.Generics.K1 i a) module Data.Morpheus.Generics.DeriveResolvers class DeriveResolvers f deriveResolvers :: DeriveResolvers f => MetaInfo -> f a -> [(Text, (Text, Selection) -> ResolveIO JSType)] resolveBySelection :: [(Text, Selection)] -> [(Text, (Text, Selection) -> ResolveIO JSType)] -> ResolveIO JSType instance Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers GHC.Generics.U1 instance (GHC.Generics.Selector s, Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers f) => Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers (GHC.Generics.M1 GHC.Generics.S s f) instance (GHC.Generics.Datatype c, Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers f) => Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers (GHC.Generics.M1 GHC.Generics.D c f) instance (GHC.Generics.Constructor c, Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers f) => Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers (GHC.Generics.M1 GHC.Generics.C c f) instance (Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers f, Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers g) => Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers (f GHC.Generics.:*: g) module Data.Morpheus.Kind.GQLObject class GQLObject a encode :: GQLObject a => (Text, Selection) -> a -> ResolveIO JSType encode :: (GQLObject a, Generic a, DeriveResolvers (Rep a)) => (Text, Selection) -> a -> ResolveIO JSType fieldType :: GQLObject a => Proxy a -> Text -> ObjectField fieldType :: (GQLObject a, Selectors (Rep a) (Text, ObjectField), GQLKind a) => Proxy a -> Text -> ObjectField introspect :: GQLObject a => Proxy a -> TypeLib -> TypeLib introspect :: (GQLObject a, Selectors (Rep a) (Text, ObjectField), GQLKind a) => Proxy a -> TypeLib -> TypeLib instance Data.Morpheus.Kind.GQLObject.GQLObject a => Data.Morpheus.Generics.DeriveResolvers.DeriveResolvers (GHC.Generics.K1 i a) instance (GHC.Generics.Selector s, Data.Morpheus.Kind.GQLObject.GQLObject a) => Data.Morpheus.Generics.TypeRep.Selectors (Data.Morpheus.Generics.Utils.RecSel s a) (Data.Text.Internal.Text, Data.Morpheus.Schema.Internal.Types.ObjectField) instance (Data.Morpheus.Kind.GQLObject.GQLObject a, Data.Morpheus.Kind.GQLArgs.GQLArgs p) => Data.Morpheus.Kind.GQLObject.GQLObject (p Data.Morpheus.Types.Describer.::-> a) instance Data.Morpheus.Kind.GQLObject.GQLObject a => Data.Morpheus.Kind.GQLObject.GQLObject (Data.Morpheus.Types.Describer.WithDeprecationArgs a) instance Data.Morpheus.Kind.GQLObject.GQLObject a => Data.Morpheus.Kind.GQLObject.GQLObject (GHC.Maybe.Maybe a) instance Data.Morpheus.Kind.GQLObject.GQLObject GHC.Types.Int instance Data.Morpheus.Kind.GQLObject.GQLObject GHC.Types.Float instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Text.Internal.Text instance Data.Morpheus.Kind.GQLObject.GQLObject GHC.Types.Bool instance Data.Morpheus.Kind.GQLObject.GQLObject a => Data.Morpheus.Kind.GQLObject.GQLObject [a] instance (GHC.Show.Show a, Data.Morpheus.Kind.GQLKind.GQLKind a, Data.Morpheus.Kind.GQLEnum.GQLEnum a) => Data.Morpheus.Kind.GQLObject.GQLObject (Data.Morpheus.Types.Describer.EnumOf a) instance Data.Morpheus.Kind.GQLScalar.GQLScalar a => Data.Morpheus.Kind.GQLObject.GQLObject (Data.Morpheus.Types.Describer.ScalarOf a) instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Morpheus.Schema.EnumValue.EnumValue instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Morpheus.Schema.Type.Type instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Morpheus.Schema.Utils.Utils.Field instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Morpheus.Schema.Utils.Utils.InputValue instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Morpheus.Schema.Schema.Schema instance Data.Morpheus.Kind.GQLObject.GQLObject Data.Morpheus.Schema.Directive.Directive module Data.Morpheus.Kind.GQLQuery class GQLQuery a encodeQuery :: GQLQuery a => a -> TypeLib -> SelectionSet -> ResolveIO JSType encodeQuery :: (GQLQuery a, Generic a, DeriveResolvers (Rep a)) => a -> TypeLib -> SelectionSet -> ResolveIO JSType querySchema :: GQLQuery a => a -> TypeLib querySchema :: (GQLQuery a, Selectors (Rep a) (Text, ObjectField)) => a -> TypeLib module Data.Morpheus.Kind.GQLMutation class GQLMutation a encodeMutation :: GQLMutation a => a -> SelectionSet -> ResolveIO JSType encodeMutation :: (GQLMutation a, Generic a, DeriveResolvers (Rep a)) => a -> SelectionSet -> ResolveIO JSType mutationSchema :: GQLMutation a => a -> TypeLib -> TypeLib mutationSchema :: (GQLMutation a, Selectors (Rep a) (Text, ObjectField)) => a -> TypeLib -> TypeLib instance Data.Morpheus.Kind.GQLMutation.GQLMutation () module Data.Morpheus.Kind class GQLObject a class GQLKind a description :: GQLKind a => Proxy a -> Text class GQLQuery a class GQLArgs p class GQLInput a class GQLEnum a class GQLMutation a class GQLScalar a parseValue :: GQLScalar a => ScalarValue -> Validation a serialize :: GQLScalar a => a -> ScalarValue module Data.Morpheus.Types.Request data GQLRequest GQLRequest :: Key -> Maybe Key -> Maybe (Map Key JSType) -> GQLRequest [query] :: GQLRequest -> Key [operationName] :: GQLRequest -> Maybe Key [variables] :: GQLRequest -> Maybe (Map Key JSType) instance Data.Aeson.Types.FromJSON.FromJSON Data.Morpheus.Types.Request.GQLRequest instance GHC.Generics.Generic Data.Morpheus.Types.Request.GQLRequest instance GHC.Show.Show Data.Morpheus.Types.Request.GQLRequest module Data.Morpheus.Types.Response data GQLResponse Data :: JSType -> GQLResponse Errors :: [JSONError] -> GQLResponse instance GHC.Generics.Generic Data.Morpheus.Types.Response.GQLResponse instance GHC.Show.Show Data.Morpheus.Types.Response.GQLResponse instance Data.Aeson.Types.ToJSON.ToJSON Data.Morpheus.Types.Response.GQLResponse module Data.Morpheus.Types.Types data GQLQueryRoot GQLQueryRoot :: FragmentLib -> RawOperator -> [(Key, JSType)] -> GQLQueryRoot [fragments] :: GQLQueryRoot -> FragmentLib [queryBody] :: GQLQueryRoot -> RawOperator [inputVariables] :: GQLQueryRoot -> [(Key, JSType)] type Variables = Map Key JSType data GQLRoot a b GQLRoot :: a -> b -> GQLRoot a b [query] :: GQLRoot a b -> a [mutation] :: GQLRoot a b -> b module Data.Morpheus.PreProcess.Variable resolveOperationVariables :: TypeLib -> Variables -> [EnhancedKey] -> [(Text, Variable)] -> Validation Variables resolveArgumentValue :: Variables -> (Text, RawArgument) -> Validation (Text, Argument) allVariableReferences :: [RawSelectionSet] -> [EnhancedKey] module Data.Morpheus.PreProcess.Resolve.Arguments resolveArguments :: Variables -> RawArguments -> Validation Arguments module Data.Morpheus.PreProcess.Resolve.ResolveRawQuery resolveRawQuery :: TypeLib -> FragmentLib -> Variables -> RawSelectionSet -> OutputObject -> Validation SelectionSet module Data.Morpheus.PreProcess.Fragment validateFragments :: TypeLib -> GQLQueryRoot -> Validation () module Data.Morpheus.PreProcess.PreProcess preProcessQuery :: TypeLib -> GQLQueryRoot -> Validation ValidOperator module Data.Morpheus.Parser.Parser parseGQL :: GQLRequest -> Validation GQLQueryRoot parseLineBreaks :: GQLRequest -> [Int] module Data.Morpheus interpreter :: (GQLQuery a, GQLMutation b) => GQLRoot a b -> ByteString -> IO ByteString module Data.Morpheus.Wrapper data GQLRoot a b GQLRoot :: a -> b -> GQLRoot a b [query] :: GQLRoot a b -> a [mutation] :: GQLRoot a b -> b data EnumOf a data ScalarOf a newtype a ::-> b Resolver :: (a -> IO (Either String b)) -> (::->) a b wrap :: Wrapper m => a -> m a unwrap :: Wrapper m => m a -> a instance Data.Morpheus.Wrapper.Wrapper Data.Morpheus.Types.Describer.EnumOf instance Data.Morpheus.Wrapper.Wrapper Data.Morpheus.Types.Describer.ScalarOf