@flytedesk/app-kit 5.0.0 → 7.0.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.
Files changed (71) hide show
  1. package/README.md +184 -41
  2. package/dist/auth/client/authSession.d.ts +168 -0
  3. package/dist/auth/client/authSession.js +581 -0
  4. package/dist/auth/client/authSession.js.map +1 -0
  5. package/dist/auth/client/browserEnvironment.d.ts +22 -0
  6. package/dist/auth/client/browserEnvironment.js +87 -0
  7. package/dist/auth/client/browserEnvironment.js.map +1 -0
  8. package/dist/auth/client/httpClient.d.ts +22 -25
  9. package/dist/auth/client/httpClient.js +49 -51
  10. package/dist/auth/client/httpClient.js.map +1 -1
  11. package/dist/auth/client/index.d.ts +15 -8
  12. package/dist/auth/client/index.js +13 -7
  13. package/dist/auth/client/index.js.map +1 -1
  14. package/dist/auth/client/testing.d.ts +6 -0
  15. package/dist/auth/client/testing.js +20 -0
  16. package/dist/auth/client/testing.js.map +1 -0
  17. package/dist/auth/client/useAuthSession.d.ts +54 -91
  18. package/dist/auth/client/useAuthSession.js +65 -252
  19. package/dist/auth/client/useAuthSession.js.map +1 -1
  20. package/dist/auth/index.d.ts +3 -4
  21. package/dist/auth/index.js +1 -2
  22. package/dist/auth/index.js.map +1 -1
  23. package/dist/auth/oidc-client.d.ts +18 -4
  24. package/dist/auth/oidc-client.js +18 -1
  25. package/dist/auth/oidc-client.js.map +1 -1
  26. package/dist/auth/plugin.js +250 -211
  27. package/dist/auth/plugin.js.map +1 -1
  28. package/dist/auth/returnTarget.d.ts +30 -0
  29. package/dist/auth/returnTarget.js +48 -0
  30. package/dist/auth/returnTarget.js.map +1 -0
  31. package/dist/auth/shared-types.d.ts +18 -41
  32. package/dist/auth/shared-types.js +18 -45
  33. package/dist/auth/shared-types.js.map +1 -1
  34. package/dist/auth/testing/fake-idp.d.ts +38 -1
  35. package/dist/auth/testing/fake-idp.js +166 -27
  36. package/dist/auth/testing/fake-idp.js.map +1 -1
  37. package/dist/auth/types.d.ts +26 -29
  38. package/dist/bigquery/errors.d.ts +19 -0
  39. package/dist/bigquery/errors.js +41 -0
  40. package/dist/bigquery/errors.js.map +1 -1
  41. package/dist/bigquery/index.d.ts +2 -2
  42. package/dist/bigquery/index.js +1 -1
  43. package/dist/bigquery/index.js.map +1 -1
  44. package/dist/bigquery/query.js +14 -1
  45. package/dist/bigquery/query.js.map +1 -1
  46. package/dist/bigquery/schema.d.ts +5 -0
  47. package/dist/bigquery/schema.js +35 -0
  48. package/dist/bigquery/schema.js.map +1 -0
  49. package/dist/bigquery/types.d.ts +47 -2
  50. package/dist/chat/index.d.ts +52 -21
  51. package/dist/chat/index.js +50 -20
  52. package/dist/chat/index.js.map +1 -1
  53. package/dist/chat/mcp/entry.d.ts +37 -0
  54. package/dist/chat/mcp/entry.js +135 -0
  55. package/dist/chat/mcp/entry.js.map +1 -0
  56. package/dist/cli/is-running-as-main.d.ts +1 -0
  57. package/dist/cli/is-running-as-main.js +54 -0
  58. package/dist/cli/is-running-as-main.js.map +1 -0
  59. package/dist/cli/sync-engine.d.ts +1 -32
  60. package/dist/cli/sync-engine.js +7 -45
  61. package/dist/cli/sync-engine.js.map +1 -1
  62. package/dist/flags/evaluate.d.ts +43 -0
  63. package/dist/flags/evaluate.js +64 -0
  64. package/dist/flags/evaluate.js.map +1 -0
  65. package/dist/flags/index.d.ts +22 -6
  66. package/dist/flags/index.js +21 -6
  67. package/dist/flags/index.js.map +1 -1
  68. package/dist/flags/plugin.js +73 -7
  69. package/dist/flags/plugin.js.map +1 -1
  70. package/dist/flags/types.d.ts +25 -0
  71. package/package.json +11 -4
@@ -0,0 +1,87 @@
1
+ /**
2
+ * The real browser behind `./authSession.ts`'s `AuthSessionEnvironment` (AK-35), and the
3
+ * one per-tab `authSession` every app reads. Browser-safe, ZERO Node imports.
4
+ *
5
+ * This package's tsconfig deliberately has no "DOM" lib (it is Node-first — see
6
+ * `./httpClient.ts`'s own `declare const window`), so the few browser globals used here
7
+ * are declared below with exactly the members this file touches. The declarations are
8
+ * erased at compile time and resolve to the real browser objects at runtime.
9
+ */
10
+ import { createAuthSession, SESSION_CHANNEL, } from "./authSession.js";
11
+ function isSessionMessage(data) {
12
+ if (typeof data !== "object" || data === null)
13
+ return false;
14
+ const { type, userId } = data;
15
+ return (type === "signed-out" ||
16
+ (type === "signed-in" && typeof userId === "string"));
17
+ }
18
+ export function browserEnvironment() {
19
+ return {
20
+ href: () => window.location.href,
21
+ navigate: (url) => window.location.assign(url),
22
+ replaceUrl: (url) => window.history.replaceState(null, "", url),
23
+ reload: () => window.location.reload(),
24
+ isVisible: () => document.visibilityState === "visible",
25
+ onAttention(listener) {
26
+ const onVisibility = () => {
27
+ if (document.visibilityState === "visible")
28
+ listener();
29
+ };
30
+ document.addEventListener("visibilitychange", onVisibility);
31
+ window.addEventListener("focus", listener);
32
+ return () => {
33
+ document.removeEventListener("visibilitychange", onVisibility);
34
+ window.removeEventListener("focus", listener);
35
+ };
36
+ },
37
+ onRestore(listener) {
38
+ const onPageShow = (event) => {
39
+ if (event.persisted)
40
+ listener();
41
+ };
42
+ window.addEventListener("pageshow", onPageShow);
43
+ return () => window.removeEventListener("pageshow", onPageShow);
44
+ },
45
+ // Read lazily, per call: merely touching `window.sessionStorage` throws when site data
46
+ // is blocked, which the lifecycle handles per key.
47
+ sessionStorage: () => window.sessionStorage,
48
+ localStorage: () => window.localStorage,
49
+ openChannel(onMessage) {
50
+ const channel = new BroadcastChannel(SESSION_CHANNEL);
51
+ channel.onmessage = (event) => {
52
+ if (isSessionMessage(event.data))
53
+ onMessage(event.data);
54
+ };
55
+ return {
56
+ post: (message) => channel.postMessage(message),
57
+ close: () => channel.close(),
58
+ };
59
+ },
60
+ };
61
+ }
62
+ let instance = null;
63
+ function current() {
64
+ instance ??= createAuthSession(browserEnvironment());
65
+ return instance;
66
+ }
67
+ /**
68
+ * THE session of this tab — one lifecycle, however many components or modules read it.
69
+ * Created on first use (never at import, so importing this module is safe during SSR or
70
+ * in a Node test). React code reads it through `useAuthSession()`; anything else (an
71
+ * API helper, a store outside React) through `authSession.getSnapshot()` and
72
+ * `authSession.subscribe()`.
73
+ */
74
+ export const authSession = {
75
+ getSnapshot: () => current().getSnapshot(),
76
+ subscribe: (listener) => current().subscribe(listener),
77
+ signOut: () => current().signOut(),
78
+ retry: () => current().retry(),
79
+ refreshUser: () => current().refreshUser(),
80
+ };
81
+ /** Test seam (`@flytedesk/app-kit/auth/client/testing`): stops and forgets the tab's
82
+ * lifecycle, so the next use starts a fresh one. */
83
+ export function resetAuthSession() {
84
+ instance?.stop();
85
+ instance = null;
86
+ }
87
+ //# sourceMappingURL=browserEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserEnvironment.js","sourceRoot":"","sources":["../../../src/auth/client/browserEnvironment.ts"],"names":[],"mappings":"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"}
@@ -43,8 +43,8 @@ export type AuthUnavailableErrorCode = AuthUnavailableCode | typeof AUTH_UNREACH
43
43
  * carrying one of `AUTH_UNAVAILABLE_CODES`) — or the automatic refresh reached no
44
44
  * decision at all (`AUTH_UNREACHABLE_CODE`). Transient, and NOT a sign-out: the session
45
45
  * (its refresh cookie) is intact and the same request can succeed once the dependency
46
- * recovers. This client never runs the auth recovery for it; `useAuthSession` keeps the
47
- * session and retries with backoff (its `"unavailable"` status). A subclass of
46
+ * recovers. It never announces a session end (`onSessionEnded`); `./authSession.ts` keeps
47
+ * the session and retries with backoff (its `"unavailable"` status). A subclass of
48
48
  * ApiRequestError, so existing `instanceof ApiRequestError` handling still sees it.
49
49
  */
50
50
  export declare class AuthUnavailableError extends ApiRequestError {
@@ -70,33 +70,31 @@ export declare function getAccessToken(): string | null;
70
70
  /** As configured via configureApiClient — same origin/path every request in this
71
71
  * module targets. */
72
72
  export declare function getBaseUrl(): string;
73
- export interface AuthRecovery {
74
- /** Runs (or joins) the shared recovery; resolves when it is over, however it ended. */
75
- recover(): Promise<void>;
76
- /** Whose session this is right now — a stable user id — or null when signed out. */
77
- principal(): string | null;
78
- }
79
- /** Registers what runs when a request 401s and the automatic refresh-then-retry dance
80
- * (below) also fails to recover it — i.e. the session is genuinely gone, not just a
81
- * normal access-token expiry a refresh already fixed silently. A consuming app's own
82
- * session layer (e.g. one doing a silent OIDC resume, as media-planner's session.ts
83
- * does) is the one owner: it decides what "recovered" means and, failing that,
84
- * invalidates its session state. Left entirely unset is fine — decodeWithAuthRetry
85
- * then just reports the second 401 as a failure, with no recovery attempt. */
86
- export declare function setAuthRecovery(recovery: AuthRecovery): () => void;
73
+ type SessionEndedListener = () => void;
74
+ /**
75
+ * Subscribes to the ONE signal that a session is over (AK-35): a request answered 401
76
+ * and the shared `refreshAccessToken()` then resolved `null` — the plugin itself refused
77
+ * the refresh cookie. That verdict, and only that, is what `./authSession.ts` turns into
78
+ * the session-expired state and an automatic sign-in. A 401 that follows a SUCCESSFUL
79
+ * refresh-and-retry is that route's own answer about that request (the session was just
80
+ * proven live), so it is thrown to the caller and never announced here — treating it as
81
+ * a session loss would loop: expired -> sign in -> authenticated -> the same 401.
82
+ * Internal to `@flytedesk/app-kit/auth/client`: an app never subscribes itself.
83
+ */
84
+ export declare function onSessionEnded(listener: SessionEndedListener): () => void;
87
85
  /**
88
86
  * Runs — or joins, when one is already in flight — THE one `POST {routePrefix}/refresh`,
89
87
  * and resolves the new access token (also stored via setAccessToken). Single-flighted and
90
- * always deadline-bound: every caller that 401s, and useAuthSession's own loads, share
88
+ * always deadline-bound: every caller that 401s, and `./authSession.ts`'s own loads, share
91
89
  * this one refresh — the refresh cookie rotates on every call, so two concurrent
92
90
  * refreshes presenting one cookie would race, and a refresh that never answered would
93
91
  * stall them all.
94
92
  *
95
93
  * AK-23 (L-c): only the plugin's verdict signs anyone out. A 401 — the one answer the
96
94
  * plugin gives a refresh it refuses — resolves `null` ("no new token"), which
97
- * sendAndDecode treats as the session being gone. Every other outcome rejects with
98
- * AuthUnavailableError, shared by every waiting caller, so no caller ever runs the auth
99
- * recovery (the sign-out path) over an outage: the plugin's own 503 "could not decide",
95
+ * sendWithAuthRetry treats as the session being over (`onSessionEnded`). Every other
96
+ * outcome rejects with AuthUnavailableError, shared by every waiting caller, so no caller
97
+ * ever announces a session end over an outage: the plugin's own 503 "could not decide",
100
98
  * and an outcome that is no decision at all (AUTH_UNREACHABLE_CODE) — a network error,
101
99
  * the deadline (the server's `/refresh` can legitimately outlast it: a contended
102
100
  * session lock plus a slow flytedesk-id `/token` and authorization call), or a status
@@ -113,17 +111,16 @@ export interface RequestOptions {
113
111
  * body decode. Past it the call rejects with a RequestDeadlineError and does nothing
114
112
  * further (no retry, no auth-failure event). */
115
113
  deadlineMs?: number;
116
- /** Set only by a session layer's own bootstrap/probe calls, which ARE the auth
117
- * recovery (or start it): a 401 that survives the refresh still starts the shared
118
- * recovery, but this call does not wait for it — waiting would mean the recovery
119
- * waiting on itself. */
120
- ownsAuthRecovery?: boolean;
121
114
  /** Passed straight to `fetch`'s own `keepalive` — lets a request started right
122
115
  * before the page unloads actually complete instead of being cancelled the instant
123
116
  * the page goes away. Only meaningfully used with a small body: the browser caps
124
117
  * the total size of in-flight keepalive requests (~64KB combined). */
125
118
  keepalive?: boolean;
126
119
  }
120
+ /** The absolute URL of `path` on this client's api — for a top-level navigation (the
121
+ * sign-in route), which, unlike a fetch, can't be left relative to a dev proxy. A
122
+ * same-origin `baseUrl` resolves against `pageOrigin`. */
123
+ export declare function absoluteApiUrl(path: string, pageOrigin: string): string;
127
124
  /** The one place a browser app talks to its own BFF api. Handles bearer auth,
128
125
  * transparent access-token refresh on 401, and the { error, code, field? } error
129
126
  * contract every @flytedesk/app-kit/auth-backed api returns. */
@@ -47,8 +47,8 @@ export const AUTH_UNREACHABLE_CODE = "auth_unreachable";
47
47
  * carrying one of `AUTH_UNAVAILABLE_CODES`) — or the automatic refresh reached no
48
48
  * decision at all (`AUTH_UNREACHABLE_CODE`). Transient, and NOT a sign-out: the session
49
49
  * (its refresh cookie) is intact and the same request can succeed once the dependency
50
- * recovers. This client never runs the auth recovery for it; `useAuthSession` keeps the
51
- * session and retries with backoff (its `"unavailable"` status). A subclass of
50
+ * recovers. It never announces a session end (`onSessionEnded`); `./authSession.ts` keeps
51
+ * the session and retries with backoff (its `"unavailable"` status). A subclass of
52
52
  * ApiRequestError, so existing `instanceof ApiRequestError` handling still sees it.
53
53
  */
54
54
  export class AuthUnavailableError extends ApiRequestError {
@@ -111,21 +111,27 @@ export function getAccessToken() {
111
111
  export function getBaseUrl() {
112
112
  return baseUrl;
113
113
  }
114
- let authRecovery = null;
115
- /** Registers what runs when a request 401s and the automatic refresh-then-retry dance
116
- * (below) also fails to recover it — i.e. the session is genuinely gone, not just a
117
- * normal access-token expiry a refresh already fixed silently. A consuming app's own
118
- * session layer (e.g. one doing a silent OIDC resume, as media-planner's session.ts
119
- * does) is the one owner: it decides what "recovered" means and, failing that,
120
- * invalidates its session state. Left entirely unset is fine — decodeWithAuthRetry
121
- * then just reports the second 401 as a failure, with no recovery attempt. */
122
- export function setAuthRecovery(recovery) {
123
- authRecovery = recovery;
114
+ const sessionEndedListeners = new Set();
115
+ /**
116
+ * Subscribes to the ONE signal that a session is over (AK-35): a request answered 401
117
+ * and the shared `refreshAccessToken()` then resolved `null` — the plugin itself refused
118
+ * the refresh cookie. That verdict, and only that, is what `./authSession.ts` turns into
119
+ * the session-expired state and an automatic sign-in. A 401 that follows a SUCCESSFUL
120
+ * refresh-and-retry is that route's own answer about that request (the session was just
121
+ * proven live), so it is thrown to the caller and never announced here — treating it as
122
+ * a session loss would loop: expired -> sign in -> authenticated -> the same 401.
123
+ * Internal to `@flytedesk/app-kit/auth/client`: an app never subscribes itself.
124
+ */
125
+ export function onSessionEnded(listener) {
126
+ sessionEndedListeners.add(listener);
124
127
  return () => {
125
- if (authRecovery === recovery)
126
- authRecovery = null;
128
+ sessionEndedListeners.delete(listener);
127
129
  };
128
130
  }
131
+ function announceSessionEnded() {
132
+ for (const listener of sessionEndedListeners)
133
+ listener();
134
+ }
129
135
  /** Runs `run` under a deadline: past `ms`, its AbortSignal aborts (so the underlying
130
136
  * fetch, and any body read on it, is cancelled) and the returned promise rejects with
131
137
  * a RequestDeadlineError — the rejection does not depend on whatever `run` awaits
@@ -164,16 +170,16 @@ function refreshUnreachable(status, cause) {
164
170
  /**
165
171
  * Runs — or joins, when one is already in flight — THE one `POST {routePrefix}/refresh`,
166
172
  * and resolves the new access token (also stored via setAccessToken). Single-flighted and
167
- * always deadline-bound: every caller that 401s, and useAuthSession's own loads, share
173
+ * always deadline-bound: every caller that 401s, and `./authSession.ts`'s own loads, share
168
174
  * this one refresh — the refresh cookie rotates on every call, so two concurrent
169
175
  * refreshes presenting one cookie would race, and a refresh that never answered would
170
176
  * stall them all.
171
177
  *
172
178
  * AK-23 (L-c): only the plugin's verdict signs anyone out. A 401 — the one answer the
173
179
  * plugin gives a refresh it refuses — resolves `null` ("no new token"), which
174
- * sendAndDecode treats as the session being gone. Every other outcome rejects with
175
- * AuthUnavailableError, shared by every waiting caller, so no caller ever runs the auth
176
- * recovery (the sign-out path) over an outage: the plugin's own 503 "could not decide",
180
+ * sendWithAuthRetry treats as the session being over (`onSessionEnded`). Every other
181
+ * outcome rejects with AuthUnavailableError, shared by every waiting caller, so no caller
182
+ * ever announces a session end over an outage: the plugin's own 503 "could not decide",
177
183
  * and an outcome that is no decision at all (AUTH_UNREACHABLE_CODE) — a network error,
178
184
  * the deadline (the server's `/refresh` can legitimately outlast it: a contended
179
185
  * session lock plus a slow flytedesk-id `/token` and authorization call), or a status
@@ -216,6 +222,12 @@ export async function refreshAccessToken() {
216
222
  function isAbsoluteUrl(value) {
217
223
  return /^[a-z][a-z\d+.-]*:\/\//i.test(value);
218
224
  }
225
+ /** The absolute URL of `path` on this client's api — for a top-level navigation (the
226
+ * sign-in route), which, unlike a fetch, can't be left relative to a dev proxy. A
227
+ * same-origin `baseUrl` resolves against `pageOrigin`. */
228
+ export function absoluteApiUrl(path, pageOrigin) {
229
+ return isAbsoluteUrl(baseUrl) ? `${baseUrl}${path}` : `${pageOrigin}${baseUrl}${path}`;
230
+ }
219
231
  function buildUrl(path, query) {
220
232
  const url = new URL(baseUrl + path, typeof window !== "undefined" ? window.location.origin : "http://localhost");
221
233
  if (query) {
@@ -235,8 +247,7 @@ function buildUrl(path, query) {
235
247
  return isAbsoluteUrl(baseUrl) ? url.toString() : url.pathname + url.search;
236
248
  }
237
249
  /** Shared tail of both apiRequest and apiUpload: fires `doFetch`, transparently
238
- * retries once after a refresh on 401 (unless skipped) — and, if that still 401s, once
239
- * more after the shared auth recovery (see setAuthRecovery) — and applies the same
250
+ * retries once after a refresh on 401 (unless skipped), and applies the same
240
251
  * { error, code, field? } error contract / 204-handling / JSON decode to the result —
241
252
  * all under `deadlineMs` when one is given (see withDeadline). Kept as one place so
242
253
  * the auth-retry dance can't drift between the JSON and multipart transports. */
@@ -246,43 +257,30 @@ async function sendAndDecode(label, doFetch, options) {
246
257
  return decodeWithAuthRetry(doFetch, options);
247
258
  return withDeadline(label, deadlineMs, (signal) => decodeWithAuthRetry(doFetch, options, signal));
248
259
  }
249
- /** The shared tail of every transport this client offers: fires `doFetch`,
250
- * transparently retries once after a refresh on 401 (unless skipped), and once more
251
- * after the shared auth recovery if that still 401s (see setAuthRecovery) — then
252
- * throws the decoded error on any non-2xx. Returns the successful raw Response so
253
- * each transport (JSON body, blob download) can decode it its own way; this is the
254
- * ONE place the auth-retry dance lives, so it can't drift between them. */
255
- async function sendWithAuthRetry(doFetch, { skipAuthRetry, ownsAuthRecovery }, signal) {
256
- // Who this request is being sent as — the only identity a recovery may replay it for.
257
- const recovery = authRecovery;
258
- const sentAs = recovery?.principal() ?? null;
260
+ /** The shared tail of every transport this client offers: fires `doFetch`, and on a
261
+ * 401 (unless skipped) refreshes once through the shared single-flighted
262
+ * `refreshAccessToken` and retries. When that refresh is REFUSED (it resolves `null`),
263
+ * the session is over: `onSessionEnded` listeners hear it and the 401 is thrown. Any
264
+ * non-2xx left after that is thrown decoded. Returns the successful raw Response so
265
+ * each transport (JSON body, blob download) can decode it its own way; this is the ONE
266
+ * place the auth-retry dance lives, so it can't drift between them. */
267
+ async function sendWithAuthRetry(doFetch, { skipAuthRetry }, signal) {
259
268
  let res = await doFetch(signal);
260
269
  if (res.status === 401 && !skipAuthRetry) {
261
270
  // Rejects with AuthUnavailableError on an outage (AK-23) — straight out of this
262
- // call, past the recovery below: an outage is not a sign-out.
271
+ // call: an outage is not a sign-out.
263
272
  const refreshed = await refreshAccessToken();
264
273
  // The shared refresh is not cancelled by this call's deadline (other callers may
265
274
  // still want it) — but a call that has already missed its deadline must not act on
266
- // its outcome: no retry, and no auth-failure event for a caller that gave up.
275
+ // its outcome: no retry, and no session-ended announcement for a caller that gave up.
267
276
  signal?.throwIfAborted();
268
- if (refreshed)
277
+ if (refreshed === null) {
278
+ // AK-35: the plugin refused the refresh cookie — the only verdict that ends a
279
+ // session. See onSessionEnded.
280
+ announceSessionEnded();
281
+ }
282
+ else {
269
283
  res = await doFetch(signal);
270
- signal?.throwIfAborted();
271
- if (res.status === 401) {
272
- // Both the original request and the refresh-then-retry (or the refresh call
273
- // itself, if it never returned a token) came back 401 — the session is gone,
274
- // not just this in-memory access token. See setAuthRecovery.
275
- if (recovery && ownsAuthRecovery) {
276
- void recovery.recover();
277
- }
278
- else if (recovery) {
279
- await recovery.recover();
280
- signal?.throwIfAborted();
281
- // Replay only for the same user. A recovery that ended signed out, or signed
282
- // in as someone else, leaves this request failed.
283
- if (sentAs !== null && recovery.principal() === sentAs)
284
- res = await doFetch(signal);
285
- }
286
284
  signal?.throwIfAborted();
287
285
  }
288
286
  }
@@ -300,7 +298,7 @@ async function decodeWithAuthRetry(doFetch, options, signal) {
300
298
  * transparent access-token refresh on 401, and the { error, code, field? } error
301
299
  * contract every @flytedesk/app-kit/auth-backed api returns. */
302
300
  export async function apiRequest(path, options = {}) {
303
- const { method = "GET", body, query, skipAuthRetry, deadlineMs, ownsAuthRecovery, keepalive } = options;
301
+ const { method = "GET", body, query, skipAuthRetry, deadlineMs, keepalive } = options;
304
302
  const doFetch = async (signal) => fetch(buildUrl(path, query), {
305
303
  method,
306
304
  credentials: "include",
@@ -312,7 +310,7 @@ export async function apiRequest(path, options = {}) {
312
310
  signal,
313
311
  ...(keepalive ? { keepalive: true } : {}),
314
312
  });
315
- return sendAndDecode(`${method} ${path}`, doFetch, { skipAuthRetry, deadlineMs, ownsAuthRecovery });
313
+ return sendAndDecode(`${method} ${path}`, doFetch, { skipAuthRetry, deadlineMs });
316
314
  }
317
315
  /** Sibling to apiRequest for multipart/form-data uploads. Same bearer auth, 401 ->
318
316
  * refresh -> retry-once dance, and error contract — but always POSTs `formData` as-is
@@ -1 +1 @@
1
- {"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/auth/client/httpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/auth/client/httpClient.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,19 @@
1
1
  /**
2
2
  * Browser-safe client for `@flytedesk/app-kit/auth` — a separate subpath export (see
3
3
  * package.json's "exports") so this never drags a single Node/Fastify import into a
4
- * browser bundle. See httpClient.ts and useAuthSession.ts's own doc comments for what
5
- * was extracted from where and why (AK-16).
4
+ * browser bundle.
5
+ *
6
+ * Two things live here, and an app uses both:
7
+ * - the flytedesk ID session lifecycle (AK-35): `SessionBoundary`, `useAuthSession` and
8
+ * `authSession` — sign-in, session loss, checks, sign-out and cross-tab, decided in
9
+ * ONE place (`./authSession.ts`). An app never builds any of it itself; see the
10
+ * README's "Building a flytedesk ID app";
11
+ * - the api client every request goes through (`apiRequest`, `apiUpload`,
12
+ * `apiDownload`), which carries the session's access token and refreshes it.
6
13
  */
7
- export { ApiRequestError, AuthUnavailableError, AUTH_UNREACHABLE_CODE, type AuthUnavailableErrorCode, RequestDeadlineError, onAuthUnavailable, DEFAULT_REQUEST_DEADLINE_MS, configureApiClient, setAccessToken, getAccessToken, getBaseUrl, setAuthRecovery, apiRequest, apiUpload, apiDownload, saveBlob, type AuthRecovery, type RequestOptions, type ApiDownloadOptions, type ApiDownloadResult, } from "./httpClient.js";
8
- export { useAuthSession, unavailableRetryDelayMs, UNAVAILABLE_RETRY_BASE_MS, UNAVAILABLE_RETRY_MAX_MS, type AuthStatus, type AuthSessionState, type LoadingSessionState, type AuthenticatedSessionState, type UnauthenticatedSessionState, type UnavailableSessionState, type ErrorSessionState, } from "./useAuthSession.js";
9
- export { attemptSilentResume, type SilentResumeResult, type AttemptSilentResumeOptions, } from "./silentAuth.js";
10
- export { consumeSignInError } from "./signInError.js";
11
- export type { AppSwitcherEntry, AuthedUserDto, IdpRole, ApiErrorBody, AuthUnavailableCode, SilentAuthDetailCode, SilentAuthMessage, } from "../shared-types.js";
12
- export { AUTH_ROUTE_PREFIX, AUTH_ROUTE_SEGMENTS, AUTH_UNAVAILABLE_CODES, authRoutePath, SILENT_AUTH_DETAIL_CODES, SIGNIN_ERROR_QUERY_PARAM, SIGNIN_ERROR_CODES, type AuthRouteSegment, type SignInErrorCode, } from "../shared-types.js";
14
+ export { ApiRequestError, AuthUnavailableError, AUTH_UNREACHABLE_CODE, type AuthUnavailableErrorCode, RequestDeadlineError, DEFAULT_REQUEST_DEADLINE_MS, configureApiClient, getBaseUrl, apiRequest, apiUpload, apiDownload, saveBlob, type RequestOptions, type ApiDownloadOptions, type ApiDownloadResult, } from "./httpClient.js";
15
+ export { type AuthSessionState, type AuthenticatedState, type CheckingState, type ErrorState, type SigningInState, type SigningOutState, type UnavailableState, } from "./authSession.js";
16
+ export { authSession } from "./browserEnvironment.js";
17
+ export { SessionBoundary, useAuthSession, type AuthSession, type AuthSessionActions, type SessionBoundaryProps, type SessionScreenKind, type SessionScreenState, type UsableSession, } from "./useAuthSession.js";
18
+ export type { AppSwitcherEntry, AuthedUserDto, IdpRole, ApiErrorBody, AuthUnavailableCode, } from "../shared-types.js";
19
+ export { AUTH_ROUTE_PREFIX, AUTH_ROUTE_SEGMENTS, AUTH_UNAVAILABLE_CODES, authRoutePath, type AuthRouteSegment, } from "../shared-types.js";
@@ -1,12 +1,18 @@
1
1
  /**
2
2
  * Browser-safe client for `@flytedesk/app-kit/auth` — a separate subpath export (see
3
3
  * package.json's "exports") so this never drags a single Node/Fastify import into a
4
- * browser bundle. See httpClient.ts and useAuthSession.ts's own doc comments for what
5
- * was extracted from where and why (AK-16).
4
+ * browser bundle.
5
+ *
6
+ * Two things live here, and an app uses both:
7
+ * - the flytedesk ID session lifecycle (AK-35): `SessionBoundary`, `useAuthSession` and
8
+ * `authSession` — sign-in, session loss, checks, sign-out and cross-tab, decided in
9
+ * ONE place (`./authSession.ts`). An app never builds any of it itself; see the
10
+ * README's "Building a flytedesk ID app";
11
+ * - the api client every request goes through (`apiRequest`, `apiUpload`,
12
+ * `apiDownload`), which carries the session's access token and refreshes it.
6
13
  */
7
- export { ApiRequestError, AuthUnavailableError, AUTH_UNREACHABLE_CODE, RequestDeadlineError, onAuthUnavailable, DEFAULT_REQUEST_DEADLINE_MS, configureApiClient, setAccessToken, getAccessToken, getBaseUrl, setAuthRecovery, apiRequest, apiUpload, apiDownload, saveBlob, } from "./httpClient.js";
8
- export { useAuthSession, unavailableRetryDelayMs, UNAVAILABLE_RETRY_BASE_MS, UNAVAILABLE_RETRY_MAX_MS, } from "./useAuthSession.js";
9
- export { attemptSilentResume, } from "./silentAuth.js";
10
- export { consumeSignInError } from "./signInError.js";
11
- export { AUTH_ROUTE_PREFIX, AUTH_ROUTE_SEGMENTS, AUTH_UNAVAILABLE_CODES, authRoutePath, SILENT_AUTH_DETAIL_CODES, SIGNIN_ERROR_QUERY_PARAM, SIGNIN_ERROR_CODES, } from "../shared-types.js";
14
+ export { ApiRequestError, AuthUnavailableError, AUTH_UNREACHABLE_CODE, RequestDeadlineError, DEFAULT_REQUEST_DEADLINE_MS, configureApiClient, getBaseUrl, apiRequest, apiUpload, apiDownload, saveBlob, } from "./httpClient.js";
15
+ export { authSession } from "./browserEnvironment.js";
16
+ export { SessionBoundary, useAuthSession, } from "./useAuthSession.js";
17
+ export { AUTH_ROUTE_PREFIX, AUTH_ROUTE_SEGMENTS, AUTH_UNAVAILABLE_CODES, authRoutePath, } from "../shared-types.js";
12
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/client/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EAErB,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,GAKT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,GAQzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,GAGpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWtD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EAErB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,GAIT,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,cAAc,GAOf,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,GAEd,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Makes every following `apiRequest`/`apiUpload`/`apiDownload` send `token` as its
2
+ * Bearer — as if the session had just refreshed. `null` clears it. */
3
+ export declare function setTestAccessToken(token: string | null): void;
4
+ /** Stops the tab's session lifecycle, forgets its state and clears the access token, so
5
+ * the next test starts from a fresh boot. */
6
+ export declare function resetAuthSessionForTests(): void;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `@flytedesk/app-kit/auth/client/testing` — seams for an app's OWN unit tests (AK-35),
3
+ * never for app code. The session's access token and lifecycle are private to
4
+ * `@flytedesk/app-kit/auth/client`; a test that exercises `apiRequest` against a mocked
5
+ * `fetch`, or renders a component under `useAuthSession`, sets them up through here.
6
+ */
7
+ import { setAccessToken } from "./httpClient.js";
8
+ import { resetAuthSession } from "./browserEnvironment.js";
9
+ /** Makes every following `apiRequest`/`apiUpload`/`apiDownload` send `token` as its
10
+ * Bearer — as if the session had just refreshed. `null` clears it. */
11
+ export function setTestAccessToken(token) {
12
+ setAccessToken(token);
13
+ }
14
+ /** Stops the tab's session lifecycle, forgets its state and clears the access token, so
15
+ * the next test starts from a fresh boot. */
16
+ export function resetAuthSessionForTests() {
17
+ resetAuthSession();
18
+ setAccessToken(null);
19
+ }
20
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/auth/client/testing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;uEACuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,cAAc,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;8CAC8C;AAC9C,MAAM,UAAU,wBAAwB;IACtC,gBAAgB,EAAE,CAAC;IACnB,cAAc,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC"}