@avantmedia/id-react 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +60 -18
- package/dist/provider.js.map +1 -1
- package/package.json +1 -1
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAU5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAU5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAuBpF,UAAU,oBAAoB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAwUzE;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAIjD"}
|
package/dist/provider.js
CHANGED
|
@@ -78,13 +78,13 @@ export function AvantIdProvider({ children, config }) {
|
|
|
78
78
|
body: JSON.stringify({ refreshToken: token }),
|
|
79
79
|
});
|
|
80
80
|
if (!response.ok) {
|
|
81
|
-
return
|
|
81
|
+
return { status: 'rejected' };
|
|
82
82
|
}
|
|
83
83
|
const raw = await response.json();
|
|
84
|
-
return normalizeTokenResponse(raw);
|
|
84
|
+
return { status: 'success', tokens: normalizeTokenResponse(raw) };
|
|
85
85
|
}
|
|
86
86
|
catch {
|
|
87
|
-
return
|
|
87
|
+
return { status: 'error' };
|
|
88
88
|
}
|
|
89
89
|
}, [baseUrl]);
|
|
90
90
|
// Get access token, refreshing if needed
|
|
@@ -95,28 +95,37 @@ export function AvantIdProvider({ children, config }) {
|
|
|
95
95
|
}
|
|
96
96
|
// Deduplicate concurrent refresh attempts
|
|
97
97
|
if (refreshPromiseRef.current) {
|
|
98
|
-
const
|
|
99
|
-
return
|
|
98
|
+
const result = await refreshPromiseRef.current;
|
|
99
|
+
return result.status === 'success' ? result.tokens.access_token : null;
|
|
100
100
|
}
|
|
101
|
+
// Read latest refresh token from localStorage (cross-tab safe) or fall back to state
|
|
102
|
+
const currentRefreshToken = config.persistSession
|
|
103
|
+
? localStorage.getItem(REFRESH_TOKEN_KEY)
|
|
104
|
+
: refreshToken;
|
|
101
105
|
// Try to refresh
|
|
102
|
-
if (
|
|
103
|
-
const promise = refreshAccessToken(
|
|
106
|
+
if (currentRefreshToken) {
|
|
107
|
+
const promise = refreshAccessToken(currentRefreshToken);
|
|
104
108
|
refreshPromiseRef.current = promise;
|
|
105
109
|
try {
|
|
106
|
-
const
|
|
107
|
-
if (
|
|
108
|
-
storeTokens(tokens);
|
|
109
|
-
return tokens.access_token;
|
|
110
|
+
const result = await promise;
|
|
111
|
+
if (result.status === 'success') {
|
|
112
|
+
storeTokens(result.tokens);
|
|
113
|
+
return result.tokens.access_token;
|
|
114
|
+
}
|
|
115
|
+
// Only clear session on explicit server rejection, not transient errors
|
|
116
|
+
if (result.status === 'rejected') {
|
|
117
|
+
clearTokens();
|
|
110
118
|
}
|
|
119
|
+
return null;
|
|
111
120
|
}
|
|
112
121
|
finally {
|
|
113
122
|
refreshPromiseRef.current = null;
|
|
114
123
|
}
|
|
115
124
|
}
|
|
116
|
-
// No
|
|
125
|
+
// No refresh token available
|
|
117
126
|
clearTokens();
|
|
118
127
|
return null;
|
|
119
|
-
}, [refreshToken, refreshAccessToken, storeTokens, clearTokens]);
|
|
128
|
+
}, [refreshToken, config.persistSession, refreshAccessToken, storeTokens, clearTokens]);
|
|
120
129
|
// Exchange authorization code for tokens
|
|
121
130
|
const exchangeCode = useCallback(async (code, codeVerifier) => {
|
|
122
131
|
try {
|
|
@@ -215,17 +224,18 @@ export function AvantIdProvider({ children, config }) {
|
|
|
215
224
|
// Check for valid refresh token (not empty, not the string "undefined" or "null")
|
|
216
225
|
if (storedRefresh && storedRefresh !== 'undefined' && storedRefresh !== 'null') {
|
|
217
226
|
setRefreshToken(storedRefresh);
|
|
218
|
-
const
|
|
219
|
-
if (
|
|
220
|
-
storeTokens(tokens);
|
|
221
|
-
const userProfile = await fetchUser(tokens.access_token);
|
|
227
|
+
const result = await refreshAccessToken(storedRefresh);
|
|
228
|
+
if (result.status === 'success') {
|
|
229
|
+
storeTokens(result.tokens);
|
|
230
|
+
const userProfile = await fetchUser(result.tokens.access_token);
|
|
222
231
|
if (userProfile) {
|
|
223
232
|
setUser(userProfile);
|
|
224
233
|
}
|
|
225
234
|
}
|
|
226
|
-
else {
|
|
235
|
+
else if (result.status === 'rejected') {
|
|
227
236
|
clearTokens();
|
|
228
237
|
}
|
|
238
|
+
// On 'error': leave refresh token intact for retry
|
|
229
239
|
}
|
|
230
240
|
}
|
|
231
241
|
setIsLoading(false);
|
|
@@ -239,6 +249,38 @@ export function AvantIdProvider({ children, config }) {
|
|
|
239
249
|
fetchUser,
|
|
240
250
|
clearTokens,
|
|
241
251
|
]);
|
|
252
|
+
// Cross-tab sync: update state when another tab writes/clears the refresh token
|
|
253
|
+
useEffect(() => {
|
|
254
|
+
if (!config.persistSession)
|
|
255
|
+
return;
|
|
256
|
+
const handleStorage = (e) => {
|
|
257
|
+
if (e.key !== REFRESH_TOKEN_KEY)
|
|
258
|
+
return;
|
|
259
|
+
if (e.newValue) {
|
|
260
|
+
// Another tab stored a new refresh token — update React state
|
|
261
|
+
setRefreshToken(e.newValue);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// Another tab cleared the token (logout) — clear local state
|
|
265
|
+
clearTokens();
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
window.addEventListener('storage', handleStorage);
|
|
269
|
+
return () => window.removeEventListener('storage', handleStorage);
|
|
270
|
+
}, [config.persistSession, clearTokens]);
|
|
271
|
+
// Proactive refresh when tab becomes visible and token is near expiry
|
|
272
|
+
useEffect(() => {
|
|
273
|
+
const handleVisibility = () => {
|
|
274
|
+
if (document.visibilityState !== 'visible')
|
|
275
|
+
return;
|
|
276
|
+
// Refresh if token expires within 60s
|
|
277
|
+
if (tokenExpiryRef.current && Date.now() > tokenExpiryRef.current - 60000) {
|
|
278
|
+
getAccessToken();
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
document.addEventListener('visibilitychange', handleVisibility);
|
|
282
|
+
return () => document.removeEventListener('visibilitychange', handleVisibility);
|
|
283
|
+
}, [getAccessToken]);
|
|
242
284
|
const value = {
|
|
243
285
|
user,
|
|
244
286
|
isLoading,
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC5G,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EACH,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,GACd,MAAM,QAAQ,CAAC;AAGhB,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAEjE,SAAS,sBAAsB,CAAC,GAA4B;IACxD,OAAO;QACH,YAAY,EAAG,GAAG,CAAC,YAAuB,IAAK,GAAG,CAAC,WAAsB;QACzE,aAAa,EAAG,GAAG,CAAC,aAAwB,IAAK,GAAG,CAAC,YAAuB;QAC5E,UAAU,EAAG,GAAG,CAAC,UAAqB,IAAK,GAAG,CAAC,SAAoB;QACnE,UAAU,EAAG,GAAG,CAAC,UAAqB,IAAK,GAAG,CAAC,SAAoB;KACtE,CAAC;AACN,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
|