@atlasauth/react 0.19.0 → 0.21.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 (82) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/AtlasProvider.js +17 -1
  3. package/dist/AtlasProvider.js.map +1 -1
  4. package/dist/account-factors.d.ts +14 -0
  5. package/dist/account-factors.js +195 -0
  6. package/dist/account-factors.js.map +1 -0
  7. package/dist/account.d.ts +12 -1
  8. package/dist/account.js +92 -3
  9. package/dist/account.js.map +1 -1
  10. package/dist/app-launcher.d.ts +11 -0
  11. package/dist/app-launcher.js +28 -0
  12. package/dist/app-launcher.js.map +1 -0
  13. package/dist/billing.d.ts +25 -4
  14. package/dist/billing.js +40 -22
  15. package/dist/billing.js.map +1 -1
  16. package/dist/compat-amplify.d.ts +116 -0
  17. package/dist/compat-amplify.js +212 -0
  18. package/dist/compat-amplify.js.map +1 -0
  19. package/dist/compat-baas.d.ts +155 -0
  20. package/dist/compat-baas.js +401 -0
  21. package/dist/compat-baas.js.map +1 -0
  22. package/dist/compat-descope.d.ts +85 -0
  23. package/dist/compat-descope.js +191 -0
  24. package/dist/compat-descope.js.map +1 -0
  25. package/dist/compat-firebase.d.ts +67 -0
  26. package/dist/compat-firebase.js +166 -0
  27. package/dist/compat-firebase.js.map +1 -0
  28. package/dist/compat-kinde.d.ts +166 -0
  29. package/dist/compat-kinde.js +184 -0
  30. package/dist/compat-kinde.js.map +1 -0
  31. package/dist/compat-msal.d.ts +84 -0
  32. package/dist/compat-msal.js +158 -0
  33. package/dist/compat-msal.js.map +1 -0
  34. package/dist/compat-okta.d.ts +102 -0
  35. package/dist/compat-okta.js +240 -0
  36. package/dist/compat-okta.js.map +1 -0
  37. package/dist/compat.d.ts +11 -1
  38. package/dist/compat.js +27 -1
  39. package/dist/compat.js.map +1 -1
  40. package/dist/components.d.ts +12 -1
  41. package/dist/components.js +26 -2
  42. package/dist/components.js.map +1 -1
  43. package/dist/connected-accounts.d.ts +36 -0
  44. package/dist/connected-accounts.js +107 -0
  45. package/dist/connected-accounts.js.map +1 -0
  46. package/dist/delegated-ui.d.ts +49 -0
  47. package/dist/delegated-ui.js +42 -0
  48. package/dist/delegated-ui.js.map +1 -0
  49. package/dist/flow.d.ts +37 -1
  50. package/dist/flow.js +111 -2
  51. package/dist/flow.js.map +1 -1
  52. package/dist/i18n.js +14 -0
  53. package/dist/i18n.js.map +1 -1
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +5 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/marketing.d.ts +31 -0
  58. package/dist/marketing.js +64 -0
  59. package/dist/marketing.js.map +1 -0
  60. package/dist/mfa-steps.d.ts +9 -0
  61. package/dist/mfa-steps.js +51 -0
  62. package/dist/mfa-steps.js.map +1 -1
  63. package/dist/organization-admin.d.ts +38 -0
  64. package/dist/organization-admin.js +192 -0
  65. package/dist/organization-admin.js.map +1 -0
  66. package/dist/organization.d.ts +8 -1
  67. package/dist/organization.js +15 -2
  68. package/dist/organization.js.map +1 -1
  69. package/dist/profile-completion.d.ts +11 -0
  70. package/dist/profile-completion.js +49 -0
  71. package/dist/profile-completion.js.map +1 -0
  72. package/dist/profile-traits.d.ts +37 -0
  73. package/dist/profile-traits.js +143 -0
  74. package/dist/profile-traits.js.map +1 -0
  75. package/dist/sign-up.js +48 -7
  76. package/dist/sign-up.js.map +1 -1
  77. package/dist/styles.js +6 -4
  78. package/dist/styles.js.map +1 -1
  79. package/dist/types.d.ts +8 -0
  80. package/dist/version.d.ts +1 -1
  81. package/dist/version.js +1 -1
  82. package/package.json +5 -5
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.nhostAuthCompat = exports.pocketbaseAuthStoreCompat = exports.AppwriteAccountCompat = exports.AppwriteCompatException = void 0;
5
+ exports.appwriteUserFrom = appwriteUserFrom;
6
+ exports.pocketbaseRecordFrom = pocketbaseRecordFrom;
7
+ exports.nhostUserFrom = nhostUserFrom;
8
+ exports.useNhostAuthenticationStatusCompat = useNhostAuthenticationStatusCompat;
9
+ exports.useNhostAuthenticatedCompat = useNhostAuthenticatedCompat;
10
+ exports.useNhostUserDataCompat = useNhostUserDataCompat;
11
+ exports.useNhostUserIdCompat = useNhostUserIdCompat;
12
+ exports.useNhostUserEmailCompat = useNhostUserEmailCompat;
13
+ exports.useNhostUserDisplayNameCompat = useNhostUserDisplayNameCompat;
14
+ exports.useNhostUserAvatarUrlCompat = useNhostUserAvatarUrlCompat;
15
+ exports.useNhostSignOutCompat = useNhostSignOutCompat;
16
+ /**
17
+ * Appwrite, PocketBase and Nhost compatibility helpers, for
18
+ * `atlas migrate code --from appwrite|pocketbase|nhost`. These backends keep
19
+ * serving your data; only their AUTH surface moves to Atlas:
20
+ *
21
+ * - Appwrite: `new Account(client)` → `AppwriteAccountCompat` (`get`,
22
+ * `getPrefs`, `deleteSession`, `deleteSessions`, `createJWT`,
23
+ * `createOAuth2Session`); credential methods throw with a pointer to the
24
+ * Atlas sign-in page, and the codemod marks each call site.
25
+ * - PocketBase: `pb.authStore` → `pocketbaseAuthStoreCompat` (`isValid`,
26
+ * `token`, `record`/`model`, `clear`, `onChange`).
27
+ * - Nhost: `@nhost/react` hooks → `useNhost…Compat`, and `nhost.auth.*`
28
+ * session readers → `nhostAuthCompat`.
29
+ *
30
+ * Ids are ATLAS user ids; the old vendor id is the user's external id.
31
+ */
32
+ const AtlasProvider_1 = require("./AtlasProvider");
33
+ const components_shared_1 = require("./components-shared");
34
+ const compat_1 = require("./compat");
35
+ const active_atlas_1 = require("./active-atlas");
36
+ function signedInUser(atlas) {
37
+ return atlas?.status === 'signed_in' ? atlas.user : null;
38
+ }
39
+ function primaryPhone(user) {
40
+ return (user.phone_numbers ?? []).find((p) => p.primary) ?? user.phone_numbers?.[0] ?? null;
41
+ }
42
+ function backHere() {
43
+ return typeof window !== 'undefined' ? window.location.href : undefined;
44
+ }
45
+ function moved(method, instead) {
46
+ throw new Error(`${method}: this runs on Atlas now — ${instead}.`);
47
+ }
48
+ function appwriteUserFrom(user) {
49
+ const email = (0, compat_1.primaryEmail)(user);
50
+ const phone = primaryPhone(user);
51
+ const labels = user.public_metadata?.appwrite_labels;
52
+ return {
53
+ $id: user.id,
54
+ name: (0, compat_1.displayName)(user) ?? '',
55
+ email: email?.address ?? '',
56
+ emailVerification: email?.verified ?? false,
57
+ phone: phone?.phone_number ?? '',
58
+ phoneVerification: phone?.verified ?? false,
59
+ status: true,
60
+ labels: Array.isArray(labels) ? labels.filter((l) => typeof l === 'string') : [],
61
+ prefs: { ...(user.unsafe_metadata ?? {}) },
62
+ mfa: user.mfa_enabled,
63
+ };
64
+ }
65
+ /** Thrown like Appwrite's `AppwriteException` (code 401, `general_unauthorized_scope`) when signed out. */
66
+ class AppwriteCompatException extends Error {
67
+ code = 401;
68
+ type = 'general_unauthorized_scope';
69
+ constructor() {
70
+ super('User (role: guests) missing scope (account)');
71
+ this.name = 'AppwriteException';
72
+ }
73
+ }
74
+ exports.AppwriteCompatException = AppwriteCompatException;
75
+ const SIGN_IN_PAGE = 'credentials are collected on the Atlas sign-in page (<SignIn /> or /sign-in)';
76
+ const PROFILE = 'use <UserProfile /> or the Atlas user API';
77
+ /** `new Account(client)` from the Appwrite web SDK. The client is accepted and ignored. */
78
+ class AppwriteAccountCompat {
79
+ constructor(_client) { }
80
+ async get() {
81
+ const user = signedInUser((0, active_atlas_1.requireActive)('account.get'));
82
+ if (!user)
83
+ throw new AppwriteCompatException();
84
+ return appwriteUserFrom(user);
85
+ }
86
+ async getPrefs() {
87
+ return (await this.get()).prefs;
88
+ }
89
+ /** `deleteSession('current')` signs out; other session ids are managed in <UserProfile />. */
90
+ async deleteSession(sessionId = 'current') {
91
+ if (sessionId !== 'current')
92
+ moved('account.deleteSession(id)', 'revoke other sessions from <UserProfile /> or the sessions API');
93
+ await (0, active_atlas_1.requireActive)('account.deleteSession').signOut();
94
+ return {};
95
+ }
96
+ async deleteSessions() {
97
+ await (0, active_atlas_1.requireActive)('account.deleteSessions').signOut();
98
+ return {};
99
+ }
100
+ /** `createJWT()`: `{ jwt }` is the Atlas session JWT (verify it with @atlasauth/backend). */
101
+ async createJWT() {
102
+ const jwt = await (0, active_atlas_1.requireActive)('account.createJWT').getToken();
103
+ if (!jwt)
104
+ throw new AppwriteCompatException();
105
+ return { jwt };
106
+ }
107
+ /** `createOAuth2Session(provider, success)`: opens the Atlas sign-in page, returning to `success`. */
108
+ createOAuth2Session(_provider, success, _failure, _scopes) {
109
+ (0, components_shared_1.navigateTo)((0, components_shared_1.withRedirect)('/sign-in', success ?? backHere()));
110
+ }
111
+ createOAuth2Token(provider, success, failure, scopes) {
112
+ this.createOAuth2Session(provider, success, failure, scopes);
113
+ }
114
+ async create(..._args) {
115
+ return moved('account.create', 'sign-up runs on the Atlas sign-up page (<SignUp /> or /sign-up)');
116
+ }
117
+ async createEmailPasswordSession(..._args) {
118
+ return moved('account.createEmailPasswordSession', SIGN_IN_PAGE);
119
+ }
120
+ async createEmailSession(..._args) {
121
+ return moved('account.createEmailSession', SIGN_IN_PAGE);
122
+ }
123
+ async createMagicURLToken(..._args) {
124
+ return moved('account.createMagicURLToken', 'enable magic links in the Atlas dashboard; the sign-in page sends them');
125
+ }
126
+ async createEmailToken(..._args) {
127
+ return moved('account.createEmailToken', 'enable email codes in the Atlas dashboard; the sign-in page sends them');
128
+ }
129
+ async createPhoneToken(..._args) {
130
+ return moved('account.createPhoneToken', 'enable SMS codes in the Atlas dashboard; the sign-in page sends them');
131
+ }
132
+ async createSession(..._args) {
133
+ return moved('account.createSession', SIGN_IN_PAGE);
134
+ }
135
+ async createAnonymousSession(..._args) {
136
+ return moved('account.createAnonymousSession', 'enable anonymous users in the Atlas dashboard');
137
+ }
138
+ async updatePassword(..._args) {
139
+ return moved('account.updatePassword', PROFILE);
140
+ }
141
+ async updateEmail(..._args) {
142
+ return moved('account.updateEmail', PROFILE);
143
+ }
144
+ async updateName(..._args) {
145
+ return moved('account.updateName', PROFILE);
146
+ }
147
+ async updatePrefs(..._args) {
148
+ return moved('account.updatePrefs', 'store preferences in the user\'s unsafe_metadata (user.update from @atlasauth/js)');
149
+ }
150
+ async createRecovery(..._args) {
151
+ return moved('account.createRecovery', 'password reset is built into the Atlas sign-in page');
152
+ }
153
+ async updateRecovery(..._args) {
154
+ return moved('account.updateRecovery', 'password reset is built into the Atlas sign-in page');
155
+ }
156
+ async createVerification(..._args) {
157
+ return moved('account.createVerification', 'Atlas verifies email addresses during sign-up and in <UserProfile />');
158
+ }
159
+ async updateVerification(..._args) {
160
+ return moved('account.updateVerification', 'Atlas verifies email addresses during sign-up and in <UserProfile />');
161
+ }
162
+ }
163
+ exports.AppwriteAccountCompat = AppwriteAccountCompat;
164
+ function pocketbaseRecordFrom(user) {
165
+ const email = (0, compat_1.primaryEmail)(user);
166
+ const fields = user.public_metadata?.pocketbase_fields;
167
+ return {
168
+ ...(fields && typeof fields === 'object' && !Array.isArray(fields) ? fields : {}),
169
+ id: user.id,
170
+ collectionName: 'users',
171
+ email: email?.address ?? '',
172
+ verified: email?.verified ?? false,
173
+ username: user.username ?? '',
174
+ name: (0, compat_1.displayName)(user) ?? '',
175
+ avatar: user.image_url ?? '',
176
+ };
177
+ }
178
+ let cachedToken = '';
179
+ let tokenWatch = null;
180
+ /** Keep `authStore.token` (synchronous in PocketBase) filled from the async Atlas token. */
181
+ function watchToken() {
182
+ if (tokenWatch)
183
+ return;
184
+ const refresh = (atlas) => {
185
+ if (!atlas || atlas.status !== 'signed_in') {
186
+ cachedToken = '';
187
+ return;
188
+ }
189
+ void atlas.getToken().then((t) => {
190
+ cachedToken = t ?? '';
191
+ }, () => {
192
+ cachedToken = '';
193
+ });
194
+ };
195
+ tokenWatch = (0, active_atlas_1.onActiveAtlasChange)(refresh);
196
+ refresh((0, active_atlas_1.getActiveAtlas)());
197
+ }
198
+ /** `pb.authStore`, answered by the Atlas session. */
199
+ exports.pocketbaseAuthStoreCompat = {
200
+ get isValid() {
201
+ return (0, active_atlas_1.getActiveAtlas)()?.status === 'signed_in';
202
+ },
203
+ /** The last Atlas session JWT seen (empty until the first one is minted); prefer `await getToken()`. */
204
+ get token() {
205
+ watchToken();
206
+ return cachedToken;
207
+ },
208
+ get record() {
209
+ const user = signedInUser((0, active_atlas_1.getActiveAtlas)());
210
+ return user ? pocketbaseRecordFrom(user) : null;
211
+ },
212
+ /** Pre-0.23 name for `record`. */
213
+ get model() {
214
+ return this.record;
215
+ },
216
+ get isSuperuser() {
217
+ return false;
218
+ },
219
+ get isAdmin() {
220
+ return false;
221
+ },
222
+ /** The current Atlas session JWT. */
223
+ async getToken() {
224
+ return (await (0, active_atlas_1.getActiveAtlas)()?.getToken()) ?? '';
225
+ },
226
+ clear() {
227
+ void (0, active_atlas_1.getActiveAtlas)()?.signOut();
228
+ },
229
+ /** `onChange((token, record) => …, fireImmediately)`: returns the unsubscribe. */
230
+ onChange(callback, fireImmediately = false) {
231
+ let lastId;
232
+ const listener = (atlas) => {
233
+ if (!atlas || atlas.status === 'loading')
234
+ return;
235
+ const user = signedInUser(atlas);
236
+ const id = user?.id ?? null;
237
+ if (lastId === undefined && !fireImmediately) {
238
+ lastId = id;
239
+ return;
240
+ }
241
+ if (id === lastId)
242
+ return;
243
+ lastId = id;
244
+ if (!user) {
245
+ callback('', null);
246
+ return;
247
+ }
248
+ void atlas.getToken().then((t) => callback(t ?? '', pocketbaseRecordFrom(user)));
249
+ };
250
+ const unsubscribe = (0, active_atlas_1.onActiveAtlasChange)(listener);
251
+ listener((0, active_atlas_1.getActiveAtlas)());
252
+ return unsubscribe;
253
+ },
254
+ /** Atlas keeps its own session cookie: there is nothing to load. */
255
+ loadFromCookie(_cookie, _key) { },
256
+ /** Atlas keeps its own session cookie: there is nothing to export. */
257
+ exportToCookie(_options, _key) {
258
+ return '';
259
+ },
260
+ save(_token, _record) {
261
+ moved('pb.authStore.save', 'Atlas manages the session; sign users in through <SignIn />');
262
+ },
263
+ };
264
+ function nhostUserFrom(user) {
265
+ const email = (0, compat_1.primaryEmail)(user);
266
+ const phone = primaryPhone(user);
267
+ const meta = user.public_metadata ?? {};
268
+ const roles = Array.isArray(meta.nhost_roles) ? meta.nhost_roles.filter((r) => typeof r === 'string') : ['user'];
269
+ return {
270
+ id: user.id,
271
+ ...(email ? { email: email.address } : {}),
272
+ emailVerified: email?.verified ?? false,
273
+ displayName: (0, compat_1.displayName)(user) ?? '',
274
+ avatarUrl: user.image_url ?? '',
275
+ ...(phone ? { phoneNumber: phone.phone_number } : {}),
276
+ phoneNumberVerified: phone?.verified ?? false,
277
+ defaultRole: typeof meta.nhost_default_role === 'string' ? meta.nhost_default_role : 'user',
278
+ roles,
279
+ locale: typeof meta.locale === 'string' ? meta.locale : 'en',
280
+ isAnonymous: false,
281
+ metadata: { ...(user.unsafe_metadata ?? {}) },
282
+ };
283
+ }
284
+ /** `nhost.auth.*` session readers. */
285
+ exports.nhostAuthCompat = {
286
+ getUser() {
287
+ const user = signedInUser((0, active_atlas_1.getActiveAtlas)());
288
+ return user ? nhostUserFrom(user) : null;
289
+ },
290
+ isAuthenticated() {
291
+ return (0, active_atlas_1.getActiveAtlas)()?.status === 'signed_in';
292
+ },
293
+ /** Resolves once the session is known (not while the provider is still loading). */
294
+ isAuthenticatedAsync() {
295
+ return new Promise((resolve) => {
296
+ let unsubscribe = null;
297
+ let done = false;
298
+ const settle = (atlas) => {
299
+ if (done || !atlas || atlas.status === 'loading')
300
+ return;
301
+ done = true;
302
+ unsubscribe?.();
303
+ resolve(atlas.status === 'signed_in');
304
+ };
305
+ unsubscribe = (0, active_atlas_1.onActiveAtlasChange)(settle);
306
+ settle((0, active_atlas_1.getActiveAtlas)());
307
+ });
308
+ },
309
+ async getAccessToken() {
310
+ return (await (0, active_atlas_1.getActiveAtlas)()?.getToken()) ?? undefined;
311
+ },
312
+ async getSession() {
313
+ const atlas = (0, active_atlas_1.getActiveAtlas)();
314
+ const user = signedInUser(atlas);
315
+ const token = user ? await atlas.getToken() : null;
316
+ return user && token ? { accessToken: token, user: nhostUserFrom(user) } : null;
317
+ },
318
+ async signOut(_params) {
319
+ await (0, active_atlas_1.requireActive)('nhost.auth.signOut').signOut();
320
+ return { error: null };
321
+ },
322
+ /** `onAuthStateChanged((event, session) => …)`: SIGNED_IN / SIGNED_OUT. Returns the unsubscribe. */
323
+ onAuthStateChanged(callback) {
324
+ let lastId;
325
+ const listener = (atlas) => {
326
+ if (!atlas || atlas.status === 'loading')
327
+ return;
328
+ const user = signedInUser(atlas);
329
+ const id = user?.id ?? null;
330
+ if (id === lastId)
331
+ return;
332
+ const first = lastId === undefined;
333
+ lastId = id;
334
+ if (user)
335
+ callback('SIGNED_IN', { user: nhostUserFrom(user) });
336
+ else if (!first)
337
+ callback('SIGNED_OUT', null);
338
+ };
339
+ const unsubscribe = (0, active_atlas_1.onActiveAtlasChange)(listener);
340
+ listener((0, active_atlas_1.getActiveAtlas)());
341
+ return unsubscribe;
342
+ },
343
+ /** `onTokenChanged(cb)`: fires when the session token is refreshed. */
344
+ onTokenChanged(callback) {
345
+ let lastExp;
346
+ return (0, active_atlas_1.onActiveAtlasChange)((atlas) => {
347
+ if (!atlas || atlas.status === 'loading')
348
+ return;
349
+ const exp = atlas.claims?.exp ?? null;
350
+ if (exp === lastExp)
351
+ return;
352
+ lastExp = exp;
353
+ if (atlas.status !== 'signed_in')
354
+ callback(null);
355
+ else
356
+ void atlas.getToken().then((t) => callback(t ? { accessToken: t } : null));
357
+ });
358
+ },
359
+ };
360
+ /** `useAuthenticationStatus()`: `{ isAuthenticated, isLoading }`. */
361
+ function useNhostAuthenticationStatusCompat() {
362
+ const atlas = (0, AtlasProvider_1.useAtlas)();
363
+ return { isAuthenticated: atlas.status === 'signed_in', isLoading: atlas.status === 'loading', error: null, isError: false };
364
+ }
365
+ /** `useAuthenticated()`. */
366
+ function useNhostAuthenticatedCompat() {
367
+ return (0, AtlasProvider_1.useAtlas)().status === 'signed_in';
368
+ }
369
+ /** `useUserData()`: the user, or null. */
370
+ function useNhostUserDataCompat() {
371
+ const atlas = (0, AtlasProvider_1.useAtlas)();
372
+ return atlas.status === 'signed_in' && atlas.user ? nhostUserFrom(atlas.user) : null;
373
+ }
374
+ /** `useUserId()`. */
375
+ function useNhostUserIdCompat() {
376
+ return useNhostUserDataCompat()?.id;
377
+ }
378
+ /** `useUserEmail()`. */
379
+ function useNhostUserEmailCompat() {
380
+ return useNhostUserDataCompat()?.email;
381
+ }
382
+ /** `useUserDisplayName()`. */
383
+ function useNhostUserDisplayNameCompat() {
384
+ return useNhostUserDataCompat()?.displayName || undefined;
385
+ }
386
+ /** `useUserAvatarUrl()`. */
387
+ function useNhostUserAvatarUrlCompat() {
388
+ return useNhostUserDataCompat()?.avatarUrl || undefined;
389
+ }
390
+ /** `useSignOut()`: `{ signOut, isSuccess }`. */
391
+ function useNhostSignOutCompat() {
392
+ const atlas = (0, AtlasProvider_1.useAtlas)();
393
+ return {
394
+ signOut: async () => {
395
+ await (0, active_atlas_1.requireActive)('useSignOut').signOut();
396
+ return { isSuccess: true, isError: false, error: null };
397
+ },
398
+ isSuccess: atlas.status === 'signed_out',
399
+ };
400
+ }
401
+ //# sourceMappingURL=compat-baas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat-baas.js","sourceRoot":"","sources":["../src/compat-baas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type { AtlasOrganizationMembership, AtlasUser, SessionClaims } from './types';
2
+ /** The user object Descope's `useUser()` returns (the fields apps read). */
3
+ export interface DescopeCompatUser {
4
+ userId: string;
5
+ loginIds: string[];
6
+ email?: string;
7
+ verifiedEmail: boolean;
8
+ phone?: string;
9
+ verifiedPhone: boolean;
10
+ name?: string;
11
+ givenName?: string;
12
+ familyName?: string;
13
+ picture?: string;
14
+ roleNames: string[];
15
+ userTenants: Array<{
16
+ tenantId: string;
17
+ tenantName: string;
18
+ roleNames: string[];
19
+ }>;
20
+ customAttributes: Record<string, unknown>;
21
+ }
22
+ /** Descope's session-token claims: `roles`, `permissions` and per-tenant `tenants`. */
23
+ export interface DescopeCompatClaims {
24
+ sub: string;
25
+ exp?: number;
26
+ roles: string[];
27
+ permissions: string[];
28
+ tenants: Record<string, {
29
+ roles: string[];
30
+ permissions: string[];
31
+ }>;
32
+ [claim: string]: unknown;
33
+ }
34
+ /**
35
+ * Project an Atlas user onto Descope's user shape: organization memberships
36
+ * become `userTenants`, the session's app roles `roleNames`.
37
+ */
38
+ export declare function descopeUserFrom(user: AtlasUser | null, memberships?: readonly AtlasOrganizationMembership[], claims?: SessionClaims | null): DescopeCompatUser | undefined;
39
+ /**
40
+ * Project Atlas session claims onto Descope's: top-level `roles` / `permissions`
41
+ * are the app roles and their permissions (`app_roles` / `app_permissions`),
42
+ * `tenants` holds the active organization's role and permissions.
43
+ */
44
+ export declare function descopeClaimsFrom(claims: SessionClaims | null): DescopeCompatClaims | undefined;
45
+ /**
46
+ * `useSession()` from Descope, on Atlas: `{ isAuthenticated, isSessionLoading,
47
+ * isSessionFetched, sessionToken, claims }`. `sessionToken` is the Atlas session
48
+ * JWT; Atlas session tokens are short-lived, so it is fetched again shortly
49
+ * before each one expires. `isSessionLoading` stays true until the first token
50
+ * is in hand, so a component that waits for it never sends `Bearer undefined`.
51
+ */
52
+ export declare function useDescopeSessionCompat(): {
53
+ isAuthenticated: boolean;
54
+ isSessionLoading: boolean;
55
+ isSessionFetched: boolean;
56
+ sessionToken: string | undefined;
57
+ claims: DescopeCompatClaims | undefined;
58
+ };
59
+ /** `useUser()` from Descope, on Atlas: `{ user, isUserLoading, isUserFetched }`. */
60
+ export declare function useDescopeUserCompat(): {
61
+ user: DescopeCompatUser | undefined;
62
+ isUserLoading: boolean;
63
+ isUserFetched: boolean;
64
+ };
65
+ /**
66
+ * `useDescope()` from Descope, on Atlas — the session members only: `logout()`
67
+ * signs out (revoking the session) and `refresh()` reloads the session. Both
68
+ * resolve `{ ok: true }` like the Descope SDK's responses. Stable across renders,
69
+ * so it can sit in a `useCallback` dependency list as the Descope SDK did.
70
+ */
71
+ export declare function useDescopeCompat(): {
72
+ logout(): Promise<{
73
+ ok: true;
74
+ }>;
75
+ refresh(): Promise<{
76
+ ok: true;
77
+ }>;
78
+ };
79
+ /**
80
+ * `getSessionToken()` from Descope, on Atlas. Descope's is synchronous; Atlas
81
+ * mints tokens asynchronously, so this resolves the token (`await` it). Like
82
+ * Descope it yields an empty string when nobody is signed in, or when no
83
+ * `<AtlasProvider>` is mounted.
84
+ */
85
+ export declare function getDescopeSessionTokenCompat(): Promise<string>;