@atlasauth/js 0.14.0 → 0.16.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 (63) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/account-hints.d.ts +53 -0
  3. package/dist/account-hints.js +114 -0
  4. package/dist/account-hints.js.map +1 -0
  5. package/dist/attempt.d.ts +3 -1
  6. package/dist/attempt.js.map +1 -1
  7. package/dist/captcha-controller.d.ts +21 -0
  8. package/dist/captcha-controller.js +35 -0
  9. package/dist/captcha-controller.js.map +1 -1
  10. package/dist/dev-browser.d.ts +30 -0
  11. package/dist/dev-browser.js +175 -0
  12. package/dist/dev-browser.js.map +1 -0
  13. package/dist/environment.d.ts +48 -0
  14. package/dist/environment.js +54 -1
  15. package/dist/environment.js.map +1 -1
  16. package/dist/fapi.d.ts +42 -3
  17. package/dist/fapi.js +94 -9
  18. package/dist/fapi.js.map +1 -1
  19. package/dist/impersonation.d.ts +44 -0
  20. package/dist/impersonation.js +47 -0
  21. package/dist/impersonation.js.map +1 -0
  22. package/dist/index.d.ts +11 -0
  23. package/dist/index.js +30 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/instance-settings.d.ts +7 -1
  26. package/dist/instance-settings.js +15 -1
  27. package/dist/instance-settings.js.map +1 -1
  28. package/dist/mfa-enrollment.d.ts +154 -0
  29. package/dist/mfa-enrollment.js +288 -0
  30. package/dist/mfa-enrollment.js.map +1 -0
  31. package/dist/organization-audit-log.d.ts +63 -0
  32. package/dist/organization-audit-log.js +96 -0
  33. package/dist/organization-audit-log.js.map +1 -0
  34. package/dist/organizations.d.ts +330 -0
  35. package/dist/organizations.js +375 -0
  36. package/dist/organizations.js.map +1 -0
  37. package/dist/passkey-sign-in.d.ts +40 -0
  38. package/dist/passkey-sign-in.js +41 -0
  39. package/dist/passkey-sign-in.js.map +1 -0
  40. package/dist/passkey-sign-up.d.ts +46 -0
  41. package/dist/passkey-sign-up.js +98 -0
  42. package/dist/passkey-sign-up.js.map +1 -0
  43. package/dist/password-reset.d.ts +12 -0
  44. package/dist/password-reset.js +15 -0
  45. package/dist/password-reset.js.map +1 -1
  46. package/dist/phone-numbers.d.ts +43 -0
  47. package/dist/phone-numbers.js +65 -0
  48. package/dist/phone-numbers.js.map +1 -0
  49. package/dist/profile.d.ts +24 -0
  50. package/dist/profile.js +24 -0
  51. package/dist/profile.js.map +1 -0
  52. package/dist/referral-detect.d.ts +90 -0
  53. package/dist/referral-detect.js +432 -0
  54. package/dist/referral-detect.js.map +1 -0
  55. package/dist/referral.d.ts +59 -29
  56. package/dist/referral.js +96 -47
  57. package/dist/referral.js.map +1 -1
  58. package/dist/sign-out-guard.d.ts +8 -0
  59. package/dist/sign-out-guard.js +15 -0
  60. package/dist/sign-out-guard.js.map +1 -1
  61. package/dist/version.d.ts +1 -1
  62. package/dist/version.js +1 -1
  63. package/package.json +2 -2
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrganizationProfileController = exports.OrganizationRequestError = void 0;
4
+ exports.listMyOrganizations = listMyOrganizations;
5
+ exports.createOrganization = createOrganization;
6
+ exports.getOrganization = getOrganization;
7
+ exports.updateOrganization = updateOrganization;
8
+ exports.deleteOrganization = deleteOrganization;
9
+ exports.leaveOrganization = leaveOrganization;
10
+ exports.checkOrganizationSlug = checkOrganizationSlug;
11
+ exports.getOrganizationBySlug = getOrganizationBySlug;
12
+ exports.listOrganizationRoles = listOrganizationRoles;
13
+ exports.listAssignablePermissions = listAssignablePermissions;
14
+ exports.createOrganizationRole = createOrganizationRole;
15
+ exports.updateOrganizationRole = updateOrganizationRole;
16
+ exports.deleteOrganizationRole = deleteOrganizationRole;
17
+ exports.listOrganizationMembers = listOrganizationMembers;
18
+ exports.updateMemberRole = updateMemberRole;
19
+ exports.removeMember = removeMember;
20
+ exports.listOrganizationInvitations = listOrganizationInvitations;
21
+ exports.inviteMember = inviteMember;
22
+ exports.revokeInvitation = revokeInvitation;
23
+ exports.resendInvitation = resendInvitation;
24
+ exports.getOrganizationInvitation = getOrganizationInvitation;
25
+ exports.acceptOrganizationInvitation = acceptOrganizationInvitation;
26
+ exports.listMyOrganizationInvitations = listMyOrganizationInvitations;
27
+ exports.acceptMyOrganizationInvitation = acceptMyOrganizationInvitation;
28
+ exports.declineMyOrganizationInvitation = declineMyOrganizationInvitation;
29
+ exports.listMyOrganizationSuggestions = listMyOrganizationSuggestions;
30
+ exports.acceptOrganizationSuggestion = acceptOrganizationSuggestion;
31
+ exports.listMembershipRequests = listMembershipRequests;
32
+ exports.acceptMembershipRequest = acceptMembershipRequest;
33
+ exports.rejectMembershipRequest = rejectMembershipRequest;
34
+ exports.getOrganizationSettings = getOrganizationSettings;
35
+ exports.updateOrganizationSettings = updateOrganizationSettings;
36
+ exports.listTeams = listTeams;
37
+ exports.listMyTeams = listMyTeams;
38
+ exports.createTeam = createTeam;
39
+ exports.updateTeam = updateTeam;
40
+ exports.deleteTeam = deleteTeam;
41
+ exports.listTeamMembers = listTeamMembers;
42
+ exports.addTeamMember = addTeamMember;
43
+ exports.removeTeamMember = removeTeamMember;
44
+ /** A refused request. `code` is the server's stable error code. */
45
+ class OrganizationRequestError extends Error {
46
+ code;
47
+ status;
48
+ param;
49
+ reason;
50
+ meta;
51
+ constructor(status, code, message, param, reason, meta) {
52
+ super(message);
53
+ this.name = 'OrganizationRequestError';
54
+ this.status = status;
55
+ this.code = code;
56
+ this.param = param;
57
+ if (reason)
58
+ this.reason = reason;
59
+ if (meta)
60
+ this.meta = meta;
61
+ }
62
+ /** True when the action needs a fresh re-authentication first (deleting an organization). */
63
+ get needsReverification() {
64
+ return this.code === 'STEP_UP_REQUIRED';
65
+ }
66
+ }
67
+ exports.OrganizationRequestError = OrganizationRequestError;
68
+ const enc = encodeURIComponent;
69
+ const ORGS = '/v1/client/organizations';
70
+ async function call(client, path, init = {}) {
71
+ const res = await client.request(path, init);
72
+ if (!res.ok || !res.data) {
73
+ const first = res.errors[0];
74
+ throw new OrganizationRequestError(res.status, first?.code ?? 'UNKNOWN', first?.message ?? 'The request failed.', first?.param, first?.reason, first?.meta);
75
+ }
76
+ return res.data;
77
+ }
78
+ const json = (method, body) => body === undefined ? { method } : { method, body: JSON.stringify(body) };
79
+ function list(body) {
80
+ return {
81
+ data: body.data ?? [],
82
+ ...(body.total_count !== undefined ? { totalCount: body.total_count } : {}),
83
+ hasMore: body.has_more ?? false,
84
+ };
85
+ }
86
+ // ---- Organizations -----------------------------------------------------------
87
+ /** The organizations the signed-in user belongs to. */
88
+ async function listMyOrganizations(client) {
89
+ return list(await call(client, '/v1/client/me/organizations', json('GET')));
90
+ }
91
+ async function createOrganization(client, input) {
92
+ return call(client, ORGS, json('POST', input));
93
+ }
94
+ /** The ACTIVE organization. */
95
+ async function getOrganization(client, organizationId) {
96
+ return call(client, `${ORGS}/${enc(organizationId)}`, json('GET'));
97
+ }
98
+ async function updateOrganization(client, organizationId, input) {
99
+ return call(client, `${ORGS}/${enc(organizationId)}`, json('PATCH', input));
100
+ }
101
+ /**
102
+ * Delete the active organization (admin only, when the application allows it).
103
+ * Needs a recent re-authentication: a stale session gets an error whose
104
+ * `needsReverification` is true.
105
+ */
106
+ async function deleteOrganization(client, organizationId) {
107
+ return call(client, `${ORGS}/${enc(organizationId)}`, json('DELETE'));
108
+ }
109
+ /** Leave an organization (any member; the only admin must promote someone first). */
110
+ async function leaveOrganization(client, organizationId) {
111
+ return call(client, `/v1/client/me/organizations/${enc(organizationId)}/membership`, json('DELETE'));
112
+ }
113
+ async function checkOrganizationSlug(client, slug) {
114
+ return call(client, `${ORGS}/check_slug?slug=${enc(slug)}`, json('GET'));
115
+ }
116
+ /** An organization the user belongs to, by slug (404 otherwise). */
117
+ async function getOrganizationBySlug(client, slug) {
118
+ return call(client, `${ORGS}/by_slug/${enc(slug)}`, json('GET'));
119
+ }
120
+ /** The roles a member can hold (for a role picker). */
121
+ async function listOrganizationRoles(client, organizationId) {
122
+ return (await call(client, `${ORGS}/${enc(organizationId)}/roles`, json('GET'))).data ?? [];
123
+ }
124
+ /**
125
+ * The permissions the caller may put on a custom role: the instance's
126
+ * permissions that the caller holds (needs member management).
127
+ */
128
+ async function listAssignablePermissions(client, organizationId) {
129
+ return (await call(client, `${ORGS}/${enc(organizationId)}/permissions`, json('GET'))).data ?? [];
130
+ }
131
+ /** Create a custom role for the active organization (never past the caller's own permissions). */
132
+ async function createOrganizationRole(client, organizationId, input) {
133
+ return call(client, `${ORGS}/${enc(organizationId)}/roles`, json('POST', input));
134
+ }
135
+ /** Rename one of the organization's own roles or replace its permissions (the key is fixed). */
136
+ async function updateOrganizationRole(client, organizationId, roleId, input) {
137
+ return call(client, `${ORGS}/${enc(organizationId)}/roles/${enc(roleId)}`, json('PATCH', input));
138
+ }
139
+ /**
140
+ * Delete one of the organization's own roles. A role still in use needs
141
+ * `reassignTo` (a role key) — its members and pending invitations move first.
142
+ */
143
+ async function deleteOrganizationRole(client, organizationId, roleId, options = {}) {
144
+ const qs = options.reassignTo ? `?reassign_to=${enc(options.reassignTo)}` : '';
145
+ return call(client, `${ORGS}/${enc(organizationId)}/roles/${enc(roleId)}${qs}`, json('DELETE'));
146
+ }
147
+ // ---- Members -----------------------------------------------------------------
148
+ async function listOrganizationMembers(client, organizationId, options = {}) {
149
+ const q = new URLSearchParams();
150
+ if (options.limit !== undefined)
151
+ q.set('limit', String(options.limit));
152
+ if (options.offset !== undefined)
153
+ q.set('offset', String(options.offset));
154
+ const qs = q.toString();
155
+ return list(await call(client, `${ORGS}/${enc(organizationId)}/memberships${qs ? `?${qs}` : ''}`, json('GET')));
156
+ }
157
+ async function updateMemberRole(client, organizationId, userId, role) {
158
+ return call(client, `${ORGS}/${enc(organizationId)}/memberships/${enc(userId)}`, json('PATCH', { role }));
159
+ }
160
+ async function removeMember(client, organizationId, userId) {
161
+ return call(client, `${ORGS}/${enc(organizationId)}/memberships/${enc(userId)}`, json('DELETE'));
162
+ }
163
+ // ---- Invitations ---------------------------------------------------------------
164
+ async function listOrganizationInvitations(client, organizationId, options = {}) {
165
+ const qs = options.status ? `?status=${enc(options.status)}` : '';
166
+ return list(await call(client, `${ORGS}/${enc(organizationId)}/invitations${qs}`, json('GET')));
167
+ }
168
+ async function inviteMember(client, organizationId, input) {
169
+ return call(client, `${ORGS}/${enc(organizationId)}/invitations`, json('POST', { email_address: input.emailAddress, role: input.role }));
170
+ }
171
+ async function revokeInvitation(client, organizationId, invitationId) {
172
+ return call(client, `${ORGS}/${enc(organizationId)}/invitations/${enc(invitationId)}/revoke`, json('POST'));
173
+ }
174
+ async function resendInvitation(client, organizationId, invitationId) {
175
+ return call(client, `${ORGS}/${enc(organizationId)}/invitations/${enc(invitationId)}/resend`, json('POST'));
176
+ }
177
+ /** The public view of an invitation, for an accept page (no sign-in needed). */
178
+ async function getOrganizationInvitation(client, invitationId) {
179
+ return call(client, `/v1/client/organization_invitations/${enc(invitationId)}`, json('GET'));
180
+ }
181
+ /** Accept an invitation by id as the signed-in user. */
182
+ async function acceptOrganizationInvitation(client, invitationId) {
183
+ return call(client, `/v1/client/organization_invitations/${enc(invitationId)}/accept`, json('POST'));
184
+ }
185
+ /** Invitations addressed to the signed-in user. */
186
+ async function listMyOrganizationInvitations(client) {
187
+ return list(await call(client, '/v1/client/me/organization_invitations', json('GET')));
188
+ }
189
+ async function acceptMyOrganizationInvitation(client, invitationId) {
190
+ return call(client, `/v1/client/me/organization_invitations/${enc(invitationId)}/accept`, json('POST'));
191
+ }
192
+ async function declineMyOrganizationInvitation(client, invitationId) {
193
+ return call(client, `/v1/client/me/organization_invitations/${enc(invitationId)}/decline`, json('POST'));
194
+ }
195
+ /** Organizations the user could join (verified email domain matches). */
196
+ async function listMyOrganizationSuggestions(client) {
197
+ return list(await call(client, '/v1/client/me/organization_suggestions', json('GET')));
198
+ }
199
+ async function acceptOrganizationSuggestion(client, organizationId) {
200
+ return call(client, `/v1/client/me/organization_suggestions/${enc(organizationId)}/accept`, json('POST'));
201
+ }
202
+ // ---- Membership requests --------------------------------------------------------
203
+ async function listMembershipRequests(client, organizationId) {
204
+ return list(await call(client, `${ORGS}/${enc(organizationId)}/membership_requests`, json('GET')));
205
+ }
206
+ async function acceptMembershipRequest(client, organizationId, requestId) {
207
+ return call(client, `${ORGS}/${enc(organizationId)}/membership_requests/${enc(requestId)}/accept`, json('POST'));
208
+ }
209
+ async function rejectMembershipRequest(client, organizationId, requestId) {
210
+ return call(client, `${ORGS}/${enc(organizationId)}/membership_requests/${enc(requestId)}/reject`, json('POST'));
211
+ }
212
+ // ---- Settings ---------------------------------------------------------------------
213
+ async function getOrganizationSettings(client, organizationId) {
214
+ return call(client, `${ORGS}/${enc(organizationId)}/settings`, json('GET'));
215
+ }
216
+ /** Write the organization's settings (admin; needs a recent re-authentication). */
217
+ async function updateOrganizationSettings(client, organizationId, values) {
218
+ return call(client, `${ORGS}/${enc(organizationId)}/settings`, json('PUT', { values }));
219
+ }
220
+ // ---- Teams ------------------------------------------------------------------------
221
+ async function listTeams(client, organizationId) {
222
+ return (await call(client, `${ORGS}/${enc(organizationId)}/teams`, json('GET'))).data ?? [];
223
+ }
224
+ /** The caller's own teams, and the session's active team. */
225
+ async function listMyTeams(client, organizationId) {
226
+ const body = await call(client, `${ORGS}/${enc(organizationId)}/teams/mine`, json('GET'));
227
+ return { data: body.data ?? [], activeTeamId: body.active_team_id ?? null };
228
+ }
229
+ async function createTeam(client, organizationId, input) {
230
+ return call(client, `${ORGS}/${enc(organizationId)}/teams`, json('POST', input));
231
+ }
232
+ async function updateTeam(client, organizationId, teamId, input) {
233
+ return call(client, `${ORGS}/${enc(organizationId)}/teams/${enc(teamId)}`, json('PATCH', input));
234
+ }
235
+ async function deleteTeam(client, organizationId, teamId) {
236
+ return call(client, `${ORGS}/${enc(organizationId)}/teams/${enc(teamId)}`, json('DELETE'));
237
+ }
238
+ async function listTeamMembers(client, organizationId, teamId) {
239
+ return (await call(client, `${ORGS}/${enc(organizationId)}/teams/${enc(teamId)}/members`, json('GET'))).data ?? [];
240
+ }
241
+ async function addTeamMember(client, organizationId, teamId, userId) {
242
+ return call(client, `${ORGS}/${enc(organizationId)}/teams/${enc(teamId)}/members`, json('POST', { user_id: userId }));
243
+ }
244
+ async function removeTeamMember(client, organizationId, teamId, userId) {
245
+ return call(client, `${ORGS}/${enc(organizationId)}/teams/${enc(teamId)}/members/${enc(userId)}`, json('DELETE'));
246
+ }
247
+ /**
248
+ * The state and actions behind `<OrganizationProfile>`, framework-free. Each
249
+ * SDK wraps it in its own reactivity (`subscribe` + `getState`). Admin-only
250
+ * reads (invitations) are skipped when `canManage` is false; a refused admin
251
+ * call surfaces as `error` rather than throwing out of an event handler.
252
+ */
253
+ class OrganizationProfileController {
254
+ client;
255
+ organizationId;
256
+ options;
257
+ state = {
258
+ status: 'idle',
259
+ members: [],
260
+ membersTotal: 0,
261
+ invitations: [],
262
+ roles: [],
263
+ permissions: [],
264
+ error: null,
265
+ busy: null,
266
+ };
267
+ listeners = new Set();
268
+ constructor(client, organizationId, options = {}) {
269
+ this.client = client;
270
+ this.organizationId = organizationId;
271
+ this.options = options;
272
+ }
273
+ getState() {
274
+ return this.state;
275
+ }
276
+ subscribe(listener) {
277
+ this.listeners.add(listener);
278
+ return () => {
279
+ this.listeners.delete(listener);
280
+ };
281
+ }
282
+ set(patch) {
283
+ this.state = { ...this.state, ...patch };
284
+ for (const l of this.listeners)
285
+ l(this.state);
286
+ }
287
+ /** Load members, roles and (for admins) pending invitations. */
288
+ async load() {
289
+ this.set({ status: 'loading', error: null });
290
+ try {
291
+ const [members, roles, invitations, permissions] = await Promise.all([
292
+ listOrganizationMembers(this.client, this.organizationId, { limit: 200 }),
293
+ listOrganizationRoles(this.client, this.organizationId),
294
+ this.options.canManage
295
+ ? listOrganizationInvitations(this.client, this.organizationId, { status: 'pending' })
296
+ : Promise.resolve({ data: [], hasMore: false }),
297
+ // Custom roles are optional: an older server (or none to grant) is just an empty list.
298
+ this.options.canManage
299
+ ? listAssignablePermissions(this.client, this.organizationId).catch(() => [])
300
+ : Promise.resolve([]),
301
+ ]);
302
+ this.set({
303
+ status: 'ready',
304
+ members: members.data,
305
+ membersTotal: members.totalCount ?? members.data.length,
306
+ roles,
307
+ invitations: invitations.data,
308
+ permissions,
309
+ });
310
+ }
311
+ catch (error) {
312
+ this.set({ status: 'error', error: error });
313
+ }
314
+ }
315
+ async run(busy, fn, reload = true) {
316
+ this.set({ busy, error: null });
317
+ try {
318
+ const out = await fn();
319
+ if (reload)
320
+ await this.load();
321
+ return out;
322
+ }
323
+ catch (error) {
324
+ this.set({ error: error });
325
+ return undefined;
326
+ }
327
+ finally {
328
+ this.set({ busy: null });
329
+ }
330
+ }
331
+ changeRole(userId, role) {
332
+ return this.run(`role:${userId}`, () => updateMemberRole(this.client, this.organizationId, userId, role));
333
+ }
334
+ removeMember(userId) {
335
+ return this.run(`remove:${userId}`, () => removeMember(this.client, this.organizationId, userId));
336
+ }
337
+ invite(emailAddress, role) {
338
+ return this.run('invite', () => inviteMember(this.client, this.organizationId, { emailAddress, role }));
339
+ }
340
+ revokeInvitation(invitationId) {
341
+ return this.run(`revoke:${invitationId}`, () => revokeInvitation(this.client, this.organizationId, invitationId));
342
+ }
343
+ resendInvitation(invitationId) {
344
+ return this.run(`resend:${invitationId}`, () => resendInvitation(this.client, this.organizationId, invitationId));
345
+ }
346
+ /** The organization's own custom roles (a subset of `roles`). */
347
+ customRoles() {
348
+ return this.state.roles.filter((r) => Boolean(r.organization_id));
349
+ }
350
+ createRole(input) {
351
+ return this.run('role:create', () => createOrganizationRole(this.client, this.organizationId, input));
352
+ }
353
+ updateRole(roleId, input) {
354
+ return this.run(`role:update:${roleId}`, () => updateOrganizationRole(this.client, this.organizationId, roleId, input));
355
+ }
356
+ deleteRole(roleId, options = {}) {
357
+ return this.run(`role:delete:${roleId}`, () => deleteOrganizationRole(this.client, this.organizationId, roleId, options));
358
+ }
359
+ /** Leave; `onChange` (e.g. a session reload) runs after. */
360
+ async leave() {
361
+ const out = await this.run('leave', () => leaveOrganization(this.client, this.organizationId), false);
362
+ if (out)
363
+ await this.options.onChange?.();
364
+ return Boolean(out);
365
+ }
366
+ /** Delete (admin; may need re-authentication: check `error.needsReverification`). */
367
+ async deleteOrganization() {
368
+ const out = await this.run('delete', () => deleteOrganization(this.client, this.organizationId), false);
369
+ if (out)
370
+ await this.options.onChange?.();
371
+ return Boolean(out);
372
+ }
373
+ }
374
+ exports.OrganizationProfileController = OrganizationProfileController;
375
+ //# sourceMappingURL=organizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../src/organizations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Passkey sign-in's ceremony start, with the bot challenge folded in.
3
+ *
4
+ * Passwordless passkey sign-in has no identifier step, so when the instance
5
+ * challenges every sign-in (the always-on sign-in captcha, or a force-challenge
6
+ * switch) `POST /v1/client/sign_ins/passkey/begin` is where the captcha is
7
+ * taken: the token rides in its body as `captcha_token`, and without one the
8
+ * server answers `400 CAPTCHA_REQUIRED` (or `CAPTCHA_FAILED` for a token it
9
+ * refused).
10
+ *
11
+ * {@link beginPasskeySignIn} asks the caller's token source first (it returns a
12
+ * token only when the client already knows one is needed, e.g. an always-on
13
+ * sign-in captcha), and on a captcha refusal asks once more for a FRESH token
14
+ * (tokens are single-use) and retries once. The caller still runs the browser
15
+ * ceremony (`getPasskeyAssertion`) and the `finish` POST.
16
+ */
17
+ import type { FapiClient, FapiResponse } from './fapi';
18
+ /** What a passkey begin's token source is asked for. */
19
+ export interface PasskeyCaptchaRequest {
20
+ /**
21
+ * False on the first ask: return a token only when one is known to be needed
22
+ * (null to send none). True after the server refused the begin: a fresh token,
23
+ * rendering the challenge even if the flow's always-on flag is off.
24
+ */
25
+ retry: boolean;
26
+ /** On a retry, the refusal that prompted it. */
27
+ refused?: 'CAPTCHA_REQUIRED' | 'CAPTCHA_FAILED';
28
+ }
29
+ /** Supplies the `captcha_token` for a passkey begin; null/undefined sends none. */
30
+ export type PasskeyCaptchaSource = (request: PasskeyCaptchaRequest) => Promise<string | null | undefined>;
31
+ export declare const PASSKEY_SIGN_IN_BEGIN_PATH = "/v1/client/sign_ins/passkey/begin";
32
+ /**
33
+ * `POST /v1/client/sign_ins/passkey/begin`, carrying the captcha token when the
34
+ * instance challenges sign-ins, and retrying ONCE with a fresh token after a
35
+ * `CAPTCHA_REQUIRED` / `CAPTCHA_FAILED` refusal. Returns the (last) response;
36
+ * on success its `data` is the `getPasskeyAssertion` input.
37
+ */
38
+ export declare function beginPasskeySignIn(client: FapiClient, opts?: {
39
+ captcha?: PasskeyCaptchaSource | null;
40
+ }): Promise<FapiResponse<Record<string, unknown>>>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PASSKEY_SIGN_IN_BEGIN_PATH = void 0;
4
+ exports.beginPasskeySignIn = beginPasskeySignIn;
5
+ const captcha_widget_1 = require("./captcha-widget");
6
+ exports.PASSKEY_SIGN_IN_BEGIN_PATH = '/v1/client/sign_ins/passkey/begin';
7
+ const ask = async (source, request) => {
8
+ try {
9
+ return (await source(request)) || null;
10
+ }
11
+ catch {
12
+ // A provider that failed to load / timed out: send none; the server decides.
13
+ return null;
14
+ }
15
+ };
16
+ /**
17
+ * `POST /v1/client/sign_ins/passkey/begin`, carrying the captcha token when the
18
+ * instance challenges sign-ins, and retrying ONCE with a fresh token after a
19
+ * `CAPTCHA_REQUIRED` / `CAPTCHA_FAILED` refusal. Returns the (last) response;
20
+ * on success its `data` is the `getPasskeyAssertion` input.
21
+ */
22
+ async function beginPasskeySignIn(client, opts = {}) {
23
+ const post = (token) => client.post(exports.PASSKEY_SIGN_IN_BEGIN_PATH, token ? { captcha_token: token } : {});
24
+ const source = opts.captcha ?? null;
25
+ const first = source ? await ask(source, { retry: false }) : null;
26
+ const response = await post(first);
27
+ if (response.ok || !source)
28
+ return response;
29
+ const refusal = response.errors.find((error) => (0, captcha_widget_1.isCaptchaError)(error));
30
+ if (!refusal)
31
+ return response;
32
+ const fresh = await ask(source, {
33
+ retry: true,
34
+ refused: refusal.code === 'CAPTCHA_FAILED' ? 'CAPTCHA_FAILED' : 'CAPTCHA_REQUIRED',
35
+ });
36
+ // No token to retry with: report the refusal (the caller localizes it).
37
+ if (!fresh)
38
+ return response;
39
+ return post(fresh);
40
+ }
41
+ //# sourceMappingURL=passkey-sign-in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey-sign-in.js","sourceRoot":"","sources":["../src/passkey-sign-in.ts"],"names":[],"mappings":";;;AAmDA,gDAqBC;AAvDD,qDAAkD;AAiBrC,QAAA,0BAA0B,GAAG,mCAAmC,CAAC;AAE9E,MAAM,GAAG,GAAG,KAAK,EAAE,MAA4B,EAAE,OAA8B,EAA0B,EAAE;IACzG,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CACtC,MAAkB,EAClB,OAAkD,EAAE;IAEpD,MAAM,IAAI,GAAG,CAAC,KAAoB,EAAE,EAAE,CACpC,MAAM,CAAC,IAAI,CAA0B,kCAA0B,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1G,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE5C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE;QAC9B,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB;KACnF,CAAC,CAAC;IACH,wEAAwE;IACxE,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Passkey-only sign-up: an account whose only credential is a passkey.
3
+ *
4
+ * The server binds the passkey to the sign-up ATTEMPT and creates the account
5
+ * only when the registration ceremony verifies, so a user who walks away midway
6
+ * leaves nothing behind. The flow:
7
+ *
8
+ * 1. {@link startPasskeySignUp} — POST /v1/client/sign_ups/passkey with the
9
+ * email (when the instance collects one), username and sign-up fields. The
10
+ * attempt comes back with a `poll_secret` this tab keeps.
11
+ * 2. When the instance requires a verified email the attempt is
12
+ * `needs_email_verification`: the usual code step (`advance` posts it to
13
+ * `attempt_verification`) or, in link mode, polling (`pollAttempt`).
14
+ * 3. Once {@link awaitingPasskey} is true, {@link registerSignUpPasskey} runs
15
+ * begin → navigator.credentials.create → finish and returns the completed
16
+ * flow with its one-time ticket for POST /v1/client/tickets/exchange.
17
+ */
18
+ import { type FapiClient, type FlowState } from './fapi';
19
+ import type { AttemptView } from './attempt';
20
+ import { type WebAuthnHost } from './passkey';
21
+ export interface PasskeySignUpInput {
22
+ /** Collected when the instance's `account.passkeySignUp.email` is not `off`. */
23
+ email?: string;
24
+ /** The username to claim, when the instance offers usernames. */
25
+ username?: string;
26
+ /** The instance's configured sign-up fields. */
27
+ fields?: Record<string, string>;
28
+ /** The legal-consent tick (required only when the instance opts in). */
29
+ consent?: boolean;
30
+ /** The sign-up captcha token, when the instance requires one. */
31
+ captchaToken?: string;
32
+ }
33
+ /** Start a passkey-only sign-up. No account exists until the passkey is registered. */
34
+ export declare function startPasskeySignUp(client: FapiClient, input: PasskeySignUpInput): Promise<FlowState>;
35
+ /** True when a passkey-only sign-up is waiting for its passkey to be created. */
36
+ export declare function awaitingPasskey(attempt: AttemptView | null | undefined): boolean;
37
+ /**
38
+ * Create the passkey and, with it, the account: begin → the browser ceremony →
39
+ * finish. Returns the flow completed (with its `ticket`), or the server's
40
+ * errors with the attempt kept so the user can try again. A cancelled browser
41
+ * prompt comes back as a `PASSKEY_CANCELLED` error, not a throw.
42
+ */
43
+ export declare function registerSignUpPasskey(client: FapiClient, state: FlowState, opts?: {
44
+ name?: string;
45
+ host?: WebAuthnHost;
46
+ }): Promise<FlowState>;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startPasskeySignUp = startPasskeySignUp;
4
+ exports.awaitingPasskey = awaitingPasskey;
5
+ exports.registerSignUpPasskey = registerSignUpPasskey;
6
+ /**
7
+ * Passkey-only sign-up: an account whose only credential is a passkey.
8
+ *
9
+ * The server binds the passkey to the sign-up ATTEMPT and creates the account
10
+ * only when the registration ceremony verifies, so a user who walks away midway
11
+ * leaves nothing behind. The flow:
12
+ *
13
+ * 1. {@link startPasskeySignUp} — POST /v1/client/sign_ups/passkey with the
14
+ * email (when the instance collects one), username and sign-up fields. The
15
+ * attempt comes back with a `poll_secret` this tab keeps.
16
+ * 2. When the instance requires a verified email the attempt is
17
+ * `needs_email_verification`: the usual code step (`advance` posts it to
18
+ * `attempt_verification`) or, in link mode, polling (`pollAttempt`).
19
+ * 3. Once {@link awaitingPasskey} is true, {@link registerSignUpPasskey} runs
20
+ * begin → navigator.credentials.create → finish and returns the completed
21
+ * flow with its one-time ticket for POST /v1/client/tickets/exchange.
22
+ */
23
+ const fapi_1 = require("./fapi");
24
+ const passkey_1 = require("./passkey");
25
+ /** Start a passkey-only sign-up. No account exists until the passkey is registered. */
26
+ async function startPasskeySignUp(client, input) {
27
+ const hasFields = input.fields && Object.keys(input.fields).length > 0;
28
+ const response = await client.post('/v1/client/sign_ups/passkey', {
29
+ ...(input.email ? { email: input.email } : {}),
30
+ ...(input.username ? { username: input.username } : {}),
31
+ ...(hasFields ? { fields: input.fields } : {}),
32
+ ...(input.consent ? { consent: true } : {}),
33
+ ...(input.captchaToken ? { captcha_token: input.captchaToken } : {}),
34
+ });
35
+ if (!response.ok || !response.data)
36
+ return { ...fapi_1.initialFlow, errors: response.errors };
37
+ return {
38
+ ...fapi_1.initialFlow,
39
+ attempt: response.data,
40
+ // Kept in memory only: the passkey steps (and link-mode polling) need it.
41
+ pollSecret: response.data.poll_secret ?? null,
42
+ };
43
+ }
44
+ /** True when a passkey-only sign-up is waiting for its passkey to be created. */
45
+ function awaitingPasskey(attempt) {
46
+ return (!!attempt &&
47
+ attempt.object === 'sign_up_attempt' &&
48
+ attempt.status === 'needs_first_factor' &&
49
+ (attempt.supported_first_factors ?? []).includes('passkey'));
50
+ }
51
+ /**
52
+ * Create the passkey and, with it, the account: begin → the browser ceremony →
53
+ * finish. Returns the flow completed (with its `ticket`), or the server's
54
+ * errors with the attempt kept so the user can try again. A cancelled browser
55
+ * prompt comes back as a `PASSKEY_CANCELLED` error, not a throw.
56
+ */
57
+ async function registerSignUpPasskey(client, state, opts = {}) {
58
+ const id = state.attempt?.id;
59
+ if (!id || !state.pollSecret) {
60
+ return { ...state, busy: false, errors: [{ code: 'INVALID_STATE', message: 'This sign-up cannot create a passkey.' }] };
61
+ }
62
+ const begin = await client.post(`/v1/client/sign_ups/${id}/passkey/begin`, {
63
+ poll_secret: state.pollSecret,
64
+ });
65
+ if (!begin.ok || !begin.data)
66
+ return { ...state, busy: false, errors: begin.errors };
67
+ let body;
68
+ try {
69
+ body = await (0, passkey_1.createPasskey)(begin.data, { host: opts.host, ...(opts.name ? { name: opts.name } : {}) });
70
+ }
71
+ catch (error) {
72
+ return {
73
+ ...state,
74
+ busy: false,
75
+ errors: [
76
+ {
77
+ code: 'PASSKEY_CANCELLED',
78
+ // The browser's own text varies by vendor; a prebuilt form shows its catalog's.
79
+ message: error instanceof Error && error.message ? error.message : 'The passkey was not created.',
80
+ },
81
+ ],
82
+ };
83
+ }
84
+ const finish = await client.post(`/v1/client/sign_ups/${id}/passkey/finish`, {
85
+ poll_secret: state.pollSecret,
86
+ ...body,
87
+ });
88
+ if (!finish.ok || !finish.data)
89
+ return { ...state, busy: false, errors: finish.errors };
90
+ return {
91
+ ...state,
92
+ attempt: finish.data,
93
+ errors: [],
94
+ busy: false,
95
+ ticket: finish.data.ticket ?? null,
96
+ };
97
+ }
98
+ //# sourceMappingURL=passkey-sign-up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey-sign-up.js","sourceRoot":"","sources":["../src/passkey-sign-up.ts"],"names":[],"mappings":"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"}