* Retry on network errors when refreshing admin tokens
This is the same logic used for non-admin token user fetches, which seems to
already work fine in practice.
Making thousands of HTTP requests simultaneously inevitably results in some
failing or the server being overwhelmed, so limit how many can be made at once
(currently to the arbitrary cap of 5) and enqueue any further requests.
* When refreshing the token, look up the user in a way that doesn't suffer
from #1586
Expose a means of looking up a user by identity and server to avoid
problems if the same user identity exists for multiple servers, which
can happen when connecting to the same server via different hostnames.
* Return undefined if the user doesn't exist rather than returning an object wrapping a null SyncUser.
* Perform a pseudo-refresh for admin token users
Although we don't need to actually refresh the token, when multiplexing is
enabled we do still need to hit ROS to let it know we're accessing a Realm and
get the sync label.
* Adding brief JSdoc and TS definition for isAdminToken.
* Perform a pseudo-refresh for admin token users
Although we don't need to actually refresh the token, when multiplexing is
enabled we do still need to hit ROS to let it know we're accessing a Realm and
get the sync label.
* Adding brief JSdoc and TS definition for isAdminToken.
* Make the timeout consistent
* Add basic docs for multiprocess notifications (#1594)
* Add basic docs for multiprocess notifications
* Adopt core's query parser and update to core v5.1.2 (#1563)
* Adopt core's query parser.
* Realm Core 5.1.2
* Realm Sync 2.2.9
* Remove tar.xz (#1585)
* remove tar.xz decompression and lzma deps
* Fixing merge
* Updating object store
* Adding method Realm.Sync.User.authenticate()
* Adding JWT provider support to Realm.Sync.User.authenticate()
* Adding password provider support to Realm.Sync.User.authenticate()
* Specify a timeout when making the HTTP request to refresh access tokens.
Without the timeout, some requests are silently never made.
Fixesrealm/realm-js-private#338.
* Add a changelog entry.
* Add basic permissions skeleton
* ...
* Update permissions api
* Wait for server to process management realm, add offer api
* Fix test of apply and get permissions, add offer test
* Accept permission offer
* Accept permission offer test
* Invalidate permission offer
* Add basic docs (still need some links etc)
* Refactor tests
* Only run permission tests where sync is enabled
* Use legal syntax for user name generation
* Add changelog entry
* Streamline permission tests
* Fix casing for access level names etc.
* Add basic definitions to index.d.ts
* Use settimeout for resolving promise from listener
* Complete typescript defs
* Improve docs
* Allow 'any' as default recipient in getGrantedPermissions
* Fix getSpecialPurposeRealm on iOS
* Response to PR comments
* Respond to PR comments
* Fix offer description
* Skip permission tests in chrome debugger :-/
The JS binding used to conflate `SyncUser::is_admin()` with the user being created by calling `Realm.Sync.User.adminToken()`, but now that we expose a user’s role on the server under `is_admin()` this supposition is no longer correct.
#1097 attempted to fix one such case, but fixing it only uncovered another: in `UserClass<T>::all_users()`. I’ve gone through all the callsites of `SyncUser::is_admin()` to make sure they don’t assume an admin token user.
* Get a session’s error handler
* Change the signature of all methods to add the callee
* Deserialize rpc callbacks
* Expose the session error handle on its config property
* When a token refresh error occurs and there is a session error handler
propagate the error to the handler