@payez/next-mvp 4.0.44 → 4.0.45

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.
@@ -173,7 +173,9 @@ class ApiHandler {
173
173
  return { success: false, reason: 'SESSION_EXPIRED' };
174
174
  }
175
175
  const { session: sessionData } = sessionWithVersion;
176
- let accessToken = sessionData.idpAccessToken || null;
176
+ // Sessions may store the access token under either field name
177
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
178
+ let accessToken = sessionData.idpAccessToken || sessionData.accessToken || null;
177
179
  let userRoles = Array.isArray(sessionData.roles) ? sessionData.roles : [];
178
180
  // Merge roles from JWT token
179
181
  try {
@@ -188,7 +190,8 @@ class ApiHandler {
188
190
  // some session shapes store the refresh token under different field names,
189
191
  // and we still want a refresh attempt to populate the access token.
190
192
  const thresholdMs = 5 * 60 * 1000;
191
- const expires = sessionData.idpAccessTokenExpires || 0;
193
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
194
+ const expires = sessionData.idpAccessTokenExpires || sessionData.accessTokenExpires || 0;
192
195
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
193
196
  const hasRefreshToken = !!(sessionData.idpRefreshToken || sessionData.refreshToken);
194
197
  const accessTokenStale = !accessToken || (expires - Date.now()) <= thresholdMs;
@@ -303,11 +306,17 @@ class ApiHandler {
303
306
  // Double-check if still needs refresh
304
307
  const latest = await (0, session_store_1.getSession)(sessionToken);
305
308
  const thresholdMs = 5 * 60 * 1000;
306
- const stillNeeds = !latest?.accessToken || ((latest?.accessTokenExpires || 0) - Date.now()) <= thresholdMs;
307
- if (!stillNeeds && latest?.accessToken) {
309
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
310
+ const latestAny = latest;
311
+ // Sessions may store the access token under either `accessToken` or `idpAccessToken`,
312
+ // and expiry under `accessTokenExpires` or `idpAccessTokenExpires`.
313
+ const latestAccessToken = latestAny?.accessToken || latestAny?.idpAccessToken;
314
+ const latestExpires = latestAny?.accessTokenExpires || latestAny?.idpAccessTokenExpires || 0;
315
+ const stillNeeds = !latestAccessToken || (latestExpires - Date.now()) <= thresholdMs;
316
+ if (!stillNeeds && latestAccessToken) {
308
317
  return {
309
- accessToken: latest.accessToken,
310
- roles: Array.isArray(latest.roles) ? latest.roles : [],
318
+ accessToken: latestAccessToken,
319
+ roles: Array.isArray(latest?.roles) ? latest.roles : [],
311
320
  };
312
321
  }
313
322
  // Use centralized internal API helper for server-to-server refresh calls
@@ -316,10 +325,12 @@ class ApiHandler {
316
325
  return {};
317
326
  }
318
327
  const refreshed = await (0, session_store_1.getSession)(sessionToken);
319
- if (refreshed?.accessToken) {
328
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
329
+ const refreshedAccessToken = refreshed?.accessToken || refreshed?.idpAccessToken;
330
+ if (refreshedAccessToken) {
320
331
  return {
321
- accessToken: refreshed.accessToken,
322
- roles: Array.isArray(refreshed.roles) ? refreshed.roles : [],
332
+ accessToken: refreshedAccessToken,
333
+ roles: Array.isArray(refreshed?.roles) ? refreshed.roles : [],
323
334
  };
324
335
  }
325
336
  return {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payez/next-mvp",
3
- "version": "4.0.44",
3
+ "version": "4.0.45",
4
4
  "sideEffects": false,
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -267,7 +267,9 @@ export class ApiHandler {
267
267
  }
268
268
 
269
269
  const { session: sessionData } = sessionWithVersion;
270
- let accessToken = sessionData.idpAccessToken || null;
270
+ // Sessions may store the access token under either field name
271
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
272
+ let accessToken = sessionData.idpAccessToken || (sessionData as any).accessToken || null;
271
273
  let userRoles: string[] = Array.isArray(sessionData.roles) ? sessionData.roles : [];
272
274
 
273
275
  // Merge roles from JWT token
@@ -283,7 +285,8 @@ export class ApiHandler {
283
285
  // some session shapes store the refresh token under different field names,
284
286
  // and we still want a refresh attempt to populate the access token.
285
287
  const thresholdMs = 5 * 60 * 1000;
286
- const expires = sessionData.idpAccessTokenExpires || 0;
288
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
289
+ const expires = sessionData.idpAccessTokenExpires || (sessionData as any).accessTokenExpires || 0;
287
290
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
288
291
  const hasRefreshToken = !!(sessionData.idpRefreshToken || (sessionData as any).refreshToken);
289
292
  const accessTokenStale = !accessToken || (expires - Date.now()) <= thresholdMs;
@@ -424,12 +427,18 @@ export class ApiHandler {
424
427
  // Double-check if still needs refresh
425
428
  const latest = await getSession(sessionToken);
426
429
  const thresholdMs = 5 * 60 * 1000;
427
- const stillNeeds = !latest?.accessToken || ((latest?.accessTokenExpires || 0) - Date.now()) <= thresholdMs;
428
-
429
- if (!stillNeeds && latest?.accessToken) {
430
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
431
+ const latestAny = latest as any;
432
+ // Sessions may store the access token under either `accessToken` or `idpAccessToken`,
433
+ // and expiry under `accessTokenExpires` or `idpAccessTokenExpires`.
434
+ const latestAccessToken = latestAny?.accessToken || latestAny?.idpAccessToken;
435
+ const latestExpires = latestAny?.accessTokenExpires || latestAny?.idpAccessTokenExpires || 0;
436
+ const stillNeeds = !latestAccessToken || (latestExpires - Date.now()) <= thresholdMs;
437
+
438
+ if (!stillNeeds && latestAccessToken) {
430
439
  return {
431
- accessToken: latest.accessToken,
432
- roles: Array.isArray(latest.roles) ? latest.roles : [],
440
+ accessToken: latestAccessToken,
441
+ roles: Array.isArray(latest?.roles) ? latest.roles : [],
433
442
  };
434
443
  }
435
444
 
@@ -446,10 +455,12 @@ export class ApiHandler {
446
455
  }
447
456
 
448
457
  const refreshed = await getSession(sessionToken);
449
- if (refreshed?.accessToken) {
458
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
459
+ const refreshedAccessToken = (refreshed as any)?.accessToken || (refreshed as any)?.idpAccessToken;
460
+ if (refreshedAccessToken) {
450
461
  return {
451
- accessToken: refreshed.accessToken,
452
- roles: Array.isArray(refreshed.roles) ? refreshed.roles : [],
462
+ accessToken: refreshedAccessToken,
463
+ roles: Array.isArray(refreshed?.roles) ? refreshed.roles : [],
453
464
  };
454
465
  }
455
466