@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
68 lines (66 loc) • 2.35 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#region src/deriveState.ts
/**
* Derives authentication state based on the current rendering context (SSR or client-side).
*/
const deriveState = (clerkOperational, state, initialState) => {
if (!clerkOperational && initialState) return deriveFromSsrInitialState(initialState);
return deriveFromClientSideState(state);
};
const deriveFromSsrInitialState = (initialState) => {
const userId = initialState.userId;
const user = initialState.user;
const sessionId = initialState.sessionId;
const sessionStatus = initialState.sessionStatus;
const sessionClaims = initialState.sessionClaims;
return {
userId,
user,
sessionId,
session: initialState.session,
sessionStatus,
sessionClaims,
organization: initialState.organization,
orgId: initialState.orgId,
orgRole: initialState.orgRole,
orgPermissions: initialState.orgPermissions,
orgSlug: initialState.orgSlug,
actor: initialState.actor,
factorVerificationAge: initialState.factorVerificationAge
};
};
const deriveFromClientSideState = (state) => {
const userId = state.user ? state.user.id : state.user;
const user = state.user;
const sessionId = state.session ? state.session.id : state.session;
const session = state.session;
const sessionStatus = state.session?.status;
const sessionClaims = state.session ? state.session.lastActiveToken?.jwt?.claims : null;
const factorVerificationAge = state.session ? state.session.factorVerificationAge : null;
const actor = session?.actor;
const organization = state.organization;
const orgId = state.organization ? state.organization.id : state.organization;
const orgSlug = organization?.slug;
const membership = organization ? user?.organizationMemberships?.find((om) => om.organization.id === orgId) : organization;
const orgPermissions = membership ? membership.permissions : membership;
return {
userId,
user,
sessionId,
session,
sessionStatus,
sessionClaims,
organization,
orgId,
orgRole: membership ? membership.role : membership,
orgSlug,
orgPermissions,
actor,
factorVerificationAge
};
};
//#endregion
exports.deriveFromClientSideState = deriveFromClientSideState;
exports.deriveFromSsrInitialState = deriveFromSsrInitialState;
exports.deriveState = deriveState;
//# sourceMappingURL=deriveState.js.map