@idp.global/sdk 19.3.0 → 19.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +66 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_browser/classes.idpclient.js +1 -1
- package/dist_ts_browser/classes.idprequests.js +1 -1
- package/dist_ts_browser/classes.relyingpartybearerclient.d.ts +313 -0
- package/dist_ts_browser/classes.relyingpartybearerclient.js +646 -0
- package/dist_ts_browser/index.d.ts +1 -0
- package/dist_ts_browser/index.js +2 -1
- package/dist_ts_browser/plugins.js +1 -1
- package/dist_ts_browser/secret-delivery.js +1 -1
- package/dist_ts_relyingparty/classes.authorityobserver.d.ts +23 -0
- package/dist_ts_relyingparty/classes.authorityobserver.js +68 -13
- package/dist_ts_relyingparty/classes.errors.d.ts +5 -1
- package/dist_ts_relyingparty/classes.errors.js +3 -1
- package/dist_ts_relyingparty/classes.relyingpartyroutes.d.ts +12 -0
- package/dist_ts_relyingparty/classes.relyingpartyroutes.js +33 -6
- package/dist_ts_relyingparty/classes.relyingpartysessions.d.ts +161 -11
- package/dist_ts_relyingparty/classes.relyingpartysessions.js +381 -55
- package/dist_ts_relyingparty/classes.rpmodels.d.ts +6 -4
- package/dist_ts_relyingparty/classes.rpmodels.js +8 -6
- package/dist_ts_relyingparty/contract.bearer.d.ts +119 -0
- package/dist_ts_relyingparty/contract.bearer.js +13 -0
- package/dist_ts_relyingparty/helpers.bearer.d.ts +3 -4
- package/dist_ts_relyingparty/helpers.bearer.js +4 -6
- package/dist_ts_relyingparty/interfaces.d.ts +75 -26
- package/package.json +2 -1
- package/readme.md +363 -21
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_browser/classes.relyingpartybearerclient.ts +901 -0
- package/ts_browser/index.ts +1 -0
- package/ts_relyingparty/classes.authorityobserver.ts +80 -12
- package/ts_relyingparty/classes.errors.ts +7 -1
- package/ts_relyingparty/classes.relyingpartyroutes.ts +38 -7
- package/ts_relyingparty/classes.relyingpartysessions.ts +463 -65
- package/ts_relyingparty/classes.rpmodels.ts +7 -4
- package/ts_relyingparty/contract.bearer.ts +145 -0
- package/ts_relyingparty/helpers.bearer.ts +10 -14
- package/ts_relyingparty/interfaces.ts +93 -33
package/changelog.md
CHANGED
|
@@ -1,5 +1,71 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-10-26 - 19.5.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- pairing a device: `openBearerHandoff({ openerSessionId, codeChallenge, maxAgeSeconds? })` (relyingparty)
|
|
8
|
+
- An application that has signed a person in opens a bearer session for a second device of theirs, such as a TV or a browser extension, and answers its single-use hand-off code. The device claims the code at the existing `bearer/claim` with the verifier of its challenge, under the rules of a bearer login's code: one claim within at most 60 seconds, never past the session, stored only as a hash, and a reused code, a wrong verifier or an unclaimed code ends the session.
|
|
9
|
+
- The opener must be a live provider login: not ended or expired, with an active principal and its own `idpSubject`. A session from `openSession` or from `openBearerHandoff` does not qualify, so a paired device cannot pair another. Any other opener throws the new `RelyingPartyError` code `invalid_handoff_opener` (400) and stores nothing; a consumer with an exhaustive switch over `TRelyingPartyErrorCode` adds that case. A malformed challenge throws `invalid_bearer_request`, a `maxAgeSeconds` outside 1 to `sessionMaxAgeSeconds` throws a `RangeError`, and without `bearer` the call throws `login_method_unavailable`. It works in bearer-only mode, and like every way to create a session it sweeps first.
|
|
10
|
+
- The session acts as the opener's principal, without `idpSubject` or `loginAttemptId`, and lives `maxAgeSeconds` (by default `sessionMaxAgeSeconds`), the same rule as every session. It refreshes without the provider. Its expiry, `endSession`, `endSessionsOfPrincipal`, `bearer/logout` and the reuse of a credential end it. An idp.global logout does not reach it, and `AuthorityObserver` refuses it with `authority_login_required` without ending it; the readme lists what an application does about that.
|
|
11
|
+
- `refreshBearerTokens` asks the provider exactly when the session stores a provider subject, as every session from a bearer login does, so provider sessions refresh as before.
|
|
12
|
+
- erasing a principal's sessions: `eraseSessionsOfPrincipal(principalId)` (relyingparty)
|
|
13
|
+
- For deleting an account, after the application's own erasers and before its user record. It ends every session of the principal not revoked yet, an expired one too, as `endSession` does (`onSessionEnded` fires and the provider tokens go back), then deletes every session row of the principal, live or ended, with the login attempt a provider session came out of and, in bearer mode, its hand-offs, claimed or not, and its token generations. It does not wait for a sweep, deletes each session row last so a failed erase can be retried, and answers the counts (`IRelyingPartySessionsErasure`).
|
|
14
|
+
- `onSessionEnded` names the principal of a session it revoked (relyingparty)
|
|
15
|
+
- The event is `{ sessionId, reason, revokedHere: true, principalId }` when this call revoked the session and `{ sessionId, reason, revokedHere: false }` when it was over already, so an application can end a person's other sessions on `refresh_token_refused` without keeping a table of its own. A handler that reads `sessionId`, `reason` and `revokedHere` compiles unchanged; code that builds the event itself with `revokedHere: true` adds `principalId`.
|
|
16
|
+
- `onProviderSessionOpened` carries the bearer delivery (relyingparty)
|
|
17
|
+
- A bearer login's session opens with `delivery` (`IRelyingPartyBearerDelivery`: client kind, return target and the client's `state`); a cookie login's has none.
|
|
18
|
+
- `createPkce()` and `claimCode(pkce, code)` on `RelyingPartyBearerClient` (browser)
|
|
19
|
+
- `createPkce()` makes a verifier and its S256 challenge. `claimCode` claims a code bound to that challenge that reached the client another way than its own login, such as a device pairing. It keeps the client's rules: one claim, never retried, under `requestTimeoutMs`, and the pair replaces the stored one under the Web Lock, ending that pair's session.
|
|
20
|
+
- A pair is claimed with once; a second call, after a failed claim as well, is `already_received` and sends nothing. A malformed verifier, a challenge that is not the verifier's S256, or a code that is not text throws before anything is sent. Neither method needs a window.
|
|
21
|
+
- In Chromium 149 the client runs in a Manifest V3 extension's service worker that imports `@idp.global/sdk/browser/bearer`. The extension needs a host permission for the relying party's origin, because the bearer routes answer CORS for popup origins only.
|
|
22
|
+
- the requests of the bearer routes are exported types (relyingparty, browser)
|
|
23
|
+
- `IRelyingPartyBearerLoginQuery` (the `bearer/login` query by its parameter names), `IRelyingPartyBearerClaimRequest`, `IRelyingPartyBearerRefreshRequest` and `IRelyingPartyBearerLogoutRequest` come from the import-free contract module beside the answer types. `@idp.global/sdk/relyingparty`, `@idp.global/sdk/browser` and `@idp.global/sdk/browser/bearer` export them, and the browser client sends exactly these shapes.
|
|
24
|
+
|
|
25
|
+
### Maintenance
|
|
26
|
+
|
|
27
|
+
- release tooling: pnpm 12.14.0
|
|
28
|
+
|
|
29
|
+
## 2026-10-22 - 19.4.0
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
- a lean browser entry, `@idp.global/sdk/browser/bearer` (browser)
|
|
34
|
+
- It exports `RelyingPartyBearerClient` and the bearer contract types alone. The module imports only the import-free bearer contract, so a bundle that signs in through a relying party no longer pulls in the `@idp.global/sdk/browser` client with its storage, typed request and socket dependencies.
|
|
35
|
+
- a browser bearer client, `RelyingPartyBearerClient` (browser)
|
|
36
|
+
- `createLogin` makes a PKCE S256 pair and a state from 32 random bytes each, plus the `bearer/login` URL, for `web` and `popup` logins. `completeRedirectLogin` takes the code off the address with `history.replaceState` before it checks anything, refuses another state and claims the code once. `openPopupLogin` opens the popup within the click and takes only the message from the relying party's exact origin, from its own popup, of the bearer type and with its state.
|
|
37
|
+
- Refresh, logout and the store of a claimed pair hold one Web Lock, so the tabs of an origin refresh one at a time. Inside the lock the pair is read again from an application storage adapter (`IRelyingPartyBearerTokenStorage`: `get`, `set(tokens, { signal })`, `clear({ signal })`), a pair another tab rotated is used as it is, and a rotated pair is stored before the lock is released and before its access token is used. Nothing retries a claim or a refresh. The SDK persists nothing itself.
|
|
38
|
+
- `requestTimeoutMs` (30 s by default, at most 120 s, an invalid value throws) is the one deadline of each operation: the claim, a refresh, the store of a claimed pair with the revoke of the one it replaced, and a logout. It aborts the request and the storage write, drops a late answer unstored, releases the lock and fails with `request_failed`. A timed-out claim fails the login, and the user signs in again. If the relying party already rotated when it fired, the next refresh ends in `refresh_token_reused` and a re-login, the accepted cost of strict rotation.
|
|
39
|
+
- `set` and `clear` get the deadline's signal. An adapter honours it or completes synchronously, as one over `localStorage` does; one that ignores it can finish a write after another tab took the lock. A late `set` can end the session (`refresh_token_reused`), a late `clear` removes the pair that tab stored, and either costs a re-login. The lock is never held past the deadline.
|
|
40
|
+
- `logout()` clears the stored pair first. When the relying party cannot be reached, refuses or misses the deadline, it throws `session_not_revoked` with that failure as `cause`, so the application can tell the user they are signed out on this device only.
|
|
41
|
+
- A received login (`IRelyingPartyBearerLoginResult`) stores its pair in place of the stored one and then ends that pair's session through `bearer/logout`, both under the lock. `previousSession` reports `no_previous_session`, `same_session`, `previous_session_ended` or `previous_session_not_revoked` with `previousSessionError`. A failed claim leaves the stored pair as it was.
|
|
42
|
+
- bearer-only mode, `cookieSessions: false` (relyingparty)
|
|
43
|
+
- Bearer hand-off runs alone: the cookie routes answer `null`, the cookie steps throw `login_method_unavailable`, and `csrfKey`, `csrfLabel` and `cookieNames` are refused. `bearer` and `provider` are required.
|
|
44
|
+
- `sessionsOfPrincipal(principalId, { limit, cursor })` reads a principal's live sessions in pages, newest first (relyingparty)
|
|
45
|
+
- `limit` is 1 to 1,000 (100 by default); `nextCursor` is opaque, and a malformed one throws `invalid_sessions_cursor` (400).
|
|
46
|
+
- the HTTP answers of the bearer routes are exported types (relyingparty, browser)
|
|
47
|
+
- `IRelyingPartyBearerTokenAnswer`, `IRelyingPartyBearerSessionAnswer`, `IRelyingPartyBearerLogoutAnswer`, `IRelyingPartyBearerErrorAnswer`, `TRelyingPartyBearerErrorCode` and `IRelyingPartyBearerMessage` come from an import-free contract module that the browser entry shares.
|
|
48
|
+
- `liveProviderToken(sessionId, principalId, { rejectedAccessToken })` rotates the token of a session the provider answered inactive for (relyingparty)
|
|
49
|
+
- The call rotates whatever is stored, however long it would last, and marks the answer `rotatedAfterRejection` (new optional field of `IProviderToken`) only when the rotation it started issued the token. A rotation already running in the process or held by another replica started before the call and marks nothing: the call throws `authority_unavailable`, after the running one ends so that its refusal still ends the session. A session without a refresh token throws it too. A refused rotation ends the session and throws `authority_login_required`. `IAuthorityTokenSource` takes the option as optional, so a source written for 19.3.0 still compiles.
|
|
50
|
+
|
|
51
|
+
### Fixes
|
|
52
|
+
|
|
53
|
+
- an idp.global login that ended ends the session at the observer instead of refusing its organizations (relyingparty)
|
|
54
|
+
- idp.global answers an introspection inactive for an ended login as well as for a removed member; only its refresh tells them apart, refusing the first and rotating the second. Before, `AuthorityObserver` threw `AuthorityRefusedError` `idp_membership_absent` for both, so an application that removes access on that refusal removed it for a member who had only logged out.
|
|
55
|
+
- An inactive answer now rotates the session's token first. A refused rotation ends the session and throws `AuthorityTokenError` `authority_login_required`. Only an inactive answer on a token from a rotation that started after the observation's own inactive answer is `idp_membership_absent`; the observer orders answers and rotation starts by one sequence and compares no tokens.
|
|
56
|
+
- Every other inactive answer throws `authority_unavailable` and keeps nothing: one within the 60 s (`AUTHORITY_FORCED_REFRESH_INTERVAL_MS`) in which an observer rotates a session at most once, one on a token that an earlier rotation handed back, and one that a rotation another replica holds answered. After the interval the next inactive answer rotates and decides. So a login that ends inside the interval of a removed member's rotation refuses none of the session's other organizations.
|
|
57
|
+
- A token source of an application's own that ignores `rejectedAccessToken`, as one written for 19.3.0 does, now answers `authority_unavailable` where it answered `idp_membership_absent`: it can never confirm a refusal. A source has to rotate and set `rotatedAfterRejection` to refuse.
|
|
58
|
+
|
|
59
|
+
- ended sessions are removed (relyingparty)
|
|
60
|
+
- Before, no `Session` document was ever removed. Each login start and each `openSession` now removes up to 100 sessions that ended more than an hour ago, oldest first, without an end hook or a provider call. Nothing runs on a timer.
|
|
61
|
+
- A revocation lowers `expiresAt` to `revokedAt`, and a new `expiresAt` index finds expired and revoked sessions alike. The first start after upgrading to this version builds the index `expiresAt_1` on the `Session` collection (the one named in `collectionNames.sessions`) before the application is ready: in `ensureInitialized()`, which an application that prepares its models at startup awaits before it serves, and otherwise on the model's first use. The build takes longer the larger the collection is, and no session was ever removed before this release. Before upgrading, count the collection and time the build on a restored copy on the same engine; if it takes a significant share of the start period, build the index first in a migration. Sessions revoked before this release go an hour after their original expiry.
|
|
62
|
+
- A session is deleted only while its expiry is still past the cutoff, so one whose expiry moved after the sweep read it stays.
|
|
63
|
+
- A session that expired without a revocation goes with its provider tokens unrevoked, as they were before; `endSessionsOfPrincipal` reaches it only until then.
|
|
64
|
+
- no `Set-Cookie` for an application that runs only bearer clients (relyingparty)
|
|
65
|
+
- With `cookieSessions: false` no route answer carries `Set-Cookie`. Before, a callback that belonged to no bearer login, or whose bearer delivery could not be read, answered with the cleared intent cookie even when the application used no cookie. Such a callback now redirects to `failureLocation` on a provider `error` and otherwise answers 400 `authentication_failed`.
|
|
66
|
+
- no CSRF key for an application that runs only bearer clients (relyingparty)
|
|
67
|
+
- The constructor required a 32-byte `csrfKey` even when no cookie session was ever opened, so such an application had to supply one it never used. With `cookieSessions: false` none is taken; cookie mode still requires it.
|
|
68
|
+
|
|
3
69
|
## 2026-10-21 - 19.3.0
|
|
4
70
|
|
|
5
71
|
### Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@idp.global/sdk',
|
|
6
|
-
version: '19.
|
|
6
|
+
version: '19.5.0',
|
|
7
7
|
description: 'Reusable browser and server SDK for idp.global authentication.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLGdFQUFnRTtDQUM5RSxDQUFBIn0=
|
|
@@ -396,4 +396,4 @@ export class IdpClient {
|
|
|
396
396
|
return whoIs.fire({ jwt: await this.getJwt() });
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHBjbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19icm93c2VyL2NsYXNzZXMuaWRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVN4QyxNQUFNLE9BQU8sU0FBUztJQUNaLE9BQU8sR0FBRztRQUNoQixLQUFLLENBQUMsd0JBQXdCLENBQUMsU0FBaUI7WUFDOUMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUFrQyxTQUFTLENBQUMsQ0FBQztRQUM3RyxDQUFDO0tBQ0YsQ0FBQztJQUVPLHFCQUFxQixDQUFTO0lBQ2hDLGtCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELDBCQUEwQixHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZFLGtCQUFrQixDQUE0QjtJQUM5QyxjQUFjLENBQTRCO0lBQ2pDLFNBQVMsQ0FBc0I7SUFFL0MsWUFDRSxtQkFBMkIsRUFDM0IsaUJBQThELEVBQzlELFVBQVUsR0FBc0IsRUFBRTtRQUVsQyxJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ25ELG1CQUFtQixHQUFHLEdBQUcsbUJBQW1CLGVBQWUsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFr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
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHBjbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19icm93c2VyL2NsYXNzZXMuaWRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVN4QyxNQUFNLE9BQU8sU0FBUztJQUNaLE9BQU8sR0FBRztRQUNoQixLQUFLLENBQUMsd0JBQXdCLENBQUMsU0FBaUI7WUFDOUMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUFrQyxTQUFTLENBQUMsQ0FBQztRQUM3RyxDQUFDO0tBQ0YsQ0FBQztJQUVPLHFCQUFxQixDQUFTO0lBQ2hDLGtCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELDBCQUEwQixHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZFLGtCQUFrQixDQUE0QjtJQUM5QyxjQUFjLENBQTRCO0lBQ2pDLFNBQVMsQ0FBc0I7SUFFL0MsWUFDRSxtQkFBMkIsRUFDM0IsaUJBQThELEVBQzlELFVBQVUsR0FBc0IsRUFBRTtRQUVsQyxJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ25ELG1CQUFtQixHQUFHLEdBQUcsbUJBQW1CLGVBQWUsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtC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
|
|
@@ -341,4 +341,4 @@ export class IdpRequests {
|
|
|
341
341
|
return this.idpClientArg.createTypedRequest('discoverSsoForEmail');
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHByZXF1ZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2Jyb3dzZXIvY2xhc3Nlcy5pZHByZXF1ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUd4QyxNQUFNLE9BQU8sV0FBVztJQUNGLFlBQVk7SUFBaEMsWUFBb0IsWUFBdUI7NEJBQXZCLFlBQVk7SUFBYyxDQUFDO0lBRS9DLElBQVcsNkJBQTZCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBbUUsK0JBQStCLENBQUMsQ0FBQztJQUNqSixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBNEQsd0JBQXdCLENBQUMsQ0FBQztJQUNuSSxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUF3RCxvQkFBb0IsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxJQUFXLDRCQUE0QjtRQUNyQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQXlFLHFDQUFxQyxDQUFDLENBQUM7SUFDN0osQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQWdELFlBQVksQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQTBFLHNDQUFzQyxDQUFDLENBQUM7SUFDL0osQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQW9ELGdCQUFnQixDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVks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
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHByZXF1ZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2Jyb3dzZXIvY2xhc3Nlcy5pZHByZXF1ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUd4QyxNQUFNLE9BQU8sV0FBVztJQUNGLFlBQVk7SUFBaEMsWUFBb0IsWUFBdUI7NEJBQXZCLFlBQVk7SUFBYyxDQUFDO0lBRS9DLElBQVcsNkJBQTZCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBbUUsK0JBQStCLENBQUMsQ0FBQztJQUNqSixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBNEQsd0JBQXdCLENBQUMsQ0FBQztJQUNuSSxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUF3RCxvQkFBb0IsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxJQUFXLDRCQUE0QjtRQUNyQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQXlFLHFDQUFxQyxDQUFDLENBQUM7SUFDN0osQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQWdELFlBQVksQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQTBFLHNDQUFzQyxDQUFDLENBQUM7SUFDL0osQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQW9ELGdCQUFnQixDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFlB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
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { RELYING_PARTY_BEARER_MESSAGE_TYPE, type IRelyingPartyBearerTokenAnswer } from '../dist_ts_relyingparty/contract.bearer.js';
|
|
2
|
+
export type { IRelyingPartyBearerClaimRequest, IRelyingPartyBearerErrorAnswer, IRelyingPartyBearerLoginQuery, IRelyingPartyBearerLogoutAnswer, IRelyingPartyBearerLogoutRequest, IRelyingPartyBearerMessage, IRelyingPartyBearerRefreshRequest, IRelyingPartyBearerSessionAnswer, IRelyingPartyBearerSessionInfo, IRelyingPartyBearerTokenAnswer, TRelyingPartyBearerDeliveryError, TRelyingPartyBearerErrorCode, } from '../dist_ts_relyingparty/contract.bearer.js';
|
|
3
|
+
export { RELYING_PARTY_BEARER_MESSAGE_TYPE };
|
|
4
|
+
/** The client kinds a browser signs in as; native clients use `loopback` and `custom_scheme` themselves. */
|
|
5
|
+
export type TRelyingPartyBearerBrowserClientKind = 'web' | 'popup';
|
|
6
|
+
/** The pair a bearer client keeps: the relying party's answer and when it arrived. */
|
|
7
|
+
export interface IRelyingPartyBearerStoredTokens extends IRelyingPartyBearerTokenAnswer {
|
|
8
|
+
/** epoch milliseconds on this device's clock when the answer arrived; with `expiresIn` it dates the access token's end here */
|
|
9
|
+
receivedAt: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Where the application keeps the token pair — IndexedDB, say — for every
|
|
13
|
+
* tab of its origin. The client keeps no pair in memory: it reads this store
|
|
14
|
+
* on every use and again inside the refresh lock, so a pair another tab
|
|
15
|
+
* rotated is seen at once. `set` and `clear` resolve once the change is
|
|
16
|
+
* durable; the client hands out a rotated pair only after `set` resolved.
|
|
17
|
+
*
|
|
18
|
+
* Each `set` and `clear` is given the signal of its operation's deadline
|
|
19
|
+
* (`requestTimeoutMs`). An adapter either honours it, so a write the signal
|
|
20
|
+
* aborted is not made and the call rejects, or completes synchronously, as
|
|
21
|
+
* one over `localStorage` does, so it is never late. The lock is never held
|
|
22
|
+
* past the deadline, whatever a write still does: an adapter that ignores the
|
|
23
|
+
* signal can finish one after another tab took the lock. A late `set`
|
|
24
|
+
* overwrites what that tab stored or cleared, and the pair it leaves can be
|
|
25
|
+
* spent or of an ended session; its refresh then ends the session
|
|
26
|
+
* (`refresh_token_reused`) or is refused. A late `clear` removes the pair that
|
|
27
|
+
* tab stored. Either way the user signs in again.
|
|
28
|
+
*/
|
|
29
|
+
export interface IRelyingPartyBearerTokenStorage {
|
|
30
|
+
get(): Promise<IRelyingPartyBearerStoredTokens | null>;
|
|
31
|
+
set(tokensArg: IRelyingPartyBearerStoredTokens, optionsArg: {
|
|
32
|
+
signal: AbortSignal;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
clear(optionsArg: {
|
|
35
|
+
signal: AbortSignal;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A PKCE pair (RFC 7636): the verifier the client keeps and the S256
|
|
40
|
+
* challenge it hands out. `codeVerifier` is the secret that makes a code
|
|
41
|
+
* worth anything; keep it like a pending login, never in a URL, a log or a
|
|
42
|
+
* message.
|
|
43
|
+
*/
|
|
44
|
+
export interface IRelyingPartyBearerPkce {
|
|
45
|
+
/** 43 characters from 32 random bytes */
|
|
46
|
+
codeVerifier: string;
|
|
47
|
+
/** BASE64URL(SHA-256(codeVerifier)) */
|
|
48
|
+
codeChallenge: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A login on its way: what `createLogin` made and the receiver needs back.
|
|
52
|
+
* A `web` login leaves the page, so the application keeps it until the
|
|
53
|
+
* return target page hands it to `completeRedirectLogin` — in
|
|
54
|
+
* `sessionStorage` or IndexedDB, never in a URL or a log: `codeVerifier` is
|
|
55
|
+
* the secret that makes the code worth anything.
|
|
56
|
+
*/
|
|
57
|
+
export interface IRelyingPartyBearerClientLogin {
|
|
58
|
+
clientKind: TRelyingPartyBearerBrowserClientKind;
|
|
59
|
+
returnTarget: string;
|
|
60
|
+
state: string;
|
|
61
|
+
codeVerifier: string;
|
|
62
|
+
/** the bearer login start: navigate to it (`web`) or open it (`popup`) */
|
|
63
|
+
url: string;
|
|
64
|
+
}
|
|
65
|
+
/** What the client reads of a `message` event. */
|
|
66
|
+
export interface IRelyingPartyBearerMessageEvent {
|
|
67
|
+
readonly origin: string;
|
|
68
|
+
readonly source: unknown;
|
|
69
|
+
readonly data: unknown;
|
|
70
|
+
}
|
|
71
|
+
/** What the client reads of a popup it opened. */
|
|
72
|
+
export interface IRelyingPartyBearerPopup {
|
|
73
|
+
readonly closed: boolean;
|
|
74
|
+
}
|
|
75
|
+
/** The parts of `window` the login receivers use; `window` itself is one. */
|
|
76
|
+
export interface IRelyingPartyBearerClientWindow {
|
|
77
|
+
readonly location: {
|
|
78
|
+
readonly href: string;
|
|
79
|
+
};
|
|
80
|
+
readonly history: {
|
|
81
|
+
readonly state: unknown;
|
|
82
|
+
replaceState(dataArg: unknown, unusedArg: string, urlArg?: string): void;
|
|
83
|
+
};
|
|
84
|
+
open(urlArg: string, targetArg?: string, featuresArg?: string): IRelyingPartyBearerPopup | null;
|
|
85
|
+
addEventListener(typeArg: 'message', listenerArg: (eventArg: IRelyingPartyBearerMessageEvent) => void): void;
|
|
86
|
+
removeEventListener(typeArg: 'message', listenerArg: (eventArg: IRelyingPartyBearerMessageEvent) => void): void;
|
|
87
|
+
}
|
|
88
|
+
export interface IRelyingPartyBearerClientOptions {
|
|
89
|
+
/** the relying party's public origin, exactly: where its bearer routes and its popup page are served */
|
|
90
|
+
origin: string;
|
|
91
|
+
/** the prefix of the relying party's login routes; `/auth/` unless it mounts them elsewhere */
|
|
92
|
+
loginPathPrefix?: string;
|
|
93
|
+
storage: IRelyingPartyBearerTokenStorage;
|
|
94
|
+
/** the Web Lock every refresh, logout and store of a claimed pair holds; one name per pair in `storage` */
|
|
95
|
+
lockName?: string;
|
|
96
|
+
/** how long before its end on this device's clock an access token is rotated; at most half its lifetime */
|
|
97
|
+
refreshSkewMs?: number;
|
|
98
|
+
/**
|
|
99
|
+
* The deadline of each operation of the client: the claim of a login's
|
|
100
|
+
* code, a refresh with the write of its pair, the store of a claimed pair
|
|
101
|
+
* with the end of the session it replaced, and a logout. 30 seconds unless
|
|
102
|
+
* given, at most two minutes, since every tab of the origin waits on the
|
|
103
|
+
* lock meanwhile. When it fires the request and the storage write are
|
|
104
|
+
* aborted, a late answer is never stored and the lock is released.
|
|
105
|
+
*/
|
|
106
|
+
requestTimeoutMs?: number;
|
|
107
|
+
/** `navigator.locks` unless given */
|
|
108
|
+
locks?: LockManager;
|
|
109
|
+
/** `globalThis.fetch` unless given */
|
|
110
|
+
fetch?: typeof globalThis.fetch;
|
|
111
|
+
/** `window` unless given; only the login receivers need one */
|
|
112
|
+
window?: IRelyingPartyBearerClientWindow;
|
|
113
|
+
now?: () => number;
|
|
114
|
+
}
|
|
115
|
+
export interface IRelyingPartyBearerPopupOptions {
|
|
116
|
+
/** how long the popup may take; ten minutes, the life of a login attempt, unless given */
|
|
117
|
+
timeoutMs?: number;
|
|
118
|
+
signal?: AbortSignal;
|
|
119
|
+
/** the `features` of `window.open`; never `noopener`, the popup posts to its opener */
|
|
120
|
+
windowFeatures?: string;
|
|
121
|
+
}
|
|
122
|
+
/** What a login did to the pair stored before it. */
|
|
123
|
+
export type TRelyingPartyBearerPreviousSessionOutcome =
|
|
124
|
+
/** no pair was stored */
|
|
125
|
+
'no_previous_session'
|
|
126
|
+
/** the stored pair was of the session this login opened; there was nothing to end */
|
|
127
|
+
| 'same_session'
|
|
128
|
+
/** the logout route ended the previous session, or answered that it was over already */
|
|
129
|
+
| 'previous_session_ended'
|
|
130
|
+
/** the previous session could not be ended and lives on at the relying party until it expires; `previousSessionError` says why */
|
|
131
|
+
| 'previous_session_not_revoked';
|
|
132
|
+
/** A received login: the pair now stored, and what became of the session of the pair it replaced. */
|
|
133
|
+
export interface IRelyingPartyBearerLoginResult {
|
|
134
|
+
tokens: IRelyingPartyBearerStoredTokens;
|
|
135
|
+
previousSession: TRelyingPartyBearerPreviousSessionOutcome;
|
|
136
|
+
/** with `previous_session_not_revoked`: why the logout route did not end it */
|
|
137
|
+
previousSessionError?: RelyingPartyBearerClientError;
|
|
138
|
+
}
|
|
139
|
+
export type TRelyingPartyBearerClientErrorCode =
|
|
140
|
+
/** the delivery's state is not the one of the login it came back to; nothing was claimed */
|
|
141
|
+
'state_mismatch'
|
|
142
|
+
/** the delivery carries no code; `deliveryError` says why */
|
|
143
|
+
| 'login_failed'
|
|
144
|
+
/** this login, or this PKCE pair, was received once already; a code is claimed once, never again */
|
|
145
|
+
| 'already_received'
|
|
146
|
+
/** the browser opened no popup */
|
|
147
|
+
| 'popup_blocked'
|
|
148
|
+
/** the popup was closed before it delivered */
|
|
149
|
+
| 'popup_closed'
|
|
150
|
+
/** the popup delivered nothing in time */
|
|
151
|
+
| 'popup_timeout'
|
|
152
|
+
/** the request got no answer (network, CORS, a redirect) or none before `requestTimeoutMs`; a claim or refresh may have been spent anyway */
|
|
153
|
+
| 'request_failed'
|
|
154
|
+
/** the relying party refused the request; `status` and `answerError` say how */
|
|
155
|
+
| 'request_refused'
|
|
156
|
+
/** an answer outside the bearer contract */
|
|
157
|
+
| 'unexpected_answer'
|
|
158
|
+
/** `logout()` cleared the pair, so this device is signed out, but the relying party did not confirm the session's end; `cause` says why */
|
|
159
|
+
| 'session_not_revoked';
|
|
160
|
+
export declare class RelyingPartyBearerClientError extends Error {
|
|
161
|
+
readonly code: TRelyingPartyBearerClientErrorCode;
|
|
162
|
+
readonly status?: number;
|
|
163
|
+
/** the `error` the relying party answered (`TRelyingPartyBearerErrorCode`) */
|
|
164
|
+
readonly answerError?: string;
|
|
165
|
+
/** the `error` a delivery carried (`TRelyingPartyBearerDeliveryError`) */
|
|
166
|
+
readonly deliveryError?: string;
|
|
167
|
+
constructor(code: TRelyingPartyBearerClientErrorCode, detailsArg?: {
|
|
168
|
+
status?: number;
|
|
169
|
+
answerError?: string;
|
|
170
|
+
deliveryError?: string;
|
|
171
|
+
cause?: unknown;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* The browser side of bearer hand-off (`@idp.global/sdk/relyingparty`
|
|
176
|
+
* `bearer`): it starts a `web` or `popup` login with PKCE and a state,
|
|
177
|
+
* receives the delivery, claims the code once and keeps the token pair in
|
|
178
|
+
* the application's storage. Every refresh, logout and store of a claimed
|
|
179
|
+
* pair holds one Web Lock, so the tabs of an origin rotate the pair one at a
|
|
180
|
+
* time: inside the lock the pair is read from storage again, a pair another
|
|
181
|
+
* tab rotated is used as it is, and a rotated pair is stored before the lock
|
|
182
|
+
* is released and before its access token is handed out. Each claim and
|
|
183
|
+
* each section that holds the lock ends by `requestTimeoutMs`, so a hanging
|
|
184
|
+
* request or write never holds the other tabs. A login replaces the stored
|
|
185
|
+
* pair and ends that pair's session. Rotation is strict at the relying
|
|
186
|
+
* party: a refresh token spent once ends the session when it comes back, so
|
|
187
|
+
* nothing here retries a claim or a refresh. A code that reaches the client
|
|
188
|
+
* another way, such as a device pairing, is claimed through `createPkce` and
|
|
189
|
+
* `claimCode` under the same rules, without a window.
|
|
190
|
+
*
|
|
191
|
+
* It needs the Web Locks API and Web Crypto, both of them only in a secure
|
|
192
|
+
* context, and has no fallback for either.
|
|
193
|
+
*/
|
|
194
|
+
export declare class RelyingPartyBearerClient {
|
|
195
|
+
#private;
|
|
196
|
+
readonly origin: string;
|
|
197
|
+
constructor(optionsArg: IRelyingPartyBearerClientOptions);
|
|
198
|
+
/**
|
|
199
|
+
* A new login: a fresh verifier, its S256 challenge and a state, each from
|
|
200
|
+
* 32 random bytes, and the URL that starts it. Make a popup login before
|
|
201
|
+
* the click that opens it: this is async, and a browser opens a popup only
|
|
202
|
+
* within the user's gesture.
|
|
203
|
+
*/
|
|
204
|
+
createLogin(optionsArg: {
|
|
205
|
+
clientKind: TRelyingPartyBearerBrowserClientKind;
|
|
206
|
+
returnTarget: string;
|
|
207
|
+
}): Promise<IRelyingPartyBearerClientLogin>;
|
|
208
|
+
/**
|
|
209
|
+
* A fresh PKCE pair: a verifier from 32 random bytes and its S256
|
|
210
|
+
* challenge. For a code the client does not receive through its own login,
|
|
211
|
+
* such as one the application delivers to a device it pairs: the challenge
|
|
212
|
+
* goes to the application, and `claimCode` claims the code with the pair.
|
|
213
|
+
* Needs no window.
|
|
214
|
+
*/
|
|
215
|
+
createPkce(): Promise<IRelyingPartyBearerPkce>;
|
|
216
|
+
/**
|
|
217
|
+
* Claims a hand-off code that was bound to `pkceArg`'s challenge and
|
|
218
|
+
* reached this client some other way than its own login, such as a device
|
|
219
|
+
* pairing (`openBearerHandoff` at the relying party). It is received like
|
|
220
|
+
* a login: one claim, never retried, under `requestTimeoutMs`, and the
|
|
221
|
+
* claimed pair replaces the stored one under the lock, whose session is
|
|
222
|
+
* ended then (`IRelyingPartyBearerLoginResult`). A pair is claimed with
|
|
223
|
+
* once: a second call with it, after a failed claim too, is
|
|
224
|
+
* `already_received` and sends nothing. A pair that is not one (a
|
|
225
|
+
* malformed verifier, a challenge that is not its S256) or a code that is
|
|
226
|
+
* not text is refused before anything is sent. Needs no window.
|
|
227
|
+
*/
|
|
228
|
+
claimCode(pkceArg: IRelyingPartyBearerPkce, codeArg: string): Promise<IRelyingPartyBearerLoginResult>;
|
|
229
|
+
/**
|
|
230
|
+
* Receives a `web` login on its return target page. The delivery leaves
|
|
231
|
+
* the address first, before anything is checked, so neither a reload nor
|
|
232
|
+
* the history holds the code. A delivery whose state is not the login's is
|
|
233
|
+
* refused unclaimed; a code is claimed once, and a failed claim is not
|
|
234
|
+
* retried. The claimed pair replaces the stored one, whose session is
|
|
235
|
+
* ended then (`IRelyingPartyBearerLoginResult`). Answers `null` on a page
|
|
236
|
+
* that holds no delivery.
|
|
237
|
+
*/
|
|
238
|
+
completeRedirectLogin(loginArg: IRelyingPartyBearerClientLogin | null | undefined): Promise<IRelyingPartyBearerLoginResult | null>;
|
|
239
|
+
/**
|
|
240
|
+
* Opens a `popup` login and receives what its page posts: a message is
|
|
241
|
+
* taken only from the relying party's origin, from this very popup, of the
|
|
242
|
+
* bearer message type and with the login's state; any other is ignored.
|
|
243
|
+
* The popup opens before this returns, so call it in the click handler
|
|
244
|
+
* itself, with a login made beforehand. The claimed pair replaces the
|
|
245
|
+
* stored one like `completeRedirectLogin`'s.
|
|
246
|
+
*/
|
|
247
|
+
openPopupLogin(loginArg: IRelyingPartyBearerClientLogin, optionsArg?: IRelyingPartyBearerPopupOptions): Promise<IRelyingPartyBearerLoginResult>;
|
|
248
|
+
/**
|
|
249
|
+
* An access token to send right now, or `null` when there is no session.
|
|
250
|
+
* One that is about to end is rotated first, by one tab for all of them.
|
|
251
|
+
*/
|
|
252
|
+
accessToken(): Promise<string | null>;
|
|
253
|
+
/**
|
|
254
|
+
* Rotates the pair now — after the relying party refused
|
|
255
|
+
* `rejectedAccessTokenArg`, say — unless another tab already did, and
|
|
256
|
+
* answers the pair to use: `null` once the session is over, which clears
|
|
257
|
+
* the storage. A relying party that cannot refresh right now
|
|
258
|
+
* (`authority_unavailable`) keeps the pair as it is; try again later.
|
|
259
|
+
*/
|
|
260
|
+
refresh(rejectedAccessTokenArg?: string): Promise<IRelyingPartyBearerStoredTokens | null>;
|
|
261
|
+
/**
|
|
262
|
+
* Clears the storage and then ends the session at the relying party with
|
|
263
|
+
* the pair it held, and answers whether that ended a live session. When the
|
|
264
|
+
* relying party cannot be reached, refuses or gives no answer by
|
|
265
|
+
* `requestTimeoutMs`, the call throws `session_not_revoked` with that
|
|
266
|
+
* failure as its `cause`: this device is signed out, and the session may
|
|
267
|
+
* live on at the relying party until it expires, so tell the user they are
|
|
268
|
+
* signed out on this device only. A deadline that fires before the storage
|
|
269
|
+
* is cleared throws `request_failed`, and the pair stays.
|
|
270
|
+
*/
|
|
271
|
+
logout(): Promise<boolean>;
|
|
272
|
+
private requireWindow;
|
|
273
|
+
private isFresh;
|
|
274
|
+
/** Takes a delivery for its login, once, claims its code and stores the pair in place of the one before. */
|
|
275
|
+
private receive;
|
|
276
|
+
/** Claims a code once with its verifier and stores the pair in place of the one before. */
|
|
277
|
+
private claim;
|
|
278
|
+
/**
|
|
279
|
+
* Stores a claimed pair in place of the stored one and then ends the
|
|
280
|
+
* session of that one with its tokens, held here, through the logout
|
|
281
|
+
* route. Both run under the lock a refresh holds, so no tab rotates the
|
|
282
|
+
* replaced pair meanwhile. A session that cannot be ended is the result's
|
|
283
|
+
* `previous_session_not_revoked`, neither thrown nor dropped: the new pair
|
|
284
|
+
* is stored by then.
|
|
285
|
+
*/
|
|
286
|
+
private replacePair;
|
|
287
|
+
private receivePopup;
|
|
288
|
+
/**
|
|
289
|
+
* One rotation under the lock. The pair is read again inside it: one
|
|
290
|
+
* whose refresh token is no longer `seenRefreshTokenArg`, or whose access
|
|
291
|
+
* token is no longer `rejectedAccessTokenArg`, was rotated already and is
|
|
292
|
+
* used as it is. A rotated pair is stored before the lock is released. The
|
|
293
|
+
* whole section has one deadline: past it, the lock is released with
|
|
294
|
+
* `request_failed` and an answer that still arrives is dropped unstored.
|
|
295
|
+
*/
|
|
296
|
+
private rotate;
|
|
297
|
+
/** Ends the session of a pair through the logout route and answers whether that ended a live one. */
|
|
298
|
+
private endSessionOf;
|
|
299
|
+
/**
|
|
300
|
+
* Runs one operation, a claim or a section that holds the lock, under
|
|
301
|
+
* `requestTimeoutMs`. When the deadline fires, the section's signal aborts
|
|
302
|
+
* its request and its storage write and keeps it from writing anything
|
|
303
|
+
* more (`inTime`), and the call answers `onDeadlineArg()` at once, so the
|
|
304
|
+
* lock is released whatever the request or the storage still does.
|
|
305
|
+
*/
|
|
306
|
+
private withDeadline;
|
|
307
|
+
/**
|
|
308
|
+
* A bearer API call: JSON in, JSON out, no cookie, no cache, no redirect.
|
|
309
|
+
* With `signalArg` none is sent past the deadline and an answer that
|
|
310
|
+
* arrives after it counts as none.
|
|
311
|
+
*/
|
|
312
|
+
private post;
|
|
313
|
+
}
|