@@ -31,6 +31,7 @@ export const TOKEN_REFRESH_BUFFER_MS = 30_000;
31
31
export interface Tokens {
32
32
accessToken : string ;
33
33
refreshToken : string | null ;
34
+ wasRefreshed : boolean ;
34
35
}
35
36
36
37
export class StsTokenManager {
@@ -50,14 +51,16 @@ export class StsTokenManager {
50
51
refreshToken,
51
52
expiresIn : expiresInSec
52
53
} : IdTokenResponse ) : void {
53
- this . refreshToken = refreshToken ;
54
- this . accessToken = idToken ;
55
- this . expirationTime = Date . now ( ) + Number ( expiresInSec ) * 1000 ;
54
+ this . updateTokensAndExpiration ( idToken , refreshToken , expiresInSec ) ;
56
55
}
57
56
58
57
async getToken ( auth : Auth , forceRefresh = false ) : Promise < Tokens | null > {
59
58
if ( ! forceRefresh && this . accessToken && ! this . isExpired ) {
60
- return this . tokens ;
59
+ return {
60
+ accessToken : this . accessToken ,
61
+ refreshToken : this . refreshToken ,
62
+ wasRefreshed : false ,
63
+ } ;
61
64
}
62
65
63
66
if ( this . accessToken && ! this . refreshToken ) {
@@ -71,30 +74,30 @@ export class StsTokenManager {
71
74
}
72
75
73
76
await this . refresh ( auth , this . refreshToken ) ;
74
- return this . tokens ;
75
- }
76
-
77
- toPlainObject ( ) : object {
78
77
return {
78
+ accessToken : this . accessToken ! ,
79
79
refreshToken : this . refreshToken ,
80
- accessToken : this . accessToken ,
81
- expirationTime : this . expirationTime
80
+ wasRefreshed : true ,
82
81
} ;
83
82
}
84
83
85
- private get tokens ( ) : Tokens {
84
+ toPlainObject ( ) : object {
86
85
return {
87
- accessToken : this . accessToken ! ,
88
86
refreshToken : this . refreshToken ,
87
+ accessToken : this . accessToken ,
88
+ expirationTime : this . expirationTime
89
89
} ;
90
90
}
91
91
92
92
private async refresh ( auth : Auth , refreshToken : string ) {
93
93
const { access_token, refresh_token, expires_in} = await requestStsToken ( auth , refreshToken ) ;
94
-
95
- this . accessToken = access_token || null ;
96
- this . refreshToken = refresh_token || null ;
97
- this . expirationTime = expires_in ? Date . now ( ) + Number ( expires_in ) * 1000 : null ;
94
+ this . updateTokensAndExpiration ( access_token , refresh_token , expires_in ) ;
95
+ }
96
+
97
+ private updateTokensAndExpiration ( accessToken : string | undefined , refreshToken : string | undefined , expiresInSec : string | undefined ) {
98
+ this . refreshToken = refreshToken || null ;
99
+ this . accessToken = accessToken || null ;
100
+ this . expirationTime = expiresInSec ? Date . now ( ) + Number ( expiresInSec ) * 1000 : null ;
98
101
}
99
102
100
103
static fromPlainObject (
0 commit comments