@spidy092/auth-client 3.1.3 → 3.1.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.
@@ -38,8 +38,10 @@ var import_react4 = require("react");
38
38
  // token.js
39
39
  var import_jwt_decode = require("jwt-decode");
40
40
  var accessToken = null;
41
+ var idToken = null;
41
42
  var listeners = /* @__PURE__ */ new Set();
42
43
  var REFRESH_COOKIE = "account_refresh_token";
44
+ var ID_TOKEN_KEY = "auth_id_token";
43
45
  var COOKIE_MAX_AGE = 7 * 24 * 60 * 60;
44
46
  function secureAttribute() {
45
47
  var _a;
@@ -118,12 +120,14 @@ function getToken() {
118
120
  function clearToken() {
119
121
  if (!accessToken) {
120
122
  writeAccessToken(null);
123
+ clearIdToken();
121
124
  clearRefreshToken();
122
125
  return;
123
126
  }
124
127
  const previousToken = accessToken;
125
128
  accessToken = null;
126
129
  writeAccessToken(null);
130
+ clearIdToken();
127
131
  clearRefreshToken();
128
132
  listeners.forEach((listener) => {
129
133
  try {
@@ -133,6 +137,30 @@ function clearToken() {
133
137
  }
134
138
  });
135
139
  }
140
+ function setIdToken(token) {
141
+ idToken = token || null;
142
+ try {
143
+ if (idToken) sessionStorage.setItem(ID_TOKEN_KEY, idToken);
144
+ else sessionStorage.removeItem(ID_TOKEN_KEY);
145
+ } catch {
146
+ }
147
+ }
148
+ function getIdToken() {
149
+ if (idToken) return idToken;
150
+ try {
151
+ idToken = sessionStorage.getItem(ID_TOKEN_KEY) || null;
152
+ } catch {
153
+ idToken = null;
154
+ }
155
+ return idToken;
156
+ }
157
+ function clearIdToken() {
158
+ idToken = null;
159
+ try {
160
+ sessionStorage.removeItem(ID_TOKEN_KEY);
161
+ } catch {
162
+ }
163
+ }
136
164
  var REFRESH_TOKEN_KEY = "auth_refresh_token";
137
165
  var _persistRefreshToken = false;
138
166
  function enableRefreshTokenPersistence(enabled) {
@@ -377,6 +405,28 @@ function clearLoginLock() {
377
405
  } catch {
378
406
  }
379
407
  }
408
+ async function reportClientDiagnostic(safe) {
409
+ if (typeof fetch !== "function" || typeof getToken !== "function") return;
410
+ if (safe.outcome === "SUCCESS" && !safe.event.startsWith("PROFILE_") && !safe.event.startsWith("SESSION_")) return;
411
+ const { authBaseUrl } = getConfig();
412
+ const token = getToken();
413
+ if (!authBaseUrl || !token) return;
414
+ try {
415
+ await fetch(`${authBaseUrl.replace(/\/+$/, "")}/client-telemetry`, {
416
+ method: "POST",
417
+ credentials: "include",
418
+ keepalive: true,
419
+ headers: {
420
+ "Content-Type": "application/json",
421
+ Authorization: `Bearer ${token}`,
422
+ "X-Correlation-ID": safe.correlationId,
423
+ "X-Request-ID": safe.correlationId
424
+ },
425
+ body: JSON.stringify(safe)
426
+ });
427
+ } catch {
428
+ }
429
+ }
380
430
  async function emitAuthDiagnostic(event, outcome, reasonCode, details = {}) {
381
431
  const context = getDiagnosticContext();
382
432
  const safe = {
@@ -393,6 +443,7 @@ async function emitAuthDiagnostic(event, outcome, reasonCode, details = {}) {
393
443
  };
394
444
  const method = outcome === "FAILURE" ? "error" : outcome === "WARNING" ? "warn" : "info";
395
445
  console[method]("[auth-client]", safe);
446
+ void reportClientDiagnostic(safe);
396
447
  return safe;
397
448
  }
398
449
 
@@ -455,6 +506,7 @@ async function logout(options = {}) {
455
506
  const { clientKey, authBaseUrl, accountUiUrl } = getConfig();
456
507
  const scope = options.scope === "client" ? "client" : "sso";
457
508
  const token = getToken();
509
+ const idToken2 = getIdToken();
458
510
  const refreshToken2 = getRefreshToken();
459
511
  console.log("\u{1F6AA} Smart Logout initiated", {
460
512
  mode: isRouterMode() ? "ROUTER" : "CLIENT",
@@ -463,6 +515,7 @@ async function logout(options = {}) {
463
515
  });
464
516
  emitAuthDiagnostic("LOGOUT_INITIATED", "PENDING", "NONE", { clientKey });
465
517
  clearToken();
518
+ clearIdToken();
466
519
  clearRefreshToken();
467
520
  sessionStorage.removeItem("originalApp");
468
521
  sessionStorage.removeItem("returnUrl");
@@ -475,7 +528,7 @@ async function logout(options = {}) {
475
528
  "Authorization": token ? `Bearer ${token}` : "",
476
529
  "Content-Type": "application/json"
477
530
  },
478
- body: JSON.stringify({ refreshToken: refreshToken2, scope })
531
+ body: JSON.stringify({ refreshToken: refreshToken2, idToken: idToken2, scope })
479
532
  });
480
533
  if (!response.ok) {
481
534
  throw new Error(`Logout failed: ${response.status}`);
@@ -509,9 +562,11 @@ async function logout(options = {}) {
509
562
  function handleCallback() {
510
563
  const params = new URLSearchParams(window.location.search);
511
564
  const accessToken2 = params.get("access_token");
565
+ const idToken2 = params.get("id_token");
512
566
  const error = params.get("error");
513
567
  console.log("\u{1F504} Callback handling:", {
514
568
  hasAccessToken: !!accessToken2,
569
+ hasIdToken: !!idToken2,
515
570
  error
516
571
  });
517
572
  if (callbackProcessed) {
@@ -539,6 +594,7 @@ function handleCallback() {
539
594
  }
540
595
  if (accessToken2) {
541
596
  setToken(accessToken2);
597
+ if (idToken2) setIdToken(idToken2);
542
598
  const refreshTokenInUrl = params.get("refresh_token");
543
599
  if (refreshTokenInUrl) {
544
600
  emitAuthDiagnostic("CALLBACK_REFRESH_TOKEN_IGNORED", "WARNING", "REFRESH_TOKEN_IN_URL", {
@@ -547,6 +603,7 @@ function handleCallback() {
547
603
  }
548
604
  const url = new URL(window.location);
549
605
  url.searchParams.delete("access_token");
606
+ url.searchParams.delete("id_token");
550
607
  url.searchParams.delete("refresh_token");
551
608
  url.searchParams.delete("state");
552
609
  url.searchParams.delete("error");
@@ -1251,6 +1308,9 @@ var auth = {
1251
1308
  getToken,
1252
1309
  setToken,
1253
1310
  clearToken,
1311
+ setIdToken,
1312
+ getIdToken,
1313
+ clearIdToken,
1254
1314
  setRefreshToken,
1255
1315
  // ✅ Refresh token for HTTP dev
1256
1316
  getRefreshToken,