Major Changes
-
7d3e300: BREAKING CHANGE
- Remove
rootValue
from subschemaConfig -
- Pass it through
ExecutionParams
or delegation options
- Pass it through
- Do not pass
info.rootValue
ifrootValue
is falsy
- Remove
-
d53e3be: BREAKING CHANGES;
Refactor the core delegation transforms into individual functions to modify request and results. This will improve the performance considerably by reducing the number of visits over the request document.
- Replace
CheckResultAndHandleErrors
withcheckResultAndHandleErrors
- Remove
delegationBindings
- Replace
AddArgumentsAsVariables
,AddSelectionSets
,AddTypenameToAbstract
,ExpandAbstractTypes
,FilterToSchema
,VisitSelectionSets
andWrapConcreteTypes
withprepareGatewayRequest
andfinalizeGatewayRequest
- Replace
-
dae6dc7: refactor: ExecutionParams type replaced by Request type
rootValue property is now a part of the Request type.
When delegating with delegateToSchema, rootValue can be set multiple ways:
- when using a custom executor, the custom executor can utilize a rootValue in whichever custom way it specifies.
- when using the default executor (execute/subscribe from graphql-js):
-- rootValue can be passed to delegateToSchema via a named option
-- rootValue can be included within a subschemaConfig
-- otherwise, rootValue is inferred from the originating schema
When using wrapSchema/stitchSchemas, a subschemaConfig can specify the createProxyingResolver function which can pass whatever rootValue it wants to delegateToSchema as above.
-
c42e811: BREAKING CHANGES;
- Rename
Request
toExecutionRequest
- Add required
operationType: OperationTypeNode
field inExecutionRequest
- Add
context
increateRequest
andcreateRequestInfo
instead ofdelegateToSchema
It doesn't rely on info.operation.operationType to allow the user to call an operation from different root type.
And it doesn't call getOperationAST again and again to get operation type from the document/operation because we have it in Request and ExecutionParams
https://github.com/ardatan/graphql-tools/pull/3166/files#diff-d4824895ea613dcc1f710c3ac82e952fe0ca12391b671f70d9f2d90d5656fdceR38Improvements;
- Memoize
defaultExecutor
for a singleGraphQLSchema
so allowgetBatchingExecutor
to memoizebatchingExecutor
correctly. - And there is no different
defaultExecutor
is created forsubscription
and other operation types. Only one executor is used.
Batch executor is memoized by
executor
reference butcreateDefaultExecutor
didn't memoize the default executor so this memoization wasn't working correctly onbatch-execute
side.
https://github.com/ardatan/graphql-tools/blob/remove-info-executor/packages/batch-execute/src/getBatchingExecutor.ts#L9 - Rename
-
7d3e300: BREAKING CHANGE
- Now it uses the native
AggregateError
implementation. The major difference is the individual errors are kept undererrors
property instead of the object itself withSymbol.iterator
.
// From; for (const error of aggregateError) // To; for (const error of aggregateError.errors)
- Now it uses the native
-
aa43054: BREAKING CHANGE: validations are skipped by default, use validateRequest: true to reenable
-
c0ca319: BREAKING CHANGE
- Remove Subscriber and use only Executor
-
- Now
Executor
can receiveAsyncIterable
and subscriptions will also be handled byExecutor
. This is a future-proof change for defer, stream and live queries
- Now
Patch Changes
- Updated dependencies [af9a78d]
- Updated dependencies [9c26b84]
- Updated dependencies [7d3e300]
- Updated dependencies [7d3e300]
- Updated dependencies [dae6dc7]
- Updated dependencies [6877b91]
- Updated dependencies [7d3e300]
- Updated dependencies [c42e811]
- Updated dependencies [7d3e300]
- Updated dependencies [8c8d4fc]
- Updated dependencies [7d3e300]
- Updated dependencies [7d3e300]
- Updated dependencies [7d3e300]
- Updated dependencies [74581cf]
- Updated dependencies [c0ca319]
- Updated dependencies [7d3e300]
- Updated dependencies [982c8f5]
- Updated dependencies [7d3e300]
- Updated dependencies [7d3e300]
- Updated dependencies [7d3e300]
- @graphql-tools/utils@8.0.0
- @graphql-tools/schema@8.0.0
- @graphql-tools/batch-execute@8.0.0