packages feed

morpheus-graphql-app 0.23.0 → 0.24.0

raw patch · 11 files changed

+41/−20 lines, 11 filesdep ~morpheus-graphql-coredep ~morpheus-graphql-testsPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: morpheus-graphql-core, morpheus-graphql-tests

API changes (from Hackage documentation)

Files

morpheus-graphql-app.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           morpheus-graphql-app-version:        0.23.0+version:        0.24.0 synopsis:       Morpheus GraphQL App description:    Build GraphQL APIs with your favourite functional language! category:       web, graphql@@ -140,7 +140,7 @@     , containers >=0.4.2.1 && <0.7.0     , hashable >=1.0.0 && <2.0.0     , megaparsec >=7.0.0 && <10.0.0-    , morpheus-graphql-core >=0.23.0 && <0.24.0+    , morpheus-graphql-core >=0.24.0 && <0.25.0     , mtl >=2.0.0 && <3.0.0     , relude >=0.3.0 && <2.0.0     , scientific >=0.3.6.2 && <0.4.0@@ -171,8 +171,8 @@     , hashable >=1.0.0 && <2.0.0     , megaparsec >=7.0.0 && <10.0.0     , morpheus-graphql-app-    , morpheus-graphql-core >=0.23.0 && <0.24.0-    , morpheus-graphql-tests >=0.23.0 && <0.24.0+    , morpheus-graphql-core >=0.24.0 && <0.25.0+    , morpheus-graphql-tests >=0.24.0 && <0.25.0     , mtl >=2.0.0 && <3.0.0     , relude >=0.3.0 && <2.0.0     , scientific >=0.3.6.2 && <0.4.0
src/Data/Morpheus/App.hs view
@@ -165,7 +165,8 @@                     selectionPosition = operationPosition operation,                     selectionAlias = Nothing,                     selectionContent = SelectionSet (operationSelection operation),-                    selectionDirectives = empty+                    selectionDirectives = empty,+                    selectionOrigin = Nothing                   }             }         )
src/Data/Morpheus/App/Internal/Resolving/ResolveValue.hs view
@@ -28,7 +28,13 @@     mkUnion,   ) import Data.Morpheus.Error (subfieldsNotSelected)-import Data.Morpheus.Internal.Utils (KeyOf (keyOf), selectOr, traverseCollection, (<:>))+import Data.Morpheus.Internal.Utils+  ( KeyOf (keyOf),+    empty,+    selectOr,+    traverseCollection,+    (<:>),+  ) import Data.Morpheus.Types.Internal.AST   ( GQLError,     Msg (msg),@@ -48,7 +54,7 @@     unitTypeName,     unpackName,   )-import Relude+import Relude hiding (empty)  resolveSelection ::   ( Monad m,@@ -78,25 +84,30 @@ resolveSelection rmap (ResRef ref) sel = ref >>= flip (resolveRef rmap) sel  withObject ::-  ( Monad m,-    MonadError GQLError m,+  ( MonadError GQLError m,     MonadReader ResolverContext m   ) =>   Maybe TypeName ->-  (SelectionSet VALID -> m value) ->+  (Maybe (SelectionSet VALID) -> m value) ->   SelectionContent VALID ->   m value withObject __typename f = updateCurrentType __typename . checkContent   where-    checkContent (SelectionSet selection) = f selection+    checkContent (SelectionSet selection) = f (Just selection)     checkContent (UnionSelection interface unionSel) = do       typename <- asks (typeName . currentType)-      selection <- selectOr (pure interface) ((interface <:>) . unionTagSelection) typename unionSel+      selection <- selectOr (pure interface) (fx interface) typename unionSel       f selection-    checkContent _ = do-      sel <- asks currentSelection-      throwError $ subfieldsNotSelected (selectionName sel) "" (selectionPosition sel)+      where+        fx (Just x) y = Just <$> (x <:> unionTagSelection y)+        fx Nothing y = pure $ Just $ unionTagSelection y+    checkContent _ = noEmptySelection +noEmptySelection :: (MonadError GQLError m, MonadReader ResolverContext m) => m value+noEmptySelection = do+  sel <- asks currentSelection+  throwError $ subfieldsNotSelected (selectionName sel) "" (selectionPosition sel)+ resolveRef ::   ( MonadError GQLError m,     MonadReader ResolverContext m@@ -127,10 +138,9 @@   ) =>   ResolverMap m ->   ObjectTypeResolver m ->-  SelectionSet VALID ->+  Maybe (SelectionSet VALID) ->   m ValidValue-resolveObject rmap drv =-  fmap Object . traverseCollection resolver+resolveObject rmap drv = fmap Object . maybe (pure empty) (traverseCollection resolver)   where     resolver currentSelection = do       t <- askFieldTypeName (selectionName currentSelection)
src/Data/Morpheus/App/Internal/Resolving/RootResolverValue.hs view
@@ -89,7 +89,7 @@   selection =     do       root <- runResolverStateT (toResolverStateT res) ctx-      runResolver channels (resolveObject mempty root selection) ctx+      runResolver channels (resolveObject mempty root (Just selection)) ctx  runRootResolverValue :: Monad m => RootResolverValue e m -> ResolverContext -> ResponseStream e m (Value VALID) runRootResolverValue@@ -136,7 +136,7 @@     mergeRoot y x  introspection :: Monad m => SelectionSet VALID -> ResolverContext -> ResponseStream event m ValidValue-introspection selection ctx@ResolverContext {schema} = runResolver Nothing (resolveObject mempty (schemaAPI schema) selection) ctx+introspection selection ctx@ResolverContext {schema} = runResolver Nothing (resolveObject mempty (schemaAPI schema) (Just selection)) ctx  mergeRoot :: MonadError GQLError m => ValidValue -> ValidValue -> m ValidValue mergeRoot (Object x) (Object y) = Object <$> merge x y
test/api/validation/fragment/on-interface-inline/query.gql view
@@ -5,6 +5,7 @@     }   }   character {+    __typename     ... on Character {       name     }
test/api/validation/fragment/on-interface-type-casting-inline/query.gql view
@@ -1,5 +1,6 @@ {   character {+    __typename     ... on Character {       name     }
test/api/validation/fragment/on-interface-type-casting/query.gql view
@@ -1,5 +1,6 @@ {   character {+    __typename     ...OnCharacter     ...onDeity     ...onHero
test/api/validation/fragment/on-interface/query.gql view
@@ -3,6 +3,7 @@     ...OnSupernatural   }   character {+    __typename     ...OnCharacter   } }
test/named-resolvers/entities/query.gql view
@@ -1,6 +1,7 @@ query {   entities {     ... on Realm {+      __typename       name       owner {         name@@ -14,6 +15,7 @@       }     }     ... on Deity {+      __typename       name       power     }
test/named-resolvers/entity-by-id/query.gql view
@@ -1,12 +1,14 @@ query {   zeus: entity(id: "zeus") {     ... on Deity {+      __typename       name       power     }   }   olympus: entity(id: "olympus") {     ... on Realm {+      __typename       name       owner {         name
test/named-resolvers/entity-ext-by-id/query.gql view
@@ -1,12 +1,14 @@ query {   zeus: entity(id: "zeus") {     ... on Deity {+      __typename       name       power     }   }   olympus: entity(id: "olympus") {     ... on Realm {+      __typename       name       owner {         name