@graphql-tools/executor 4.1.2-alpha-20261020173910-a605a674247c515b91bf401145ced64cc938b464 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/execution/execute.js
CHANGED
|
@@ -1010,10 +1010,15 @@ function collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, re
|
|
|
1010
1010
|
ensureIncrementalCollectState(exeContext);
|
|
1011
1011
|
const parentDeferUsage = asyncPayloadRecord?.type === 'defer' ? asyncPayloadRecord.deferUsage : undefined;
|
|
1012
1012
|
const subfieldCache = (exeContext.incrementalSubfieldCache ??= new WeakMap());
|
|
1013
|
-
let
|
|
1013
|
+
let collectedByType = subfieldCache.get(fieldNodes);
|
|
1014
|
+
if (collectedByType == null) {
|
|
1015
|
+
collectedByType = new WeakMap();
|
|
1016
|
+
subfieldCache.set(fieldNodes, collectedByType);
|
|
1017
|
+
}
|
|
1018
|
+
let collected = collectedByType.get(returnType);
|
|
1014
1019
|
if (collected == null) {
|
|
1015
1020
|
collected = (0, incrementalCollect_js_1.collectIncrementalSubfields)(exeContext.schema, exeContext.fragments, exeContext.variableValues, returnType, fieldNodes, parentDeferUsage, exeContext.deferUsageByFieldNode);
|
|
1016
|
-
|
|
1021
|
+
collectedByType.set(returnType, collected);
|
|
1017
1022
|
}
|
|
1018
1023
|
const { groupedFieldSet } = collected;
|
|
1019
1024
|
const parentDeferUsages = new Set();
|
package/esm/execution/execute.js
CHANGED
|
@@ -995,10 +995,15 @@ function collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, re
|
|
|
995
995
|
ensureIncrementalCollectState(exeContext);
|
|
996
996
|
const parentDeferUsage = asyncPayloadRecord?.type === 'defer' ? asyncPayloadRecord.deferUsage : undefined;
|
|
997
997
|
const subfieldCache = (exeContext.incrementalSubfieldCache ??= new WeakMap());
|
|
998
|
-
let
|
|
998
|
+
let collectedByType = subfieldCache.get(fieldNodes);
|
|
999
|
+
if (collectedByType == null) {
|
|
1000
|
+
collectedByType = new WeakMap();
|
|
1001
|
+
subfieldCache.set(fieldNodes, collectedByType);
|
|
1002
|
+
}
|
|
1003
|
+
let collected = collectedByType.get(returnType);
|
|
999
1004
|
if (collected == null) {
|
|
1000
1005
|
collected = collectIncrementalSubfields(exeContext.schema, exeContext.fragments, exeContext.variableValues, returnType, fieldNodes, parentDeferUsage, exeContext.deferUsageByFieldNode);
|
|
1001
|
-
|
|
1006
|
+
collectedByType.set(returnType, collected);
|
|
1002
1007
|
}
|
|
1003
1008
|
const { groupedFieldSet } = collected;
|
|
1004
1009
|
const parentDeferUsages = new Set();
|
package/package.json
CHANGED
|
@@ -69,10 +69,12 @@ export interface ExecutionContext<TVariables = any, TContext = any> {
|
|
|
69
69
|
*/
|
|
70
70
|
deferUsagesForFieldNodes?: WeakMap<ReadonlyArray<FieldNode>, DeferUsageSet>;
|
|
71
71
|
/**
|
|
72
|
-
* Memoize incremental subfield collect per fieldNodes array
|
|
73
|
-
* items
|
|
72
|
+
* Memoize incremental subfield collect per fieldNodes array and
|
|
73
|
+
* concrete return type so list items of the same type reuse DeferUsage
|
|
74
|
+
* objects without sharing type-conditioned selections across a
|
|
75
|
+
* heterogeneous interface or union list.
|
|
74
76
|
*/
|
|
75
|
-
incrementalSubfieldCache?: WeakMap<ReadonlyArray<FieldNode>, ReturnType<typeof collectIncrementalSubfields
|
|
77
|
+
incrementalSubfieldCache?: WeakMap<ReadonlyArray<FieldNode>, WeakMap<GraphQLObjectType, ReturnType<typeof collectIncrementalSubfields>>>;
|
|
76
78
|
signal?: AbortSignal;
|
|
77
79
|
getAbortSignal: () => AbortSignal | undefined;
|
|
78
80
|
getAsyncHelpers: () => {
|
|
@@ -69,10 +69,12 @@ export interface ExecutionContext<TVariables = any, TContext = any> {
|
|
|
69
69
|
*/
|
|
70
70
|
deferUsagesForFieldNodes?: WeakMap<ReadonlyArray<FieldNode>, DeferUsageSet>;
|
|
71
71
|
/**
|
|
72
|
-
* Memoize incremental subfield collect per fieldNodes array
|
|
73
|
-
* items
|
|
72
|
+
* Memoize incremental subfield collect per fieldNodes array and
|
|
73
|
+
* concrete return type so list items of the same type reuse DeferUsage
|
|
74
|
+
* objects without sharing type-conditioned selections across a
|
|
75
|
+
* heterogeneous interface or union list.
|
|
74
76
|
*/
|
|
75
|
-
incrementalSubfieldCache?: WeakMap<ReadonlyArray<FieldNode>, ReturnType<typeof collectIncrementalSubfields
|
|
77
|
+
incrementalSubfieldCache?: WeakMap<ReadonlyArray<FieldNode>, WeakMap<GraphQLObjectType, ReturnType<typeof collectIncrementalSubfields>>>;
|
|
76
78
|
signal?: AbortSignal;
|
|
77
79
|
getAbortSignal: () => AbortSignal | undefined;
|
|
78
80
|
getAsyncHelpers: () => {
|