1717 */
1818
1919import {
20+ AllOrganizationsApiResponse ,
2021 AsgardeoNodeClient ,
2122 AsgardeoRuntimeError ,
23+ AuthClientConfig ,
24+ CreateOrganizationPayload ,
25+ EmbeddedFlowExecuteRequestConfig ,
2226 EmbeddedFlowExecuteRequestPayload ,
2327 EmbeddedFlowExecuteResponse ,
28+ EmbeddedSignInFlowHandleRequestPayload ,
29+ ExtendedAuthorizeRequestUrlParams ,
30+ FlattenedSchema ,
31+ IdToken ,
2432 LegacyAsgardeoNodeClient ,
33+ Organization ,
34+ OrganizationDetails ,
35+ Schema ,
2536 SignInOptions ,
2637 SignOutOptions ,
2738 SignUpOptions ,
39+ Storage ,
40+ TokenExchangeRequestConfig ,
41+ TokenResponse ,
2842 User ,
2943 UserProfile ,
30- initializeEmbeddedSignInFlow ,
31- Organization ,
32- EmbeddedSignInFlowHandleRequestPayload ,
44+ createOrganization ,
45+ deriveOrganizationHandleFromBaseUrl ,
3346 executeEmbeddedSignInFlow ,
34- EmbeddedFlowExecuteRequestConfig ,
35- ExtendedAuthorizeRequestUrlParams ,
36- generateUserProfile ,
47+ executeEmbeddedSignUpFlow ,
48+ extractUserClaimsFromIdToken ,
3749 flattenUserSchema ,
38- getScim2Me ,
39- getSchemas ,
4050 generateFlattenedUserProfile ,
41- updateMeProfile ,
42- executeEmbeddedSignUpFlow ,
51+ generateUserProfile ,
52+ getAllOrganizations ,
4353 getMeOrganizations ,
44- IdToken ,
45- createOrganization ,
46- CreateOrganizationPayload ,
4754 getOrganization ,
48- OrganizationDetails ,
49- deriveOrganizationHandleFromBaseUrl ,
50- getAllOrganizations ,
51- AllOrganizationsApiResponse ,
52- extractUserClaimsFromIdToken ,
53- TokenResponse ,
54- Storage ,
55- TokenExchangeRequestConfig ,
55+ getScim2Me ,
56+ getSchemas ,
57+ initializeEmbeddedSignInFlow ,
58+ updateMeProfile ,
5659} from '@asgardeo/node' ;
5760import { AsgardeoNextConfig } from './models/config' ;
61+ import getClientOrigin from './server/actions/getClientOrigin' ;
5862import getSessionId from './server/actions/getSessionId' ;
5963import decorateConfigWithNextEnv from './utils/decorateConfigWithNextEnv' ;
60- import getClientOrigin from './server/actions/getClientOrigin' ;
6164
62- const removeTrailingSlash = ( path : string ) : string => ( path . endsWith ( '/' ) ? path . slice ( 0 , - 1 ) : path ) ;
6365/**
6466 * Client for mplementing Asgardeo in Next.js applications.
6567 * This class provides the core functionality for managing user authentication and sessions.
@@ -70,7 +72,9 @@ const removeTrailingSlash = (path: string): string => (path.endsWith('/') ? path
7072 */
7173class AsgardeoNextClient < T extends AsgardeoNextConfig = AsgardeoNextConfig > extends AsgardeoNodeClient < T > {
7274 private static instance : AsgardeoNextClient < any > ;
75+
7376 private asgardeo : LegacyAsgardeoNodeClient < T > ;
77+
7478 public isInitialized : boolean = false ;
7579
7680 private constructor ( ) {
@@ -130,15 +134,15 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
130134
131135 return this . asgardeo . initialize (
132136 {
133- organizationHandle : resolvedOrganizationHandle ,
137+ afterSignInUrl : afterSignInUrl ?? origin ,
138+ afterSignOutUrl : afterSignOutUrl ?? origin ,
134139 baseUrl,
135140 clientId,
136141 clientSecret,
142+ enablePKCE : false ,
143+ organizationHandle : resolvedOrganizationHandle ,
137144 signInUrl,
138145 signUpUrl,
139- afterSignInUrl : afterSignInUrl ?? origin ,
140- afterSignOutUrl : afterSignOutUrl ?? origin ,
141- enablePKCE : false ,
142146 ...rest ,
143147 } as any ,
144148 storage ,
@@ -169,17 +173,17 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
169173 const resolvedSessionId : string = userId || ( ( await getSessionId ( ) ) as string ) ;
170174
171175 try {
172- const configData = await this . asgardeo . getConfigData ( ) ;
173- const baseUrl = configData ?. baseUrl ;
176+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
177+ const baseUrl : string | undefined = configData ?. baseUrl ;
174178
175- const profile = await getScim2Me ( {
179+ const profile : User = await getScim2Me ( {
176180 baseUrl,
177181 headers : {
178182 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
179183 } ,
180184 } ) ;
181185
182- const schemas = await getSchemas ( {
186+ const schemas : Schema [ ] = await getSchemas ( {
183187 baseUrl,
184188 headers : {
185189 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
@@ -196,37 +200,37 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
196200 await this . ensureInitialized ( ) ;
197201
198202 try {
199- const configData = await this . asgardeo . getConfigData ( ) ;
200- const baseUrl = configData ?. baseUrl ;
203+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
204+ const baseUrl : string | undefined = configData ?. baseUrl ;
201205
202- const profile = await getScim2Me ( {
206+ const profile : User = await getScim2Me ( {
203207 baseUrl,
204208 headers : {
205209 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
206210 } ,
207211 } ) ;
208212
209- const schemas = await getSchemas ( {
213+ const schemas : Schema [ ] = await getSchemas ( {
210214 baseUrl,
211215 headers : {
212216 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
213217 } ,
214218 } ) ;
215219
216- const processedSchemas = flattenUserSchema ( schemas ) ;
220+ const processedSchemas : FlattenedSchema [ ] = flattenUserSchema ( schemas ) ;
217221
218- const output = {
219- schemas : processedSchemas ,
222+ const output : UserProfile = {
220223 flattenedProfile : generateFlattenedUserProfile ( profile , processedSchemas ) ,
221224 profile,
225+ schemas : processedSchemas ,
222226 } ;
223227
224228 return output ;
225229 } catch ( error ) {
226230 return {
227- schemas : [ ] ,
228231 flattenedProfile : extractUserClaimsFromIdToken ( await this . asgardeo . getDecodedIdToken ( userId ) ) ,
229232 profile : extractUserClaimsFromIdToken ( await this . asgardeo . getDecodedIdToken ( userId ) ) ,
233+ schemas : [ ] ,
230234 } ;
231235 }
232236 }
@@ -235,15 +239,15 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
235239 await this . ensureInitialized ( ) ;
236240
237241 try {
238- const configData = await this . asgardeo . getConfigData ( ) ;
239- const baseUrl = configData ?. baseUrl ;
242+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
243+ const baseUrl : string | undefined = configData ?. baseUrl ;
240244
241245 return await updateMeProfile ( {
242246 baseUrl,
243- payload,
244247 headers : {
245248 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
246249 } ,
250+ payload,
247251 } ) ;
248252 } catch ( error ) {
249253 throw new AsgardeoRuntimeError (
@@ -257,15 +261,15 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
257261
258262 async createOrganization ( payload : CreateOrganizationPayload , userId ?: string ) : Promise < Organization > {
259263 try {
260- const configData = await this . asgardeo . getConfigData ( ) ;
264+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
261265 const baseUrl : string = configData ?. baseUrl as string ;
262266
263267 return await createOrganization ( {
264- payload,
265268 baseUrl,
266269 headers : {
267270 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
268271 } ,
272+ payload,
269273 } ) ;
270274 } catch ( error ) {
271275 throw new AsgardeoRuntimeError (
@@ -279,15 +283,15 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
279283
280284 async getOrganization ( organizationId : string , userId ?: string ) : Promise < OrganizationDetails > {
281285 try {
282- const configData = await this . asgardeo . getConfigData ( ) ;
286+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
283287 const baseUrl : string = configData ?. baseUrl as string ;
284288
285289 return await getOrganization ( {
286290 baseUrl,
287- organizationId,
288291 headers : {
289292 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
290293 } ,
294+ organizationId,
291295 } ) ;
292296 } catch ( error ) {
293297 throw new AsgardeoRuntimeError (
@@ -301,7 +305,7 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
301305
302306 override async getMyOrganizations ( options ?: any , userId ?: string ) : Promise < Organization [ ] > {
303307 try {
304- const configData = await this . asgardeo . getConfigData ( ) ;
308+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
305309 const baseUrl : string = configData ?. baseUrl as string ;
306310
307311 return await getMeOrganizations ( {
@@ -324,10 +328,10 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
324328
325329 override async getAllOrganizations ( options ?: any , userId ?: string ) : Promise < AllOrganizationsApiResponse > {
326330 try {
327- const configData = await this . asgardeo . getConfigData ( ) ;
331+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
328332 const baseUrl : string = configData ?. baseUrl as string ;
329333
330- return getAllOrganizations ( {
334+ return await getAllOrganizations ( {
331335 baseUrl,
332336 headers : {
333337 Authorization : `Bearer ${ await this . getAccessToken ( userId ) } ` ,
@@ -347,17 +351,14 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
347351 const idToken : IdToken = await this . asgardeo . getDecodedIdToken ( userId ) ;
348352
349353 return {
350- orgHandle : idToken ?. org_handle as string ,
351- name : idToken ?. org_name as string ,
352354 id : idToken ?. org_id as string ,
355+ name : idToken ?. org_name as string ,
356+ orgHandle : idToken ?. org_handle as string ,
353357 } ;
354358 }
355359
356360 override async switchOrganization ( organization : Organization , userId ?: string ) : Promise < TokenResponse | Response > {
357361 try {
358- const configData = await this . asgardeo . getConfigData ( ) ;
359- const scopes = configData ?. scopes ;
360-
361362 if ( ! organization . id ) {
362363 throw new AsgardeoRuntimeError (
363364 'Organization ID is required for switching organizations' ,
@@ -367,7 +368,7 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
367368 ) ;
368369 }
369370
370- const exchangeConfig = {
371+ const exchangeConfig : TokenExchangeRequestConfig = {
371372 attachToken : false ,
372373 data : {
373374 client_id : '{{clientId}}' ,
@@ -393,6 +394,7 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
393394 }
394395 }
395396
397+ // eslint-disable-next-line class-methods-use-this
396398 override isLoading ( ) : boolean {
397399 return false ;
398400 }
@@ -409,9 +411,10 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
409411 * Gets the access token from the session cookie if no sessionId is provided,
410412 * otherwise falls back to legacy client method.
411413 */
412- async getAccessToken ( sessionId ?: string ) : Promise < string > {
414+ // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
415+ async getAccessToken ( _sessionId ?: string ) : Promise < string > {
413416 const { default : getAccessToken } = await import ( './server/actions/getAccessToken' ) ;
414- const token = await getAccessToken ( ) ;
417+ const token : string | undefined = await getAccessToken ( ) ;
415418
416419 if ( typeof token !== 'string' || ! token ) {
417420 throw new AsgardeoRuntimeError (
@@ -449,23 +452,23 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
449452 onSignInSuccess ?: ( afterSignInUrl : string ) => void ,
450453 ) : Promise < User > ;
451454 override async signIn ( ...args : any [ ] ) : Promise < User > {
452- const arg1 = args [ 0 ] ;
453- const arg2 = args [ 1 ] ;
454- const arg3 = args [ 2 ] ;
455- const arg4 = args [ 3 ] ;
455+ const arg1 : any = args [ 0 ] ;
456+ const arg2 : any = args [ 1 ] ;
457+ const arg3 : any = args [ 2 ] ;
458+ const arg4 : any = args [ 3 ] ;
456459
457460 if ( typeof arg1 === 'object' && 'flowId' in arg1 ) {
458461 if ( arg1 . flowId === '' ) {
459462 const defaultSignInUrl : URL = new URL (
460463 await this . getAuthorizeRequestUrl ( {
461- response_mode : 'direct' ,
462464 client_secret : '{{clientSecret}}' ,
465+ response_mode : 'direct' ,
463466 } ) ,
464467 ) ;
465468
466469 return initializeEmbeddedSignInFlow ( {
467- url : `${ defaultSignInUrl . origin } ${ defaultSignInUrl . pathname } ` ,
468470 payload : Object . fromEntries ( defaultSignInUrl . searchParams . entries ( ) ) ,
471+ url : `${ defaultSignInUrl . origin } ${ defaultSignInUrl . pathname } ` ,
469472 } ) ;
470473 }
471474
@@ -513,11 +516,11 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
513516 ) ;
514517 }
515518
516- const firstArg = args [ 0 ] ;
519+ const firstArg : any = args [ 0 ] ;
517520
518521 if ( typeof firstArg === 'object' && 'flowType' in firstArg ) {
519- const configData = await this . asgardeo . getConfigData ( ) ;
520- const baseUrl = configData ?. baseUrl ;
522+ const configData : AuthClientConfig < T > = await this . asgardeo . getConfigData ( ) ;
523+ const baseUrl : string | undefined = configData ?. baseUrl ;
521524
522525 return executeEmbeddedSignUpFlow ( {
523526 baseUrl,
@@ -532,7 +535,8 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
532535 ) ;
533536 }
534537
535- override signInSilently ( options ?: SignInOptions ) : Promise < User | boolean > {
538+ // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
539+ override signInSilently ( _options ?: SignInOptions ) : Promise < User | boolean > {
536540 throw new AsgardeoRuntimeError (
537541 'Not implemented' ,
538542 'AsgardeoNextClient-signInSilently-NotImplementedError-001' ,
@@ -568,6 +572,7 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
568572 return this . asgardeo . getStorageManager ( ) ;
569573 }
570574
575+ // eslint-disable-next-line class-methods-use-this
571576 public async clearSession ( ) : Promise < void > {
572577 throw new AsgardeoRuntimeError (
573578 'Not implemented' ,
@@ -578,11 +583,11 @@ class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConfig> exte
578583 }
579584
580585 override async setSession ( sessionData : Record < string , unknown > , sessionId ?: string ) : Promise < void > {
581- return await ( await this . asgardeo . getStorageManager ( ) ) . setSessionData ( sessionData , sessionId ) ;
586+ return ( await this . asgardeo . getStorageManager ( ) ) . setSessionData ( sessionData , sessionId ) ;
582587 }
583588
584- override decodeJwtToken < T = Record < string , unknown > > ( token : string ) : Promise < T > {
585- return this . asgardeo . decodeJwtToken < T > ( token ) ;
589+ override decodeJwtToken < R = Record < string , unknown > > ( token : string ) : Promise < R > {
590+ return this . asgardeo . decodeJwtToken < R > ( token ) ;
586591 }
587592}
588593
0 commit comments