Open
Conversation
1e7391d to
9269c2c
Compare
b22640c to
1dc6b4d
Compare
1dc6b4d to
421166b
Compare
bb7bd64 to
431ac4e
Compare
f8134f0 to
e49c793
Compare
to make some better magic
We may end up having one type of Receiver Receivers can also return external values not just MergedExecutionResults, even if the cache is of MergedExecutionsResults
repeaterjs/repeater#48 (comment) add additional tests
It can be passed a stream of transformedResults using mapAsyncIterator note that using `break` in for await(...of...) causes abrupt completion and will return the iterator, not really sure why this became a problem only when mapping the iterator
...to use DataLoader for the actual GraphQL results, rather than the external values This allows us to properly transduce streams. TODO: 1. We should now be able to add the stream directive for batchDelegateToSchema. 2. Refactor error parsing, now we are relying on the onLocatedError option, but this is no longer necessary. Note that additional tests for batched errors are now passing (see #2951) 3. Bring back createBatchDelegateFn, that may be useful 4. The Receiver is now created separately for each list item, which means that the initialPathDepth probably does not match? This will require a separate argument to the Receiver constructor for adjustment 5. Bring back valuesFromResults and fix documentation, we now operate on GraphQL results, so should be fewer pitfalls (see #2829)
try to avoid breaking changes (in the future?)
e1d3faf to
614c08c
Compare
|
So... is this done? #4796 :D |
Collaborator
Author
|
Not yet :( still can't stitch |
Contributor
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A work in progress...
Help wanted...
In terms of mechanism, have settled on external values that are from asyncIterables being converted to an initial result with an associated
Receiverobject, which is passed down the execution tree. If a field is not present on the result, and aReceivercan be found, the default merging resolver will request to be notified when the field is available.think more broadly about how to implement the Receiver, maybe we should use Repeaters rather than raw async iterables, and what the best pattern is for consuming async iterables.... see Not that great for implementing transducers? repeaterjs/repeater#48 (comment)
update all transforms that touch results - some result transformers parse the request and transform the response based on saved state -- these transformers may require rewriting patch labels so that state does not overlap between different fragments...
update batch-execute
update batch-delegate
test errors
test timeouts
graphql/graphql-js#2319
graphql/graphql-spec#742