Changelog for morpheus-graphql-core-0.24.0
Changelog
see latest changes on Github
0.19.0 - 21.03.2022
Minor Changes
- accept indexes for GraphQL Error Path (#662)
- supports aeson 2.0
0.18.0 - 08.11.2021
- GraphQL errors support additional field
extensions :: Maybe Value
- the parser reports invalid empty selection sets
- The parser is compliant with the GQL specification and supports all valid characters #581
- The parser performance improvement: on average 3-4 times faster, in some cases more than 100 times faster.
0.17.0 - 25.02.2021
New features
Data.Morpheus.Core
provides default GrapHQL type definitions withinternalSchema
- exposed
Data.Morpheus.Internal.Ext
Breaking changes
-
parseTypeSystemDefinition
andparseGQLDocument
is replaced withparseSchema
-
parseFullGQLDocument
replaced withparseFullSchema
-
removed
parseDSL
fromData.Morpheus.Core
-
following Types and modules are migrated to the new package
morpheus-graphql-app
:- following types and functions in
Data.Morpheus.Core
are moved in toData.Morpheus.App
:App
,AppData
,runApp
,withDebugger
,mkApp
,runAppStream
- typeClass
MapAPI
migrated fromData.Morpheus.Types.IO
is moved intoData.Morpheus.App
Data.Morpheus.Types.Internal.Resolving
moved asData.Morpheus.App.Internal.Resolving
- following types and functions in
-
RootResModel
was renamed toRootResolverValue
-
ResModel
was replaced with more generalResolverValue
-
GQLScalar
was replaced withEncodeScalar
andDecodeScalar
type-classes. -
Value.Float
is nowDouble
instead ofFloat
.
0.16.0 - 05.11.2020
Breaking Changes
-
signature changes:
-
render
:a -> Text
toa -> ByteString
-
parseTypeSystemDefinition :
Text -> Eventless (Schema VALID)
toByteString -> Eventless (Schema VALID)
-
parseTypeDefinitions:
Text -> Eventless [TypeDefinition ANY CONST]
toByteString -> 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.gschema { 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
andapp2
with typeApi 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
exportsConfig
defaultConfig
debugConfig
-
for better debugging, internal errors messages will display resolving state:
current TypeName
current Selection
OperationDefinition
SchemaDefinition
-
rendering graphql "AST". e.g
render (selection :: Selection VALID)
will render
{
user(arg1: 1) {
name
}
}
- quasiquoter
[dsl| <type definitions> |]
generatesSchema VALID
. - parser supports custom directive definition. e.g
directive @MyDirective on FIELD_DEFINITION | OBJECT
-
directive Validation for Document (TypeSystem).
-
supports of block string values. e.g:
query { createDeity( name: """ power bla \n sd blu \\ date """ ) { name } }
-
support of
schema
. issue #412schema { query: MyQuery }
Breaking Changes
-
Context' renamed to
ResolverContext' -
removed :
EventCon
fromData.Morpheus.Core
-
internal refactoring: changed AST. Schema AST Types now need parameter
stage = RAW | CONST | VALID
.Schema VALID
TypeDefinition VALID
FieldDefinition IN VALID
- ...
-
runApi requires argument config
runApi :: Schema s -> RootResModel event m -> Config -> GQLRequest -> ResponseStream event m (Value VALID)
0.13.0 - 22.06.2020
new features
- exposed:
Data.Morpheus.Types.GQLScalar
- exposed:
Data.Morpheus.Types.ID
- finished interface validation
- supports default values
minor changes
- internal refactoring
- added dependency
mtl
- validates strings as enum from JSON value
0.12.0 - 21.05.2020
New features
-
parser supports implements interfaces separated with empty spaces
type T implements A , B C & D {
-
introspection can render interfaces