4.0.0 (2018-04-16)
This release contains big improvement for solving hoisting problems with types which import each other.
Breaking changes may or may not hit your plugins built on top of graphql-compose. All my plugins already updated and fixes were very small. Breaking changes hit only plugins and did not hit my apps code. So most users may upgrade graphql-compose
and its plugins without any code changes.
Before 4.0.0 graphql-compose keep field configs in graphql-js
format. Now it keeps it in own format, which allows changing any fields or args without resolving the whole type definition. You may safely wrap in thunk (closure, arrow function) any fieldConfig
, argConfig
or just type
property in these configs. They will be fully resolved by graphql-js
on startup phase, or partially when you make additional transformations of desired fields or args. In most cases, it helps to avoid hoisting problems with keeping the convenient ability of type transformations.
Features
- TypeComposer: add methods
getFieldArgType()
,getFieldConfig()
(08b6897) - TypeComposer: improve "hoisting problem" tenacity, improve flowtype defs (f10be34)
- InputTypeComposer: add
getFieldConfig()
method (1f9891b) - InputTypeComposer: improve "hoisting problem" tenacity, improve flowtype defs (dcca7d0)
- Resolver: add
getArgConfig()
,extendArg()
methods (a6b15eb) - Resolver: improve "hoisting problem" tenacity, improve flowtype defs (a6a3092)
- TypeMapper:
createType()
method now returns same type for equal TypeDefinitionString (3d14dc1) - toInputObject: use new TypeComposer.getFieldConfig() method (fc58b69)
- configAsThunk: add
resolveArgConfigAsThunk()
method. (ebc9583)
BREAKING CHANGES
- TypeComposer:
TypeComposer.getField()
andTypeComposer.getFields()
now return
ComposeFieldConfig instead of GraphQLFieldConfig. Use newInputTypeComposer.getFieldConfig()
method if you want to get GraphQLFieldConfig. - InputTypeComposer:
InputTypeComposer.getField()
andInputTypeComposer.getFields()
now return
ComposeInputFieldConfig instead of GraphQLInputFieldConfig. Use new
InputTypeComposer.getFieldConfig()
method if you want to get GraphQLInputFieldConfig. - Resolver:
Resolver.type
property now keepComposeOutputType
.
UseResolver.getType()
method if you want to getGraphQLOutputType
. - Resolver:
Resolver.getArg()
andResolver.getArgs()
now return
ComposeFieldConfigArgument instead of GraphQLFieldConfigArgument. Use
newResolver.getArgConfig()
method if you want to get
GraphQLFieldConfigArgument. - toInputObject:
convertInputObjectField()
now get and return
GraphQLType instead of FieldConfig.