@finueva/auth 0.18.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as AuthError, A as OrganizationTeamPage, B as ReceivedOrganizationInvitation, C as OrganizationMemberAuthority, D as OrganizationTeam, E as OrganizationPageInput, J as SocialIdTokenProvider, M as PersonalWorkspaceSelection, O as OrganizationTeamDisplay, Q as WorkspaceSelection, S as OrganizationMember, T as OrganizationPage, U as RemovedOrganizationMember, V as ReceivedOrganizationInvitationPage, W as ResentOrganizationInvitation, X as UpdateOrganizationTeamDisplayInput, Y as UpdateOrganizationDisplayInput, _ as InvitationAcceptance, b as OrganizationInvitation, c as AuthUser, d as CreatedOrganization, et as AuthErrorCode, f as CreatedOrganizationMemberInvitation, h as DriveCredentialInput, j as OrganizationWorkspaceSelection, k as OrganizationTeamMemberPage, l as CanceledOrganizationInvitation, m as DriveCredential, nt as UserApiCredential, o as AuthSession, p as CreatedOrganizationTeam, q as SocialIdTokenInput, r as AuthOrganization, rt as UserApiCredentialInput, t as AcceptInvitationInput, tt as AuthErrorStatus, u as CreateOrganizationMemberInvitationInput, v as OrganizationDeparture, w as OrganizationMemberPage, x as OrganizationInvitationPage, y as OrganizationDisplay } from "./types-CrdIcEJ3.js";
1
+ import { At as AuthError, B as OrganizationMember, C as DeclineInvitationInput, D as DriveCredential, Dt as UpdateOrganizationTeamDisplayInput, Et as UpdateOrganizationDisplayInput, G as OrganizationTeam, H as OrganizationMemberPage, I as OrganizationDeparture, J as OrganizationTeamPage, K as OrganizationTeamDisplay, L as OrganizationDisplay, M as InvitationDecline, Mt as AuthErrorStatus, Nt as UserApiCredential, O as DriveCredentialInput, Pt as UserApiCredentialInput, Q as PersonalWorkspaceSelection, R as OrganizationInvitation, S as CreatedOrganizationTeam, U as OrganizationPage, V as OrganizationMemberAuthority, W as OrganizationPageInput, Y as OrganizationWorkspaceSelection, b as CreatedOrganization, d as AuthUser, dt as ResentOrganizationInvitation, f as CanceledOrganizationInvitation, i as AuthOrganization, j as InvitationAcceptance, jt as AuthErrorCode, kt as WorkspaceSelection, lt as RemovedOrganizationMember, n as AddedOrganizationTeamMember, ot as ReceivedOrganizationInvitation, q as OrganizationTeamMemberPage, s as AuthSession, st as ReceivedOrganizationInvitationPage, t as AcceptInvitationInput, ut as RemovedOrganizationTeamMember, vt as SocialIdTokenInput, w as DeletedOrganizationTeam, x as CreatedOrganizationMemberInvitation, y as CreateOrganizationMemberInvitationInput, yt as SocialIdTokenProvider, z as OrganizationInvitationPage } from "./types-BEgD_Js1.js";
2
2
  //#region src/user-api/verifier.d.ts
3
3
  interface UserApiIdentity {
4
4
  userId: string;
@@ -125,6 +125,7 @@ interface ServerSocialIdTokenSession extends AuthSession {
125
125
  }
126
126
  interface FinuevaServerAuth {
127
127
  acceptInvitation(input: AcceptInvitationInput): Promise<ServerInvitationAcceptance>;
128
+ declineInvitation(input: DeclineInvitationInput): Promise<InvitationDecline>;
128
129
  getSession(): Promise<AuthSession | null>;
129
130
  listOrganizations(input?: OrganizationPageInput): Promise<OrganizationPage>;
130
131
  getOrganization(organizationId: string): Promise<AuthOrganization>;
@@ -136,6 +137,9 @@ interface FinuevaServerAuth {
136
137
  cancelOrganizationInvitation(organizationId: string, invitationId: string, idempotencyKey: string): Promise<CanceledOrganizationInvitation>;
137
138
  removeOrganizationMember(organizationId: string, memberId: string, idempotencyKey: string): Promise<RemovedOrganizationMember>;
138
139
  leaveOrganization(organizationId: string, idempotencyKey: string): Promise<OrganizationDeparture>;
140
+ addOrganizationTeamMember(organizationId: string, teamId: string, memberId: string, idempotencyKey: string): Promise<AddedOrganizationTeamMember>;
141
+ removeOrganizationTeamMember(organizationId: string, teamId: string, memberId: string, idempotencyKey: string): Promise<RemovedOrganizationTeamMember>;
142
+ deleteOrganizationTeam(organizationId: string, teamId: string, idempotencyKey: string): Promise<DeletedOrganizationTeam>;
139
143
  updateOrganizationDisplay(organizationId: string, input: UpdateOrganizationDisplayInput): Promise<OrganizationDisplay>;
140
144
  updateOrganizationTeamDisplay(organizationId: string, teamId: string, input: UpdateOrganizationTeamDisplayInput): Promise<OrganizationTeamDisplay>;
141
145
  listOrganizationMembers(organizationId: string, input?: OrganizationPageInput): Promise<OrganizationMemberPage>;
@@ -152,4 +156,4 @@ interface FinuevaServerAuth {
152
156
  }
153
157
  declare function createServerAuth(options: ServerAuthOptions): FinuevaServerAuth;
154
158
  //#endregion
155
- export { type AcceptInvitationInput, AuthError, type AuthErrorCode, type AuthErrorStatus, type AuthOrganization, type AuthSession, type AuthUser, type CanceledOrganizationInvitation, type CreateOrganizationMemberInvitationInput, type CreatedOrganization, type CreatedOrganizationMemberInvitation, type CreatedOrganizationTeam, type DriveCredential, type DriveCredentialInput, type DriveProvisioningAuthOptions, type DriveProvisioningCredential, type DriveRecipient, type DriveRecipientAuthOptions, type FinuevaDriveProvisioningAuth, type FinuevaDriveRecipientAuth, type FinuevaIdentityResolverAuth, type FinuevaMembershipResolverAuth, FinuevaServerAuth, type IdentityResolverAuthOptions, type InvitationAcceptance, type MembershipResolverAuthOptions, type OrganizationDeparture, type OrganizationDisplay, type OrganizationInvitation, type OrganizationInvitationPage, type OrganizationMember, type OrganizationMemberAuthority, type OrganizationMemberPage, type OrganizationPage, type OrganizationPageInput, type OrganizationTeam, type OrganizationTeamDisplay, type OrganizationTeamMemberPage, type OrganizationTeamPage, type OrganizationWorkspaceSelection, type PersonalWorkspaceSelection, type ReceivedOrganizationInvitation, type ReceivedOrganizationInvitationPage, type RemovedOrganizationMember, type ResentOrganizationInvitation, type ResolveDriveRecipientInput, type ResolveIdentityInput, type ResolveMembershipInput, type ResolvedIdentity, type ResolvedMembership, type ResolvedMembershipRole, ServerAuthOptions, ServerInvitationAcceptance, ServerSignOutResult, ServerSocialIdTokenSession, type SocialIdTokenInput, type SocialIdTokenProvider, type UpdateOrganizationDisplayInput, type UpdateOrganizationTeamDisplayInput, type UserApiCredential, type UserApiCredentialInput, type UserApiIdentity, type UserApiVerifierOptions, type WorkspaceSelection, createDriveProvisioningAuth, createDriveRecipientAuth, createIdentityResolverAuth, createMembershipResolverAuth, createServerAuth, createUserApiVerifier };
159
+ export { type AcceptInvitationInput, type AddedOrganizationTeamMember, AuthError, type AuthErrorCode, type AuthErrorStatus, type AuthOrganization, type AuthSession, type AuthUser, type CanceledOrganizationInvitation, type CreateOrganizationMemberInvitationInput, type CreatedOrganization, type CreatedOrganizationMemberInvitation, type CreatedOrganizationTeam, type DeclineInvitationInput, type DeletedOrganizationTeam, type DriveCredential, type DriveCredentialInput, type DriveProvisioningAuthOptions, type DriveProvisioningCredential, type DriveRecipient, type DriveRecipientAuthOptions, type FinuevaDriveProvisioningAuth, type FinuevaDriveRecipientAuth, type FinuevaIdentityResolverAuth, type FinuevaMembershipResolverAuth, FinuevaServerAuth, type IdentityResolverAuthOptions, type InvitationAcceptance, type InvitationDecline, type MembershipResolverAuthOptions, type OrganizationDeparture, type OrganizationDisplay, type OrganizationInvitation, type OrganizationInvitationPage, type OrganizationMember, type OrganizationMemberAuthority, type OrganizationMemberPage, type OrganizationPage, type OrganizationPageInput, type OrganizationTeam, type OrganizationTeamDisplay, type OrganizationTeamMemberPage, type OrganizationTeamPage, type OrganizationWorkspaceSelection, type PersonalWorkspaceSelection, type ReceivedOrganizationInvitation, type ReceivedOrganizationInvitationPage, type RemovedOrganizationMember, type RemovedOrganizationTeamMember, type ResentOrganizationInvitation, type ResolveDriveRecipientInput, type ResolveIdentityInput, type ResolveMembershipInput, type ResolvedIdentity, type ResolvedMembership, type ResolvedMembershipRole, ServerAuthOptions, ServerInvitationAcceptance, ServerSignOutResult, ServerSocialIdTokenSession, type SocialIdTokenInput, type SocialIdTokenProvider, type UpdateOrganizationDisplayInput, type UpdateOrganizationTeamDisplayInput, type UserApiCredential, type UserApiCredentialInput, type UserApiIdentity, type UserApiVerifierOptions, type WorkspaceSelection, createDriveProvisioningAuth, createDriveRecipientAuth, createIdentityResolverAuth, createMembershipResolverAuth, createServerAuth, createUserApiVerifier };
package/dist/server.js CHANGED
@@ -198,7 +198,18 @@ const messages = {
198
198
  platform_target_unavailable: "The platform administration target is unavailable.",
199
199
  platform_quorum_unavailable: "Platform administration quorum is unavailable.",
200
200
  platform_recovery_required: "Platform administration requires separate recovery.",
201
- identity_authority_unavailable: "Authentication is temporarily unavailable."
201
+ identity_authority_unavailable: "Authentication is temporarily unavailable.",
202
+ two_factor_required: "A second authentication factor is required.",
203
+ two_factor_code_invalid: "The verification code is invalid.",
204
+ two_factor_challenge_expired: "The second-factor challenge has ended. Sign in again.",
205
+ two_factor_locked: "Second-factor verification is temporarily locked.",
206
+ recent_sign_in_required: "A recent sign-in is required.",
207
+ enterprise_recovery_required: "Enterprise administration evidence requires operator recovery.",
208
+ recent_authentication_required: "A ready recent-authentication action is required.",
209
+ organization_closure_confirmation_mismatch: "The confirmation does not match the organization.",
210
+ organization_closure_cancellation_ended: "The closure cancellation period has ended.",
211
+ ceremony_return_refused: "The return address is not registered for this application.",
212
+ password_sign_in_required: "A password sign-in method is required for this passkey change."
202
213
  };
203
214
  var AuthError = class extends Error {
204
215
  code;
@@ -462,6 +473,25 @@ function normalizeOrganizationDeparture(value) {
462
473
  if (value.status !== "left") throw authorityUnavailable();
463
474
  return { status: "left" };
464
475
  }
476
+ function normalizeOrganizationTeamMembershipInput(idempotencyKey) {
477
+ if (!boundedString(idempotencyKey, 255)) throw new AuthError("invalid_request", 400);
478
+ return { idempotencyKey };
479
+ }
480
+ function normalizeAddedOrganizationTeamMember(value) {
481
+ exact$3(value, ["status"]);
482
+ if (value.status !== "added") throw authorityUnavailable();
483
+ return { status: "added" };
484
+ }
485
+ function normalizeRemovedOrganizationTeamMember(value) {
486
+ exact$3(value, ["status"]);
487
+ if (value.status !== "removed") throw authorityUnavailable();
488
+ return { status: "removed" };
489
+ }
490
+ function normalizeDeletedOrganizationTeam(value) {
491
+ exact$3(value, ["status"]);
492
+ if (value.status !== "deleted") throw authorityUnavailable();
493
+ return { status: "deleted" };
494
+ }
465
495
  function normalizeOrganizations(value) {
466
496
  exact$3(value, ["nextCursor", "organizations"]);
467
497
  if (!Array.isArray(value.organizations) || value.organizations.length > 100) throw authorityUnavailable();
@@ -623,6 +653,10 @@ function normalizeInvitationAcceptance(value, invitationId) {
623
653
  if (!isObject$1(value) || !isObject$1(value.invitation) || !isObject$1(value.member) || value.invitation.id !== invitationId || value.invitation.status !== "accepted" || !isId(value.invitation.organizationId) || value.member.organizationId !== value.invitation.organizationId) throw authorityUnavailable();
624
654
  return { organizationId: value.invitation.organizationId };
625
655
  }
656
+ function normalizeInvitationDecline(value, invitationId) {
657
+ if (!isObject$1(value) || !isObject$1(value.invitation) || value.invitation.id !== invitationId || value.invitation.status !== "rejected" || value.member !== null) throw authorityUnavailable();
658
+ return { status: "declined" };
659
+ }
626
660
  function normalizeWorkspaceSelection(value) {
627
661
  if (!isObject$1(value)) throw new AuthError("invalid_workspace_selection", 422);
628
662
  const keys = Object.keys(value);
@@ -2907,6 +2941,23 @@ function createServerAuth(options) {
2907
2941
  ...authorization ? { authorization } : { cookie },
2908
2942
  ...includeOrigin ? { origin: appOrigin } : {}
2909
2943
  });
2944
+ async function teamMembershipMutation(ids, idempotencyKey, action) {
2945
+ if (authorization) throw new AuthError("authentication_required", 401);
2946
+ const [organization, team, member] = ids.map(normalizeIdInput);
2947
+ const body = normalizeOrganizationTeamMembershipInput(idempotencyKey);
2948
+ return requestJson(action === "delete" ? joinURL(authOrigin, "api/v1/auth/organizations", organization, "teams", team, "delete") : joinURL(authOrigin, "api/v1/auth/organizations", organization, "teams", team, "members", member, action), {
2949
+ fetch: fetchImpl,
2950
+ timeoutMs,
2951
+ method: "POST",
2952
+ credentials,
2953
+ headers: {
2954
+ ...authHeaders(),
2955
+ "content-type": "application/json"
2956
+ },
2957
+ body,
2958
+ mapError: fromOrganizationMutationAuthorityError
2959
+ });
2960
+ }
2910
2961
  async function organizationRead(path, input, normalize) {
2911
2962
  const query = normalizeOrganizationPageInput(input);
2912
2963
  return normalize(await requestJson(`${joinURL(authOrigin, "api/v1/auth/organizations", path)}${query.size ? `?${query}` : ""}`, {
@@ -2947,6 +2998,25 @@ function createServerAuth(options) {
2947
2998
  throw fromInvitationError(error);
2948
2999
  }
2949
3000
  },
3001
+ async declineInvitation(input) {
3002
+ const invitation = normalizeInvitationInput(input);
3003
+ try {
3004
+ return normalizeInvitationDecline(await requestJson(joinURL(authOrigin, "api/v1/auth/organization/reject-invitation"), {
3005
+ fetch: fetchImpl,
3006
+ timeoutMs,
3007
+ method: "POST",
3008
+ credentials,
3009
+ headers: {
3010
+ ...authHeaders(),
3011
+ "content-type": "application/json; charset=utf-8"
3012
+ },
3013
+ body: invitation,
3014
+ mapError: fromInvitationAuthorityError
3015
+ }), invitation.invitationId);
3016
+ } catch (error) {
3017
+ throw fromInvitationError(error);
3018
+ }
3019
+ },
2950
3020
  async getSession() {
2951
3021
  return normalizeSession(await requestJson(joinURL(authOrigin, "api/v1/auth/get-session"), {
2952
3022
  fetch: fetchImpl,
@@ -3089,6 +3159,23 @@ function createServerAuth(options) {
3089
3159
  mapError: fromOrganizationMembershipRemovalError
3090
3160
  }));
3091
3161
  },
3162
+ async addOrganizationTeamMember(organizationId, teamId, memberId, idempotencyKey) {
3163
+ return normalizeAddedOrganizationTeamMember(await teamMembershipMutation([
3164
+ organizationId,
3165
+ teamId,
3166
+ memberId
3167
+ ], idempotencyKey, "add"));
3168
+ },
3169
+ async removeOrganizationTeamMember(organizationId, teamId, memberId, idempotencyKey) {
3170
+ return normalizeRemovedOrganizationTeamMember(await teamMembershipMutation([
3171
+ organizationId,
3172
+ teamId,
3173
+ memberId
3174
+ ], idempotencyKey, "remove"));
3175
+ },
3176
+ async deleteOrganizationTeam(organizationId, teamId, idempotencyKey) {
3177
+ return normalizeDeletedOrganizationTeam(await teamMembershipMutation([organizationId, teamId], idempotencyKey, "delete"));
3178
+ },
3092
3179
  async updateOrganizationDisplay(organizationId, input) {
3093
3180
  const id = normalizeIdInput(organizationId);
3094
3181
  const desired = normalizeOrganizationDisplayInput(input);