@graphql-tools/executor@2.0.0
Major Changes
-
#8346
2273c21
Thanks @ardatan! - This release adds GraphQL v17 support and aligns
the existing executor implementation with the latest GraphQL v17 API changes. The following
changes are included:getAsyncHelpersis now available onGraphQLResolveInfo. Itstrackmethod is used whenever
waitUntilis available, as in Yoga's
Explicit Resource ManagementgetAbortSignalis now available onGraphQLResolveInfo, matching behavior that was already
available in this executor implementation, as in Yoga's
Execution CancellationGraphQLResolveInfoautomatically alignsvariableValuesaccording to the GraphQL version for
better compatibility. In GraphQL v17 and above,variableValuesfollows the wrapped shape
({ coerced, sources }) expected by GraphQL APIs. In GraphQL v16 and below,variableValues
remains a flat map as in previous versions.- If your custom scalar resolvers define
__serializeand__parseValue, they are automatically
mapped tocoerceOutputValueandcoerceInputValuein GraphQL v17. - BREAKING:
@graphql-tools/executor'sgetVariableValuesnow returns{ variableValues }
on success, wherevariableValuesis aVariableValuesobject ({ coerced, sources }). On
failure, it returns{ errors }. - BREAKING:
collectFields,shouldIncludeNode,getDeferValues, andcollectSubFieldsnow
need aVariableValuesobject instead ofRecord<string, any>for thevariableValues
argument. visitResultnow internally normalizesExecutionRequest.variablesinto a
VariableValues-compatible shape ({ coerced, sources }) before traversing selections.
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/utils@12.0.0
Major Changes
-
#8346
2273c21
Thanks @ardatan! - This release adds GraphQL v17 support and aligns
the existing executor implementation with the latest GraphQL v17 API changes. The following
changes are included:getAsyncHelpersis now available onGraphQLResolveInfo. Itstrackmethod is used whenever
waitUntilis available, as in Yoga's
Explicit Resource ManagementgetAbortSignalis now available onGraphQLResolveInfo, matching behavior that was already
available in this executor implementation, as in Yoga's
Execution CancellationGraphQLResolveInfoautomatically alignsvariableValuesaccording to the GraphQL version for
better compatibility. In GraphQL v17 and above,variableValuesfollows the wrapped shape
({ coerced, sources }) expected by GraphQL APIs. In GraphQL v16 and below,variableValues
remains a flat map as in previous versions.- If your custom scalar resolvers define
__serializeand__parseValue, they are automatically
mapped tocoerceOutputValueandcoerceInputValuein GraphQL v17. - BREAKING:
@graphql-tools/executor'sgetVariableValuesnow returns{ variableValues }
on success, wherevariableValuesis aVariableValuesobject ({ coerced, sources }). On
failure, it returns{ errors }. - BREAKING:
collectFields,shouldIncludeNode,getDeferValues, andcollectSubFieldsnow
need aVariableValuesobject instead ofRecord<string, any>for thevariableValues
argument. visitResultnow internally normalizesExecutionRequest.variablesinto a
VariableValues-compatible shape ({ coerced, sources }) before traversing selections.
@graphql-tools/schema@10.1.0
Minor Changes
-
#8346
2273c21
Thanks @ardatan! - This release adds GraphQL v17 support and aligns
the existing executor implementation with the latest GraphQL v17 API changes. The following
changes are included:getAsyncHelpersis now available onGraphQLResolveInfo. Itstrackmethod is used whenever
waitUntilis available, as in Yoga's
Explicit Resource ManagementgetAbortSignalis now available onGraphQLResolveInfo, matching behavior that was already
available in this executor implementation, as in Yoga's
Execution CancellationGraphQLResolveInfoautomatically alignsvariableValuesaccording to the GraphQL version for
better compatibility. In GraphQL v17 and above,variableValuesfollows the wrapped shape
({ coerced, sources }) expected by GraphQL APIs. In GraphQL v16 and below,variableValues
remains a flat map as in previous versions.- If your custom scalar resolvers define
__serializeand__parseValue, they are automatically
mapped tocoerceOutputValueandcoerceInputValuein GraphQL v17. - BREAKING:
@graphql-tools/executor'sgetVariableValuesnow returns{ variableValues }
on success, wherevariableValuesis aVariableValuesobject ({ coerced, sources }). On
failure, it returns{ errors }. - BREAKING:
collectFields,shouldIncludeNode,getDeferValues, andcollectSubFieldsnow
need aVariableValuesobject instead ofRecord<string, any>for thevariableValues
argument. visitResultnow internally normalizesExecutionRequest.variablesinto a
VariableValues-compatible shape ({ coerced, sources }) before traversing selections.
Patch Changes
@graphql-tools/executor-apollo-link@2.0.13
Patch Changes
-
#8346
2273c21
Thanks @ardatan! - dependencies updates:- Updated dependency
graphql@^15.2.0 || ^16.0.0 || ^17.0.0↗︎
(from^15.2.0 || ^16.0.0, inpeerDependencies)
- Updated dependency
-
#8346
2273c21
Thanks @ardatan! - dependencies updates:- Updated dependency
graphql@^15.2.0 || ^16.0.0 || ^17.0.0↗︎
(from^15.2.0 || ^16.0.0, inpeerDependencies)
- Updated dependency
-
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/executor-envelop@4.0.13
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/executor-legacy-ws@1.1.33
Patch Changes
-
#8353
755d699
Thanks @dependabot! - dependencies updates:- Updated dependency
ws@^8.21.2↗︎ (from^8.21.1,
independencies)
- Updated dependency
-
#8358
07cd760
Thanks @dependabot! - dependencies updates:- Updated dependency
ws@^8.21.3↗︎ (from^8.21.2,
independencies)
- Updated dependency
-
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/executor-urql-exchange@1.0.35
Patch Changes
-
#8346
2273c21
Thanks @ardatan! - dependencies updates:- Updated dependency
graphql@^15.2.0 || ^16.0.0 || ^17.0.0↗︎
(from^15.2.0 || ^16.0.0, inpeerDependencies)
- Updated dependency
-
#8346
2273c21
Thanks @ardatan! - dependencies updates:- Updated dependency
graphql@^15.2.0 || ^16.0.0 || ^17.0.0↗︎
(from^15.2.0 || ^16.0.0, inpeerDependencies)
- Updated dependency
-
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/executor-yoga@3.0.43
Patch Changes
-
#8346
2273c21
Thanks @ardatan! - dependencies updates:- Updated dependency
graphql@^15.2.0 || ^16.0.0 || ^17.0.0↗︎
(from^15.2.0 || ^16.0.0, inpeerDependencies)
- Updated dependency
-
#8346
2273c21
Thanks @ardatan! - dependencies updates:- Updated dependency
graphql@^15.2.0 || ^16.0.0 || ^17.0.0↗︎
(from^15.2.0 || ^16.0.0, inpeerDependencies)
- Updated dependency
-
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
- @graphql-tools/executor-envelop@4.0.13
@graphql-tools/graphql-tag-pluck@8.3.36
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
graphql-tools@9.0.34
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/schema@10.1.0
@graphql-tools/import@7.1.19
Patch Changes
-
#8259
85f1de0
Thanks @lemonmade! - perf(import): remove redundant work in
addDefinition's dependency traversaladdDefinitionrecurses across the whole dependency graph while assembling each definition's
imported dependencies. Two things were repeated on every call:visitedFiles.get(filePath)— invariant for the duration of theprocessImportcall, so it's
now looked up once and hoisted out of the recursion.- the per-field dependency-name derivation (
visitFieldDefinitionNode/
visitInputValueDefinitionNodeinto a freshMap) — a pure function of the field node and the
file's static dependency map, so it's now memoized by field identity instead of recomputed every
time the owning definition is added to a set.
Pure performance change; output is unchanged (the existing import tests pass and a real-world
~12k-line schema produces byte-identical results). Building on theprintmemoization, this took
the same codegen pass from ~17s to ~13s. The remaining cost is the O(n²) shape of the closure
traversal itself (each definition's transitive set is still rebuilt independently); reducing that
is left for a follow-up as it's a more invasive change. -
#8258
6bacf57
Thanks @lemonmade! - perf(import): memoizeprintper node when
assembling imported definitionsprocessImportde-duplicates the collected definitions by printing each one to SDL and comparing
the strings. A single definition node appears in many of the dependency sets (any
widely-referenced type is pulled in by every definition that depends on it), soprintwas called
roughly O(n²) times for n unique nodes. For large, densely-connected schemas this print/visit work
dominates import time.Memoizing
printby node identity makes each unique node print at most once.printis a pure
function of its node, so the output is identical; this is a pure performance change. On a
~12k-line schema imported across three projects, this reduced a downstream codegen pass from ~133s
to ~17s. -
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/links@10.0.13
Patch Changes
-
#8324
bdcce06
Thanks @renovate! - dependencies updates:- Updated dependency
apollo-upload-client@^20.0.0↗︎
(from^19.0.0, independencies)
- Updated dependency
-
#8326
f77fd40
Thanks @renovate! - dependencies updates:- Updated dependency
apollo-upload-client@^20.0.0↗︎
(from^19.0.0, independencies)
- Updated dependency
-
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/load@8.1.16
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/schema@10.1.0
- @graphql-tools/utils@12.0.0
@graphql-tools/apollo-engine-loader@8.0.35
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/code-file-loader@8.1.37
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
- @graphql-tools/graphql-tag-pluck@8.3.36
@graphql-tools/git-loader@8.0.41
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
- @graphql-tools/graphql-tag-pluck@8.3.36
@graphql-tools/github-loader@9.1.7
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
- @graphql-tools/graphql-tag-pluck@8.3.36
@graphql-tools/graphql-file-loader@8.1.19
Patch Changes
- Updated dependencies
[2273c21,
85f1de0,
6bacf57]:- @graphql-tools/utils@12.0.0
- @graphql-tools/import@7.1.19
@graphql-tools/json-file-loader@8.0.33
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/module-loader@8.0.33
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/url-loader@9.1.7
Patch Changes
-
#8353
755d699
Thanks @dependabot! - dependencies updates:- Updated dependency
ws@^8.21.2↗︎ (from^8.21.1,
independencies)
- Updated dependency
-
#8358
07cd760
Thanks @dependabot! - dependencies updates:- Updated dependency
ws@^8.21.3↗︎ (from^8.21.2,
independencies)
- Updated dependency
-
Updated dependencies
[755d699,
07cd760,
2273c21]:- @graphql-tools/executor-legacy-ws@1.1.33
- @graphql-tools/utils@12.0.0
@graphql-tools/merge@9.2.3
Patch Changes
-
#8349
7fe0319
Thanks @aarne! - Pass the collected directive definitions to
mergeSchemaDefsso repeatable directives onschemadefinitions andextend schemaextensions
(e.g. a repeatable@link) are kept as separate instances instead of being collapsed and having
their arguments merged. -
Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/mock@9.1.13
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/schema@10.1.0
- @graphql-tools/utils@12.0.0
@graphql-tools/node-require@7.0.45
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
- @graphql-tools/load@8.1.16
- @graphql-tools/graphql-file-loader@8.1.19
@graphql-tools/relay-operation-optimizer@7.1.9
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0
@graphql-tools/resolvers-composition@7.0.36
Patch Changes
- Updated dependencies
[2273c21]:- @graphql-tools/utils@12.0.0