Allow passing custom AbortController to register and authenticate functions without breaking existing behavior #79
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.
Motivation
This Pull Request adds the ability to pass a custom
AbortController
to theregister
andauthenticate
functions. This allows finer control over the authentication lifecycle, which is helpful in applications that manage multiple authentication processes simultaneously or need to handle aborting operations in a specific way.Changes Made
signal
parameter toRegisterOptions
andAuthenticateOptions
interfaces.register
andauthenticate
functions to use the providedsignal
if available.signal
is provided in the options, it uses thatAbortSignal
.signal
is provided, it falls back to using the existing globalongoingAuth
logic.signal
is provided.signal
parameter.Backward Compatibility
signal
will experience the same behavior as before.ongoingAuth
variable is still used when no customAbortController
is provided.Additional Notes
ongoingAuth
could cause unintended side effects in complex applications.AbortController
instances. I am willing to submit a PR to remove the global controller altogether, but this would be a breaking change, so I have not done it here.