morpheus-graphql-core 0.27.2 → 0.27.3
raw patch · 4 files changed
+26/−19 lines, 4 filesdep ~transformersdep ~vectorPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: transformers, vector
API changes (from Hackage documentation)
Files
- morpheus-graphql-core.cabal +5/−5
- src/Data/Mergeable/OrdMap.hs +6/−1
- src/Data/Morpheus/Types/Internal/AST/TypeSystem.hs +4/−3
- src/Data/Morpheus/Validation/Query/UnionSelection.hs +11/−10
morpheus-graphql-core.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: morpheus-graphql-core-version: 0.27.2+version: 0.27.3 synopsis: Morpheus GraphQL Core description: Build GraphQL APIs with your favorite functional language! category: web, graphql@@ -251,9 +251,9 @@ , template-haskell >=2.0.0 && <3.0.0 , text >=1.2.3 && <3.0.0 , th-lift-instances >=0.1.1 && <0.3.0- , transformers >=0.3.0 && <0.6.0+ , transformers >=0.3.0 && <0.7.0 , unordered-containers >=0.2.8 && <0.3.0- , vector >=0.12.0.1 && <0.13.0+ , vector >=0.12.0.1 && <0.15.0 default-language: Haskell2010 test-suite morpheus-graphql-core-test@@ -282,7 +282,7 @@ , template-haskell >=2.0.0 && <3.0.0 , text >=1.2.3 && <3.0.0 , th-lift-instances >=0.1.1 && <0.3.0- , transformers >=0.3.0 && <0.6.0+ , transformers >=0.3.0 && <0.7.0 , unordered-containers >=0.2.8 && <0.3.0- , vector >=0.12.0.1 && <0.13.0+ , vector >=0.12.0.1 && <0.15.0 default-language: Haskell2010
src/Data/Mergeable/OrdMap.hs view
@@ -17,6 +17,7 @@ module Data.Mergeable.OrdMap ( OrdMap,+ ordMapDelete, ) where @@ -73,7 +74,7 @@ instance (NameCollision e a, Eq k, Hashable k, Monad m, MonadError e m) => Merge m (OrdMap k a) where merge (OrdMap ks1 x) (OrdMap ks2 y) = OrdMap (mergeOrder ks1 ks2) <$> merge x y -mergeOrder :: Eq a => [a] -> [a] -> [a]+mergeOrder :: (Eq a) => [a] -> [a] -> [a] mergeOrder ks1 ks2 = ks1 <> (ks2 \\ ks1) instance@@ -85,3 +86,7 @@ FromList m OrdMap k a where fromList xs = OrdMap (map fst xs) <$> fromList xs++ordMapDelete :: (Eq k, Hashable k) => k -> OrdMap k a -> OrdMap k a+ordMapDelete k (OrdMap order entries) =+ OrdMap (filter (k /=) order) (HM.delete k entries)
src/Data/Morpheus/Types/Internal/AST/TypeSystem.hs view
@@ -474,9 +474,10 @@ Schema s -> [TypeDefinition ANY s] possibleInterfaceTypes name schema =- mapMaybe- (isPossibleInterfaceType name)- (toList $ typeDefinitions schema)+ sortWith typeName $+ mapMaybe+ (isPossibleInterfaceType name)+ (toList $ typeDefinitions schema) isPossibleInterfaceType :: TypeName ->
src/Data/Morpheus/Validation/Query/UnionSelection.hs view
@@ -16,14 +16,15 @@ where import Control.Monad.Except (MonadError (throwError))-import qualified Data.HashMap.Lazy as HM-import Data.Mergeable (OrdMap)+import Data.Mergeable (IsMap (toAssoc), OrdMap)+import Data.Mergeable.OrdMap (ordMapDelete) import Data.Morpheus.Internal.Utils ( empty, fromElems, mergeConcat, selectOr, startHistory,+ unsafeFromList, ) import Data.Morpheus.Types.Internal.AST.DirectiveLocation (DirectiveLocation (..)) import Data.Morpheus.Types.Internal.AST.Name (TypeName)@@ -100,11 +101,11 @@ tagUnionFragments :: [UnionTag] -> OrdMap TypeName (TypeDefinition IMPLEMENTABLE VALID) ->- HashMap TypeName [SelectionSet VALID]+ OrdMap TypeName [SelectionSet VALID] tagUnionFragments fragments types = fmap categorizeType getSelectedTypes where- getSelectedTypes :: HashMap TypeName [TypeName]- getSelectedTypes = fromList (map select fragments)+ getSelectedTypes :: OrdMap TypeName [TypeName]+ getSelectedTypes = unsafeFromList (map select fragments) where select UnionTag {unionTagName} = ( unionTagName,@@ -135,19 +136,19 @@ joinClusters :: Maybe (SelectionSet VALID) ->- HashMap TypeName [SelectionSet VALID] ->+ OrdMap TypeName [SelectionSet VALID] -> FragmentValidator s (SelectionContent VALID) joinClusters maybeSelSet typedSelections | null typedSelections = maybe noEmptySelection (pure . SelectionSet) maybeSelSet | otherwise =- traverse mkUnionTag (HM.toList typedSelections)+ traverse mkUnionTag (toAssoc typedSelections) >>= fmap (UnionSelection maybeSelSet) . startHistory . fromElems where mkUnionTag :: (TypeName, [SelectionSet VALID]) -> FragmentValidator s UnionTag mkUnionTag (typeName, fragments) = UnionTag typeName <$> (maybeMerge (toList maybeSelSet <> fragments) >>= maybe noEmptySelection pure) validateInterfaceSelection ::- ValidateFragmentSelection s =>+ (ValidateFragmentSelection s) => (Fragment RAW -> FragmentValidator s (SelectionSet VALID)) -> (TypeDefinition IMPLEMENTABLE VALID -> SelectionSet RAW -> FragmentValidator s (SelectionSet VALID)) -> TypeDefinition IMPLEMENTABLE VALID ->@@ -163,13 +164,13 @@ validSelectionSet <- traverse (validate typeDef) selectionSet let tags = tagUnionFragments spreads possibleTypes defaultSelection <- maybeMerge (toList validSelectionSet <> selectOr [] id typeName tags)- joinClusters defaultSelection (HM.delete typeName tags)+ joinClusters defaultSelection (ordMapDelete typeName tags) mkUnionRootType :: FragmentValidator s (TypeDefinition IMPLEMENTABLE VALID) mkUnionRootType = (`mkType` DataObject [] empty) <$> asksScope currentTypeName validateUnionSelection ::- ValidateFragmentSelection s =>+ (ValidateFragmentSelection s) => (Fragment RAW -> FragmentValidator s (SelectionSet VALID)) -> (TypeDefinition IMPLEMENTABLE VALID -> SelectionSet RAW -> FragmentValidator s (SelectionSet VALID)) -> UnionTypeDefinition OUT VALID ->