1+ import type { RequestState } from '@clerk/backend/internal' ;
12import { constants , debugRequestState } from '@clerk/backend/internal' ;
23import { parse as parseCookie } from 'cookie' ;
34import type { AppLoadContext , UNSAFE_DataWithResponseInit } from 'react-router' ;
45
56import { getPublicEnvVariables } from '../utils/env' ;
67import { canUseKeyless } from '../utils/feature-flags' ;
7- import type { RequestStateWithRedirectUrls } from './types' ;
8+ import type { AdditionalStateOptions } from './types' ;
89
910export function isResponse ( value : any ) : value is Response {
1011 return (
@@ -51,14 +52,15 @@ export const IsOptIntoMiddleware = (context: AppLoadContext) => {
5152
5253export const injectRequestStateIntoResponse = async (
5354 response : Response ,
54- requestState : RequestStateWithRedirectUrls ,
55+ requestState : RequestState ,
5556 context : AppLoadContext ,
57+ additionalStateOptions : AdditionalStateOptions = { } ,
5658 includeClerkHeaders = false ,
5759) => {
5860 const clone = new Response ( response . body , response ) ;
5961 const data = await clone . json ( ) ;
6062
61- const { clerkState, headers } = getResponseClerkState ( requestState , context ) ;
63+ const { clerkState, headers } = getResponseClerkState ( requestState , context , additionalStateOptions ) ;
6264
6365 // set the correct content-type header in case the user returned a `Response` directly
6466 clone . headers . set ( constants . Headers . ContentType , constants . ContentTypes . Json ) ;
@@ -78,9 +80,14 @@ export const injectRequestStateIntoResponse = async (
7880 *
7981 * @internal
8082 */
81- export function getResponseClerkState ( requestState : RequestStateWithRedirectUrls , context : AppLoadContext ) {
82- const { reason, message, isSignedIn, __keylessClaimUrl, __keylessApiKeysUrl, ...rest } = requestState ;
83+ export function getResponseClerkState (
84+ requestState : RequestState ,
85+ context : AppLoadContext ,
86+ additionalStateOptions : AdditionalStateOptions = { } ,
87+ ) {
88+ const { reason, message, isSignedIn, ...rest } = requestState ;
8389 const envVars = getPublicEnvVariables ( context ) ;
90+ const { __keylessClaimUrl, __keylessApiKeysUrl, ...redirectUrlOptions } = additionalStateOptions ;
8491
8592 const baseState : Record < string , unknown > = {
8693 __clerk_ssr_state : rest . toAuth ( ) ,
@@ -90,10 +97,10 @@ export function getResponseClerkState(requestState: RequestStateWithRedirectUrls
9097 __isSatellite : requestState . isSatellite ,
9198 __signInUrl : requestState . signInUrl ,
9299 __signUpUrl : requestState . signUpUrl ,
93- __signInForceRedirectUrl : requestState . signInForceRedirectUrl ,
94- __signUpForceRedirectUrl : requestState . signUpForceRedirectUrl ,
95- __signInFallbackRedirectUrl : requestState . signInFallbackRedirectUrl ,
96- __signUpFallbackRedirectUrl : requestState . signUpFallbackRedirectUrl ,
100+ __signInForceRedirectUrl : redirectUrlOptions . signInForceRedirectUrl ,
101+ __signUpForceRedirectUrl : redirectUrlOptions . signUpForceRedirectUrl ,
102+ __signInFallbackRedirectUrl : redirectUrlOptions . signInFallbackRedirectUrl ,
103+ __signUpFallbackRedirectUrl : redirectUrlOptions . signUpFallbackRedirectUrl ,
97104 __clerk_debug : debugRequestState ( requestState ) ,
98105 __clerkJSUrl : envVars . clerkJsUrl ,
99106 __clerkJSVersion : envVars . clerkJsVersion ,
0 commit comments