Skip to content

Commit 44a6d0f

Browse files
committed
EPR data cannot be a Promise, only whole EPR
1 parent 1af23a8 commit 44a6d0f

File tree

1 file changed

+31
-33
lines changed

1 file changed

+31
-33
lines changed

src/execution/execute.js

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export type ExecutionResult = {
116116
*/
117117
export type ExecutionPartialResult<T> = MaybePromise<{
118118
errors?: $ReadOnlyArray<GraphQLError>,
119-
data?: MaybePromise<T | null>,
119+
data?: T | null,
120120
}>;
121121

122122
export type ExecutionArgs = {|
@@ -265,20 +265,12 @@ function buildResponse(
265265
context: ExecutionContext,
266266
result: ExecutionPartialResult<mixed>,
267267
) {
268-
const resultpromise = getPromise(result);
269-
if (resultpromise) {
270-
return resultpromise.then(resolved =>
268+
const promise = getPromise(result);
269+
if (promise) {
270+
return promise.then(resolved =>
271271
buildResponse(context, mergeErrors(context, resolved)),
272272
);
273273
}
274-
if (result.data) {
275-
const promise = getPromise(result.data);
276-
if (promise) {
277-
return promise.then(resolveddata =>
278-
buildResponse(context, mergeErrors(context, { data: resolveddata })),
279-
);
280-
}
281-
}
282274
if (result.data && (!result.errors || !result.errors.length)) {
283275
return { data: result.data };
284276
}
@@ -1110,7 +1102,7 @@ function completeListValue(
11101102
});
11111103

11121104
return containsPromise
1113-
? { data: Promise.all(completedResults) }
1105+
? Promise.all(completedResults).then(data => ({ data }))
11141106
: { data: completedResults };
11151107
}
11161108

@@ -1246,16 +1238,19 @@ function completeObjectValue(
12461238
if (!isTypeOfResult) {
12471239
throw invalidReturnTypeError(returnType, result, fieldNodes);
12481240
}
1249-
return {
1250-
data: collectAndExecuteSubfields(
1251-
exeContext,
1252-
returnType,
1253-
fieldNodes,
1254-
info,
1255-
path,
1256-
result,
1257-
),
1258-
};
1241+
const data = collectAndExecuteSubfields(
1242+
exeContext,
1243+
returnType,
1244+
fieldNodes,
1245+
info,
1246+
path,
1247+
result,
1248+
);
1249+
const subpromise = getPromise(data);
1250+
if (subpromise) {
1251+
return subpromise.then(d => ({ data: d }));
1252+
}
1253+
return { data };
12591254
});
12601255
}
12611256

@@ -1264,16 +1259,19 @@ function completeObjectValue(
12641259
}
12651260
}
12661261

1267-
return {
1268-
data: collectAndExecuteSubfields(
1269-
exeContext,
1270-
returnType,
1271-
fieldNodes,
1272-
info,
1273-
path,
1274-
result,
1275-
),
1276-
};
1262+
const subfields = collectAndExecuteSubfields(
1263+
exeContext,
1264+
returnType,
1265+
fieldNodes,
1266+
info,
1267+
path,
1268+
result,
1269+
);
1270+
const subfpromise = getPromise(subfields);
1271+
if (subfpromise) {
1272+
return subfpromise.then(d => ({ data: d }));
1273+
}
1274+
return { data: subfields };
12771275
}
12781276

12791277
function invalidReturnTypeError(

0 commit comments

Comments
 (0)