core Functionalities of Morpheus GraphQL, can be used to build GraphQL server, client ..
parser
validar
api
Build GraphQL api with Core
schema :: Schema VALID
schema =
[dsl|
type Query {
deity(name: String): Deity!
}
type Deity {
name: String!
power: [String!]!
}
|]
resolver :: Monad m => RootResModel e m
resolver =
RootResModel
{ query =
pure $
mkObject
"Query"
[("deity", resolveDeity)],
mutation = pure mkNull,
subscription = pure mkNull
}
resolveDeity :: (WithOperation o, Monad m) => Resolver o e m (ResModel o e m)
resolveDeity =
pure $
mkObject
"Deity"
[ ("name", pure $ mkString "Morpheus"),
("power", pure $ mkList [mkString "Shapeshifting"])
]
api :: ByteString -> IO ByteString
api = runApp (mkApp schema resolver)
Changes
Changelog
0.16.0 - 05.11.2020
Breaking Changes
signature changes:
render:
a -> Text
to a -> ByteString
parseTypeSystemDefinition :
Text -> Eventless (Schema VALID)
to ByteString -> Eventless (Schema VALID)
parseTypeDefinitions:
Text -> Eventless [TypeDefinition ANY CONST]
to ByteString -> Eventless [TypeDefinition ANY CONST]
new features
Minor Changes
parser performance optimization
0.15.1 - 12.09.2020
relaxed upper boundary of megaparsec up to 10.0.0
0.15.0 - 12.09.2020
new features
render renders SchemaDefinition e.g
schema {
query: MyQuery
}
query validator automatically adds __typename to interface types
type : App
api :: a -> m b
api = runApp (mkApp schema resolvers)
App supports semigroup(schema Stitching):
if whe have two apps app1 and app2 with type Api EVENT IO we can merge it as.
mergedApi :: a -> m b
mergedApi = runApp (app1 <> app2)
runApp changed signature to:
runApp :: Api e m -> a -> m b
Breaking Changes
removed runApi.
Minor Changes
internal refactoring
0.14.1 - 16.08.2020
0.14.0 - 15.08.2020
new features
query validation supports interfaces
exposed: Data.Morpheus.Types.SelectionTree
configurable api: Data.Morpheus.Core exports
Config
defaultConfig
debugConfig
for better debugging, internal errors messages will display resolving state: