@@ -18,14 +18,11 @@ import {
1818 loginWithRedirect as rawLoginWithRedirect ,
1919 logoutWithRedirect as rawLogoutWithRedirect ,
2020} from '@imtbl/auth' ;
21- import {
22- deriveDefaultClientId ,
23- deriveDefaultRedirectUri ,
24- } from '@imtbl/auth-next-server' ;
21+ import { deriveDefaultRedirectUri } from './defaultConfig' ;
2522import {
2623 IMMUTABLE_PROVIDER_ID ,
2724 TOKEN_EXPIRY_BUFFER_MS ,
28- DEFAULT_POPUP_REDIRECT_URI_PATH ,
25+ DEFAULT_SANDBOX_CLIENT_ID ,
2926 DEFAULT_LOGOUT_REDIRECT_URI_PATH ,
3027 DEFAULT_AUTH_DOMAIN ,
3128 DEFAULT_SCOPE ,
@@ -55,69 +52,29 @@ function deduplicatedUpdate(
5552}
5653
5754// ---------------------------------------------------------------------------
58- // Default configuration helpers (extend shared logic from auth-next-server )
55+ // Sandbox defaults for zero-config (no config or full config - no merge )
5956// ---------------------------------------------------------------------------
6057
61- /**
62- * Derive the default popupRedirectUri based on the current URL.
63- *
64- * @returns Default popup redirect URI
65- * @internal
66- */
67- function deriveDefaultPopupRedirectUri ( ) : string {
68- if ( typeof window === 'undefined' ) {
69- return DEFAULT_POPUP_REDIRECT_URI_PATH ;
70- }
71-
72- return `${ window . location . origin } ${ DEFAULT_POPUP_REDIRECT_URI_PATH } ` ;
73- }
74-
75- /**
76- * Derive the default logoutRedirectUri based on the current URL.
77- *
78- * @returns Default logout redirect URI
79- * @internal
80- */
81- function deriveDefaultLogoutRedirectUri ( ) : string {
82- if ( typeof window === 'undefined' ) {
83- return DEFAULT_LOGOUT_REDIRECT_URI_PATH ;
84- }
85-
86- return window . location . origin + DEFAULT_LOGOUT_REDIRECT_URI_PATH ;
87- }
88-
89- /**
90- * Create a complete LoginConfig with default values.
91- * All fields are optional and will be auto-derived if not provided.
92- *
93- * @param config - Optional login configuration (when provided, must be complete)
94- * @returns Complete LoginConfig with defaults applied
95- * @internal
96- */
97- function createDefaultLoginConfig ( config ?: LoginConfig ) : LoginConfig {
58+ function getSandboxLoginConfig ( ) : LoginConfig {
59+ const redirectUri = deriveDefaultRedirectUri ( ) ;
9860 return {
99- clientId : config ?. clientId || deriveDefaultClientId ( ) ,
100- redirectUri : config ?. redirectUri || deriveDefaultRedirectUri ( ) ,
101- popupRedirectUri : config ?. popupRedirectUri || deriveDefaultPopupRedirectUri ( ) ,
102- scope : config ?. scope || DEFAULT_SCOPE ,
103- audience : config ?. audience || DEFAULT_AUDIENCE ,
104- authenticationDomain : config ?. authenticationDomain || DEFAULT_AUTH_DOMAIN ,
61+ clientId : DEFAULT_SANDBOX_CLIENT_ID ,
62+ redirectUri,
63+ popupRedirectUri : redirectUri ,
64+ scope : DEFAULT_SCOPE ,
65+ audience : DEFAULT_AUDIENCE ,
66+ authenticationDomain : DEFAULT_AUTH_DOMAIN ,
10567 } ;
10668}
10769
108- /**
109- * Create a complete LogoutConfig with default values.
110- * All fields are optional and will be auto-derived if not provided.
111- *
112- * @param config - Optional logout configuration (when provided, must be complete)
113- * @returns Complete LogoutConfig with defaults applied
114- * @internal
115- */
116- function createDefaultLogoutConfig ( config ?: LogoutConfig ) : LogoutConfig {
70+ function getSandboxLogoutConfig ( ) : LogoutConfig {
71+ const logoutRedirectUri = typeof window === 'undefined'
72+ ? DEFAULT_LOGOUT_REDIRECT_URI_PATH
73+ : window . location . origin + DEFAULT_LOGOUT_REDIRECT_URI_PATH ;
11774 return {
118- clientId : config ?. clientId || deriveDefaultClientId ( ) ,
119- logoutRedirectUri : config ?. logoutRedirectUri || deriveDefaultLogoutRedirectUri ( ) ,
120- authenticationDomain : config ?. authenticationDomain || DEFAULT_AUTH_DOMAIN ,
75+ clientId : DEFAULT_SANDBOX_CLIENT_ID ,
76+ logoutRedirectUri,
77+ authenticationDomain : DEFAULT_AUTH_DOMAIN ,
12178 } ;
12279}
12380
@@ -557,7 +514,7 @@ export function useLogin(): UseLoginReturn {
557514 setError ( null ) ;
558515
559516 try {
560- const fullConfig = createDefaultLoginConfig ( config ) ;
517+ const fullConfig = config ?? getSandboxLoginConfig ( ) ;
561518 const tokens = await rawLoginWithPopup ( fullConfig , options ) ;
562519 await signInWithTokens ( tokens ) ;
563520 } catch ( err ) {
@@ -579,7 +536,7 @@ export function useLogin(): UseLoginReturn {
579536 setError ( null ) ;
580537
581538 try {
582- const fullConfig = createDefaultLoginConfig ( config ) ;
539+ const fullConfig = config ?? getSandboxLoginConfig ( ) ;
583540 const tokens = await rawLoginWithEmbedded ( fullConfig ) ;
584541 await signInWithTokens ( tokens ) ;
585542 } catch ( err ) {
@@ -606,7 +563,7 @@ export function useLogin(): UseLoginReturn {
606563 setError ( null ) ;
607564
608565 try {
609- const fullConfig = createDefaultLoginConfig ( config ) ;
566+ const fullConfig = config ?? getSandboxLoginConfig ( ) ;
610567 await rawLoginWithRedirect ( fullConfig , options ) ;
611568 // Note: The page will redirect, so this code may not run
612569 } catch ( err ) {
@@ -739,7 +696,7 @@ export function useLogout(): UseLogoutReturn {
739696 await signOut ( { redirect : false } ) ;
740697
741698 // Create full config with defaults
742- const fullConfig = createDefaultLogoutConfig ( config ) ;
699+ const fullConfig = config ?? getSandboxLogoutConfig ( ) ;
743700
744701 // Redirect to the auth domain's logout endpoint using the standalone function
745702 // This clears the upstream session (Auth0/Immutable) so that on next login,
0 commit comments