feat(exchanges): add binding for @urql/retry-exchange #244
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.
This PR adds support for using
@urql/retry-exchange
.The binding for this is fairly thin, although we did need to introduce a
makeRetryExchangeOptions
function to support the creation of aretryExchangeOptions
record. There are generally two mechanisms for doing this type of "object creation with potentially undefined values" workflow. The first is what we do here, where we have a function that uses optional labelled arguments to generate a record. For example, callingmakeRetryExchaneOptions
with no arguments (just the positionalunit
parameter):results in the following object on the JS-side:
while calling it with some arguments:
results in the following object on the JS-side:
We could also use an abstract record, but these are generally recommended against because of the ergonomics. The one case where they're useful is when compiling an unspecified property explicitly to
undefined
would result in negative behavior. In this case,urql
checks the truthiness of all properties and supplies defaults downstream, so we should be safe explicitly compiling toundefined
!