@@ -137,16 +137,18 @@ ExecuteQuery(query, schema, variableValues, initialValue):
137137 * normally* (allowing parallelization).
138138 * Let {errors} be any * field errors* produced while executing the
139139 selection set.
140- * Yield an unordered map containing {data} and {errors}.
141- * For each {payload} in {subsequentPayloads}:
142- * If {payload} is a Deferred Fragment Record:
143- * Yield the value from calling {ResolveDeferredFragmentRecord(payload, variableValues, subsequentPayloads)}.
144- * If {payload} is not the final payload in {subsequentPayloads}
145- * Add an entry to {payload} named ` hasNext ` with the value {true}.
146- * If {payload} is the final payload in {subsequentPayloads}
147- * Add an entry to {payload} named ` hasNext ` with the value {false}.
148- * If {payload} is a Stream Record:
149- * Yield ResolveStreamRecord(payload, variableValues, subsequentPayloads).
140+ * Yield an unordered map containing {data}, {errors} and {hasNext} if
141+ {subsequentPayloads} is non-empty.
142+ * For each {record} in {subsequentPayloads}:
143+ * If {record} is a Deferred Fragment Record:
144+ * Let {payload} be the result of running {ResolveDeferredFragmentRecord(record, variableValues, subsequentPayloads)}.
145+ * If {record} is a Stream Record:
146+ * Let {payload} be the result of running ResolveStreamRecord(record, variableValues, subsequentPayloads).
147+ * If {record} is not the final element in {subsequentPayloads}
148+ * Add an entry to {payload} named ` hasNext ` with the value {true}.
149+ * If {record} is the final element in {subsequentPayloads}
150+ * Add an entry to {payload} named ` hasNext ` with the value {false}.
151+ * Yield {payload}
150152
151153### Mutation
152154
@@ -580,13 +582,13 @@ DeferFragment(objectType, objectValue, fragmentSelectionSet, parentPath):
580582#### Deferred Fragment Record
581583
582584** Formal Specification**
583- Let {deferredFragment } be an inline fragment or fragment spread with ` @defer ` provided.
585+ Let {deferredFragmentRecord } be an inline fragment or fragment spread with ` @defer ` provided.
584586Deferred Fragment Record is a structure containing:
585587* {label} value derived from the ` @defer ` directive.
586- * {objectType} of the {deferredFragment }.
587- * {objectValue} of the {deferredFragment }.
588- * {fragmentSelectionSet}: the top level selection set of {deferredFragment }.
589- * {path} a list of field names and indices from root to {deferredFragment }.
588+ * {objectType} of the {deferredFragmentRecord }.
589+ * {objectValue} of the {deferredFragmentRecord }.
590+ * {fragmentSelectionSet}: the top level selection set of {deferredFragmentRecord }.
591+ * {path} a list of field names and indices from root to {deferredFragmentRecord }.
590592
591593CreateDeferredFragmentRecord(label, objectType, objectValue, fragmentSelectionSet, path):
592594 * If {path} is not provided, initialize it to an empty list.
@@ -749,18 +751,18 @@ CreateStreamRecord(label, initialCount, iterator, resolvedItems, index, fields,
749751* Construct a stream record based on the parameters passed in.
750752
751753ResolveStreamRecord(streamRecord, variableValues, subsequentPayloads):
752- * Let {label}, {iterator}, {resolvedItems}, {index}, {path}, {fields},
753- {innerType} be the correspondent fields on the Stream Record structure.
754- * Remove the first entry from {resolvedItem}, let the entry be {item}. If
755- {resolvedItem} is empty, retrieve more items from {iterator}:
756- * Append {index} to {path}.
757- * Increment {index}.
758- * Let {payload} be the result of calling CompleteValue(innerType, fields, item, variableValues, subsequentPayloads, path)}.
759- * Add an entry to {payload} named ` label ` with the value {label}.
760- * Add an entry to {payload} named ` path ` with the value {path}.
761- * If {resolveItem} is not empty or {iterator} does not reach the end:
762- * Append {streamRecord} to {subsequentPayloads}.
763- * Return {payload}.
754+ * Let {label}, {iterator}, {resolvedItems}, {index}, {path}, {fields},
755+ {innerType} be the correspondent fields on the Stream Record structure.
756+ * Remove the first entry from {resolvedItem}, let the entry be {item}. If
757+ {resolvedItem} is empty, retrieve more items from {iterator}:
758+ * Append {index} to {path}.
759+ * Increment {index}.
760+ * Let {payload} be the result of calling CompleteValue(innerType, fields, item, variableValues, subsequentPayloads, path)}.
761+ * Add an entry to {payload} named ` label ` with the value {label}.
762+ * Add an entry to {payload} named ` path ` with the value {path}.
763+ * If {resolveItem} is not empty or {iterator} does not reach the end:
764+ * Append {streamRecord} to {subsequentPayloads}.
765+ * Return {payload}.
764766
765767
766768CompleteValue(fieldType, fields, result, variableValues, subsequentPayloads, parentPath):
0 commit comments