{"version":3,"file":"deriveState-CQUgOdaO.mjs","names":["userId: string | null | undefined","sessionId: string | null | undefined","sessionClaims: JwtPayload | null | undefined","factorVerificationAge: [number, number] | null","orgId: string | null | undefined"],"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;AAC1B,KAAI,CAAC,oBAAoB,aACvB,QAAO,0BAA0B,aAAa;AAEhD,QAAO,0BAA0B,MAAM;;AAIzC,MAAa,6BAA6B,iBAA6E;CACrH,MAAM,SAAS,aAAa;CAC5B,MAAM,OAAO,aAAa;CAC1B,MAAM,YAAY,aAAa;CAC/B,MAAM,gBAAgB,aAAa;CACnC,MAAM,gBAAgB,aAAa;AAUnC,QAAO;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;EAgB1C;;AAGH,MAAa,6BAA6B,UAAqB;CAC7D,MAAMA,SAAoC,MAAM,OAAO,MAAM,KAAK,KAAK,MAAM;CAC7E,MAAM,OAAO,MAAM;CACnB,MAAMC,YAAuC,MAAM,UAAU,MAAM,QAAQ,KAAK,MAAM;CACtF,MAAM,UAAU,MAAM;CACtB,MAAM,gBAAgB,MAAM,SAAS;CACrC,MAAMC,gBAA+C,MAAM,UACvD,MAAM,QAAQ,iBAAiB,KAAK,SACpC;CACJ,MAAMC,wBAAiD,MAAM,UAAU,MAAM,QAAQ,wBAAwB;CAC7G,MAAM,QAAQ,SAAS;CACvB,MAAM,eAAe,MAAM;CAC3B,MAAMC,QAAmC,MAAM,eAAe,MAAM,aAAa,KAAK,MAAM;CAC5F,MAAM,UAAU,cAAc;CAC9B,MAAM,aAAa,eACf,MAAM,yBAAyB,MAAK,OAAM,GAAG,aAAa,OAAO,MAAM,GACvE;CACJ,MAAM,iBAAiB,aAAa,WAAW,cAAc;AAG7D,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAXc,aAAa,WAAW,OAAO;EAY7C;EACA;EACA;EACA;EACD"}