UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

1 lines 4.59 kB
{"version":3,"file":"deriveState.mjs","names":[],"sources":["../src/deriveState.ts"],"sourcesContent":["import type {\n InitialState,\n JwtPayload,\n OrganizationCustomPermissionKey,\n OrganizationCustomRoleKey,\n OrganizationResource,\n Resources,\n SignedInSessionResource,\n UserResource,\n} from './types';\n\n// We use the ReturnType of deriveFromSsrInitialState, which in turn uses the ReturnType of deriveFromClientSideState,\n// to ensure these stay in sync without having to manually type them out.\nexport type DeriveStateReturnType = ReturnType<typeof deriveFromSsrInitialState>;\n\n/**\n * Derives authentication state based on the current rendering context (SSR or client-side).\n */\nexport const deriveState = (\n clerkOperational: boolean,\n state: Resources,\n initialState: InitialState | undefined,\n): DeriveStateReturnType => {\n if (!clerkOperational && initialState) {\n return deriveFromSsrInitialState(initialState);\n }\n return deriveFromClientSideState(state);\n};\n\n// We use the ReturnType of deriveFromClientSideState to ensure these stay in sync\nexport const deriveFromSsrInitialState = (initialState: InitialState): ReturnType<typeof deriveFromClientSideState> => {\n const userId = initialState.userId;\n const user = initialState.user as UserResource;\n const sessionId = initialState.sessionId;\n const sessionStatus = initialState.sessionStatus;\n const sessionClaims = initialState.sessionClaims;\n const session = initialState.session as SignedInSessionResource;\n const organization = initialState.organization as OrganizationResource;\n const orgId = initialState.orgId;\n const orgRole = initialState.orgRole as OrganizationCustomRoleKey;\n const orgPermissions = initialState.orgPermissions as OrganizationCustomPermissionKey[];\n const orgSlug = initialState.orgSlug;\n const actor = initialState.actor;\n const factorVerificationAge = initialState.factorVerificationAge;\n\n return {\n userId,\n user,\n sessionId,\n session,\n sessionStatus,\n sessionClaims,\n organization,\n orgId,\n orgRole,\n orgPermissions,\n orgSlug,\n actor,\n factorVerificationAge,\n };\n};\n\nexport const deriveFromClientSideState = (state: Resources) => {\n const userId: string | null | undefined = state.user ? state.user.id : state.user;\n const user = state.user;\n const sessionId: string | null | undefined = state.session ? state.session.id : state.session;\n const session = state.session;\n const sessionStatus = state.session?.status;\n const sessionClaims: JwtPayload | null | undefined = state.session\n ? state.session.lastActiveToken?.jwt?.claims\n : null;\n const factorVerificationAge: [number, number] | null = state.session ? state.session.factorVerificationAge : null;\n const actor = session?.actor;\n const organization = state.organization;\n const orgId: string | null | undefined = state.organization ? state.organization.id : state.organization;\n const orgSlug = organization?.slug;\n const membership = organization\n ? user?.organizationMemberships?.find(om => om.organization.id === orgId)\n : organization;\n const orgPermissions = membership ? membership.permissions : membership;\n const orgRole = membership ? membership.role : membership;\n\n return {\n userId,\n user,\n sessionId,\n session,\n sessionStatus,\n sessionClaims,\n organization,\n orgId,\n orgRole,\n orgSlug,\n orgPermissions,\n actor,\n factorVerificationAge,\n };\n};\n"],"mappings":";;;;AAkBA,MAAa,eACX,kBACA,OACA,iBAC0B;CAC1B,IAAI,CAAC,oBAAoB,cACvB,OAAO,0BAA0B,YAAY;CAE/C,OAAO,0BAA0B,KAAK;AACxC;AAGA,MAAa,6BAA6B,iBAA6E;CACrH,MAAM,SAAS,aAAa;CAC5B,MAAM,OAAO,aAAa;CAC1B,MAAM,YAAY,aAAa;CAC/B,MAAM,gBAAgB,aAAa;CACnC,MAAM,gBAAgB,aAAa;CAUnC,OAAO;EACL;EACA;EACA;EACA,SAbc,aAAa;EAc3B;EACA;EACA,cAfmB,aAAa;EAgBhC,OAfY,aAAa;EAgBzB,SAfc,aAAa;EAgB3B,gBAfqB,aAAa;EAgBlC,SAfc,aAAa;EAgB3B,OAfY,aAAa;EAgBzB,uBAf4B,aAAa;CAgB3C;AACF;AAEA,MAAa,6BAA6B,UAAqB;CAC7D,MAAM,SAAoC,MAAM,OAAO,MAAM,KAAK,KAAK,MAAM;CAC7E,MAAM,OAAO,MAAM;CACnB,MAAM,YAAuC,MAAM,UAAU,MAAM,QAAQ,KAAK,MAAM;CACtF,MAAM,UAAU,MAAM;CACtB,MAAM,gBAAgB,MAAM,SAAS;CACrC,MAAM,gBAA+C,MAAM,UACvD,MAAM,QAAQ,iBAAiB,KAAK,SACpC;CACJ,MAAM,wBAAiD,MAAM,UAAU,MAAM,QAAQ,wBAAwB;CAC7G,MAAM,QAAQ,SAAS;CACvB,MAAM,eAAe,MAAM;CAC3B,MAAM,QAAmC,MAAM,eAAe,MAAM,aAAa,KAAK,MAAM;CAC5F,MAAM,UAAU,cAAc;CAC9B,MAAM,aAAa,eACf,MAAM,yBAAyB,MAAK,OAAM,GAAG,aAAa,OAAO,KAAK,IACtE;CACJ,MAAM,iBAAiB,aAAa,WAAW,cAAc;CAG7D,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAXc,aAAa,WAAW,OAAO;EAY7C;EACA;EACA;EACA;CACF;AACF"}