@burdenoff/fe-libs 2026.601.6 → 2026.601.7

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.
Files changed (28) hide show
  1. package/dist/chrome/ProductSideNav.d.ts.map +1 -1
  2. package/dist/chrome/SideNavigation.d.ts.map +1 -1
  3. package/dist/chrome/sideNavigation/NavItemRenderer.d.ts.map +1 -1
  4. package/dist/shared/components/PWAInstallBanner.d.ts.map +1 -1
  5. package/dist/shared/graphql/client.d.ts.map +1 -1
  6. package/dist/shared/graphql/client.js +61 -61
  7. package/dist/shared/graphql/fetch.d.ts.map +1 -1
  8. package/dist/shared/graphql/fetch.js +120 -120
  9. package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
  10. package/dist/shared/providers/AppShellProvider.js +204 -169
  11. package/dist/shared/providers/shell/ProfileStorageManager.d.ts +1 -1
  12. package/dist/shared/providers/shell/ProfileStorageManager.d.ts.map +1 -1
  13. package/dist/shared/providers/shell/ProfileStorageManager.js +110 -102
  14. package/dist/shared/providers/shell/authProvider/useAuthActions.d.ts.map +1 -1
  15. package/dist/shared/providers/shell/authProvider/useAuthActions.js +12 -10
  16. package/dist/shared/providers/shell/authProvider/useTokenExpiryTimer.d.ts.map +1 -1
  17. package/dist/shared/providers/shell/authProvider/useTokenExpiryTimer.js +8 -8
  18. package/dist/shared/utils/apollo.js +1 -1
  19. package/dist/shared/utils/authErrorHandling.d.ts.map +1 -1
  20. package/dist/shared/utils/authErrorHandling.js +23 -8
  21. package/dist/shared/utils/backendErrors.d.ts +23 -0
  22. package/dist/shared/utils/backendErrors.d.ts.map +1 -1
  23. package/dist/shared/utils/backendErrors.js +113 -39
  24. package/dist/shared/utils/index.d.ts +2 -2
  25. package/dist/shared/utils/index.d.ts.map +1 -1
  26. package/dist/shared-utils.js +12 -12
  27. package/dist/shared.js +97 -97
  28. package/package.json +1 -1
@@ -1,45 +1,45 @@
1
1
  import { __exportAll as e } from "../../../_virtual/_rolldown/runtime.js";
2
2
  //#region src/shared/providers/shell/ProfileStorageManager.ts
3
3
  var t = /* @__PURE__ */ e({
4
- PROFILE_STORAGE_CHANGE_EVENT: () => o,
5
- addProfile: () => m,
6
- clearActiveProfileId: () => y,
7
- getActiveContext: () => P,
8
- getActiveProfileId: () => _,
9
- getActiveTokens: () => M,
10
- getActiveUser: () => j,
11
- getActiveWorkspaceToken: () => N,
12
- getProfileContext: () => D,
13
- getProfileLocale: () => k,
14
- getProfileTokens: () => C,
15
- getProfileUser: () => x,
16
- getProfileWorkspaceToken: () => T,
17
- getProfiles: () => f,
18
- loginProfile: () => F,
19
- logoutActiveProfile: () => I,
20
- logoutAllProfiles: () => L,
21
- removeAllProfiles: () => g,
22
- removeProfile: () => h,
23
- resolveActiveProfileId: () => b,
24
- setActiveProfileId: () => v,
25
- setProfileContext: () => O,
26
- setProfileLocale: () => A,
27
- setProfileTokens: () => w,
28
- setProfileUser: () => S,
29
- setProfileWorkspaceToken: () => E,
30
- setProfiles: () => p,
31
- switchProfile: () => R
32
- }), n = "bf-profiles", r = "bf-active-profile", i = "bf-p", a = "session", o = "bf-profile-storage-change";
33
- function s() {
34
- typeof window < "u" && window.dispatchEvent(new Event(o));
35
- }
36
- function c(e, t) {
37
- return `${i}-${e}-${t}`;
4
+ PROFILE_STORAGE_CHANGE_EVENT: () => s,
5
+ addProfile: () => h,
6
+ clearActiveProfileId: () => b,
7
+ getActiveContext: () => F,
8
+ getActiveProfileId: () => v,
9
+ getActiveTokens: () => N,
10
+ getActiveUser: () => M,
11
+ getActiveWorkspaceToken: () => P,
12
+ getProfileContext: () => O,
13
+ getProfileLocale: () => A,
14
+ getProfileTokens: () => w,
15
+ getProfileUser: () => S,
16
+ getProfileWorkspaceToken: () => E,
17
+ getProfiles: () => p,
18
+ loginProfile: () => I,
19
+ logoutActiveProfile: () => L,
20
+ logoutAllProfiles: () => R,
21
+ removeAllProfiles: () => _,
22
+ removeProfile: () => g,
23
+ resolveActiveProfileId: () => x,
24
+ setActiveProfileId: () => y,
25
+ setProfileContext: () => k,
26
+ setProfileLocale: () => j,
27
+ setProfileTokens: () => T,
28
+ setProfileUser: () => C,
29
+ setProfileWorkspaceToken: () => D,
30
+ setProfiles: () => m,
31
+ switchProfile: () => z
32
+ }), n = "bf-profiles", r = "bf-active-profile", i = "bf-last-active-profile", a = "bf-p", o = "session", s = "bf-profile-storage-change";
33
+ function c() {
34
+ typeof window < "u" && window.dispatchEvent(new Event(s));
38
35
  }
39
36
  function l(e, t) {
40
- return `${i}-${e}-${a}-${t}`;
37
+ return `${a}-${e}-${t}`;
41
38
  }
42
- function u(e) {
39
+ function u(e, t) {
40
+ return `${a}-${e}-${o}-${t}`;
41
+ }
42
+ function d(e) {
43
43
  try {
44
44
  let t = localStorage.getItem(e);
45
45
  return t ? JSON.parse(t) : null;
@@ -47,21 +47,21 @@ function u(e) {
47
47
  return null;
48
48
  }
49
49
  }
50
- function d(e, t) {
50
+ function f(e, t) {
51
51
  localStorage.setItem(e, JSON.stringify(t));
52
52
  }
53
- function f() {
54
- return u(n) ?? [];
55
- }
56
- function p(e) {
57
- d(n, e);
53
+ function p() {
54
+ return d(n) ?? [];
58
55
  }
59
56
  function m(e) {
60
- let t = f().filter((t) => t.id !== e.id);
61
- t.push(e), p(t);
57
+ f(n, e);
62
58
  }
63
59
  function h(e) {
64
- p(f().filter((t) => t.id !== e));
60
+ let t = p().filter((t) => t.id !== e.id);
61
+ t.push(e), m(t);
62
+ }
63
+ function g(e) {
64
+ m(p().filter((t) => t.id !== e));
65
65
  for (let t of [
66
66
  "user",
67
67
  "tokens",
@@ -74,51 +74,59 @@ function h(e) {
74
74
  "theme-density",
75
75
  "theme-typography",
76
76
  "sidebar-collapsed"
77
- ]) localStorage.removeItem(c(e, t)), sessionStorage.removeItem(l(e, t));
77
+ ]) localStorage.removeItem(l(e, t)), sessionStorage.removeItem(u(e, t));
78
78
  }
79
- function g() {
80
- let e = f();
81
- for (let t of e) h(t.id);
79
+ function _() {
80
+ let e = p();
81
+ for (let t of e) g(t.id);
82
82
  localStorage.removeItem(n), sessionStorage.removeItem(r);
83
83
  }
84
- function _() {
84
+ function v() {
85
85
  return sessionStorage.getItem(r);
86
86
  }
87
- function v(e) {
87
+ function y(e) {
88
88
  sessionStorage.setItem(r, e);
89
+ try {
90
+ localStorage.setItem(i, e);
91
+ } catch {}
89
92
  }
90
- function y() {
93
+ function b() {
91
94
  sessionStorage.removeItem(r);
92
95
  }
93
- function b() {
94
- let e = _();
95
- if (e && f().some((t) => t.id === e)) return e;
96
- let t = f();
97
- return t.length > 0 ? (v(t[0].id), t[0].id) : null;
96
+ function x() {
97
+ let e = p(), t = v();
98
+ if (t && e.some((e) => e.id === t)) return t;
99
+ let n = null;
100
+ try {
101
+ n = localStorage.getItem(i);
102
+ } catch {
103
+ n = null;
104
+ }
105
+ return n && e.some((e) => e.id === n) ? (y(n), n) : e.length > 0 ? (y(e[0].id), e[0].id) : null;
98
106
  }
99
- function x(e) {
100
- return u(c(e, "user"));
107
+ function S(e) {
108
+ return d(l(e, "user"));
101
109
  }
102
- function S(e, t) {
103
- let n = c(e, "user");
104
- t ? d(n, t) : localStorage.removeItem(n);
110
+ function C(e, t) {
111
+ let n = l(e, "user");
112
+ t ? f(n, t) : localStorage.removeItem(n);
105
113
  }
106
- function C(e) {
107
- return u(c(e, "tokens"));
114
+ function w(e) {
115
+ return d(l(e, "tokens"));
108
116
  }
109
- function w(e, t) {
110
- let n = c(e, "tokens");
111
- t ? d(n, t) : localStorage.removeItem(n);
117
+ function T(e, t) {
118
+ let n = l(e, "tokens");
119
+ t ? f(n, t) : localStorage.removeItem(n);
112
120
  }
113
- function T(e) {
121
+ function E(e) {
114
122
  try {
115
- let t = sessionStorage.getItem(l(e, "workspace-token"));
123
+ let t = sessionStorage.getItem(u(e, "workspace-token"));
116
124
  if (t) return t;
117
125
  } catch {}
118
- return localStorage.getItem(c(e, "workspace-token"));
126
+ return localStorage.getItem(l(e, "workspace-token"));
119
127
  }
120
- function E(e, t) {
121
- let n = c(e, "workspace-token"), r = l(e, "workspace-token");
128
+ function D(e, t) {
129
+ let n = l(e, "workspace-token"), r = u(e, "workspace-token");
122
130
  if (t) {
123
131
  try {
124
132
  sessionStorage.setItem(r, t);
@@ -130,55 +138,55 @@ function E(e, t) {
130
138
  } catch {}
131
139
  localStorage.removeItem(n);
132
140
  }
133
- s();
141
+ c();
134
142
  }
135
- function D(e) {
136
- return u(c(e, "context"));
143
+ function O(e) {
144
+ return d(l(e, "context"));
137
145
  }
138
- function O(e, t) {
139
- d(c(e, "context"), t);
146
+ function k(e, t) {
147
+ f(l(e, "context"), t);
140
148
  }
141
- function k(e) {
142
- return localStorage.getItem(c(e, "locale"));
149
+ function A(e) {
150
+ return localStorage.getItem(l(e, "locale"));
143
151
  }
144
- function A(e, t) {
145
- localStorage.setItem(c(e, "locale"), t);
146
- }
147
- function j() {
148
- let e = b();
149
- return e ? x(e) : null;
152
+ function j(e, t) {
153
+ localStorage.setItem(l(e, "locale"), t);
150
154
  }
151
155
  function M() {
152
- let e = b();
153
- return e ? C(e) : null;
156
+ let e = x();
157
+ return e ? S(e) : null;
154
158
  }
155
159
  function N() {
156
- let e = b();
157
- return e ? T(e) : null;
160
+ let e = x();
161
+ return e ? w(e) : null;
158
162
  }
159
163
  function P() {
160
- let e = b();
161
- return e ? D(e) : null;
164
+ let e = x();
165
+ return e ? E(e) : null;
166
+ }
167
+ function F() {
168
+ let e = x();
169
+ return e ? O(e) : null;
162
170
  }
163
- function F(e, t) {
171
+ function I(e, t) {
164
172
  let n = e.id;
165
- return m({
173
+ return h({
166
174
  id: n,
167
175
  email: e.email,
168
176
  name: e.name ?? `${e.firstName ?? ""} ${e.lastName ?? ""}`.trim(),
169
177
  avatar: e.avatar,
170
178
  lastLogin: (/* @__PURE__ */ new Date()).toISOString()
171
- }), S(n, e), w(n, t), v(n), s(), n;
172
- }
173
- function I() {
174
- let e = _();
175
- e && (h(e), y(), b(), s());
179
+ }), C(n, e), T(n, t), y(n), c(), n;
176
180
  }
177
181
  function L() {
178
- g(), s();
182
+ let e = v();
183
+ e && (g(e), b(), x(), c());
184
+ }
185
+ function R() {
186
+ _(), c();
179
187
  }
180
- function R(e) {
181
- return f().some((t) => t.id === e) ? (v(e), !0) : !1;
188
+ function z(e) {
189
+ return p().some((t) => t.id === e) ? (y(e), !0) : !1;
182
190
  }
183
191
  //#endregion
184
- export { o as PROFILE_STORAGE_CHANGE_EVENT, t as ProfileStorageManager_exports, m as addProfile, y as clearActiveProfileId, P as getActiveContext, _ as getActiveProfileId, M as getActiveTokens, j as getActiveUser, N as getActiveWorkspaceToken, D as getProfileContext, k as getProfileLocale, C as getProfileTokens, x as getProfileUser, T as getProfileWorkspaceToken, f as getProfiles, F as loginProfile, I as logoutActiveProfile, L as logoutAllProfiles, g as removeAllProfiles, h as removeProfile, b as resolveActiveProfileId, v as setActiveProfileId, O as setProfileContext, A as setProfileLocale, w as setProfileTokens, S as setProfileUser, E as setProfileWorkspaceToken, p as setProfiles, R as switchProfile };
192
+ export { s as PROFILE_STORAGE_CHANGE_EVENT, t as ProfileStorageManager_exports, h as addProfile, b as clearActiveProfileId, F as getActiveContext, v as getActiveProfileId, N as getActiveTokens, M as getActiveUser, P as getActiveWorkspaceToken, O as getProfileContext, A as getProfileLocale, w as getProfileTokens, S as getProfileUser, E as getProfileWorkspaceToken, p as getProfiles, I as loginProfile, L as logoutActiveProfile, R as logoutAllProfiles, _ as removeAllProfiles, g as removeProfile, x as resolveActiveProfileId, y as setActiveProfileId, k as setProfileContext, j as setProfileLocale, T as setProfileTokens, C as setProfileUser, D as setProfileWorkspaceToken, m as setProfiles, z as switchProfile };
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthActions.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/shell/authProvider/useAuthActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EAehB,MAAM,0BAA0B,CAAC;AAMlC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,cAAc,EACV,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC,GACH,SAAS,CAAC;IACd,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/E,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACpD,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,EAAE,eAAe,GAAG,WAAW,CAiS/B"}
1
+ {"version":3,"file":"useAuthActions.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/shell/authProvider/useAuthActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EAehB,MAAM,0BAA0B,CAAC;AAMlC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,cAAc,EACV,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC,GACH,SAAS,CAAC;IACd,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/E,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACpD,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,EAAE,eAAe,GAAG,WAAW,CAkT/B"}
@@ -75,21 +75,23 @@ function b({ user: b, tokens: x, activeId: S, bridgeSyncInProgress: C, onRefresh
75
75
  P,
76
76
  D
77
77
  ]), R = y(async () => {
78
- if (!(!x?.refreshToken || !w || !S)) {
78
+ if (!w || !S) return;
79
+ let e = x?.refreshToken ?? t(S)?.refreshToken ?? void 0;
80
+ if (e) {
79
81
  M(!0);
80
82
  try {
81
- let e = await w(x.refreshToken), t = v(e.accessToken), n = e.expiresAt ?? t ?? Date.now() + 3600 * 1e3, r = {
82
- accessToken: e.accessToken,
83
- refreshToken: e.refreshToken ?? x.refreshToken,
84
- expiresAt: n
83
+ let t = await w(e), n = v(t.accessToken), r = t.expiresAt ?? n ?? Date.now() + 1440 * 60 * 1e3, i = {
84
+ accessToken: t.accessToken,
85
+ refreshToken: t.refreshToken ?? e,
86
+ expiresAt: r
85
87
  };
86
- O(r), u(S, r), C.current || g()?.notifyTokenRefresh({
87
- accessToken: r.accessToken,
88
- refreshToken: r.refreshToken,
89
- expiresAt: r.expiresAt
88
+ O(i), u(S, i), C.current || g()?.notifyTokenRefresh({
89
+ accessToken: i.accessToken,
90
+ refreshToken: i.refreshToken,
91
+ expiresAt: i.expiresAt
90
92
  });
91
93
  } catch (e) {
92
- console.error("Failed to refresh token:", e), I(), T?.();
94
+ console.error("Failed to refresh token:", e), x?.expiresAt && x.expiresAt - Date.now() > 0 || (I(), T?.());
93
95
  } finally {
94
96
  M(!1);
95
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenExpiryTimer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/shell/authProvider/useTokenExpiryTimer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,cAAc,EACV,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC,GACH,SAAS,CAAC;IACd,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAChD,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,kBAAkB,GACnB,EAAE,oBAAoB,GAAG,IAAI,CAoD7B"}
1
+ {"version":3,"file":"useTokenExpiryTimer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/shell/authProvider/useTokenExpiryTimer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,cAAc,EACV,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC,GACH,SAAS,CAAC;IACd,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAChD,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,kBAAkB,GACnB,EAAE,oBAAoB,GAAG,IAAI,CAkE7B"}
@@ -3,27 +3,27 @@ import { useEffect as e } from "react";
3
3
  function t({ tokens: t, onRefreshToken: n, onTokenExpired: r, onSessionExpiringSoon: i, refreshAccessToken: a }) {
4
4
  e(() => {
5
5
  if (!t?.expiresAt) return;
6
- let e = t.expiresAt - Date.now();
6
+ let e = t.expiresAt - Date.now(), o = !!n;
7
7
  if (e <= 0) {
8
- n && t?.refreshToken ? a() : r?.();
8
+ o ? a() : r?.();
9
9
  return;
10
10
  }
11
- let o = [];
12
- if (n && t?.refreshToken) {
11
+ let s = [];
12
+ if (o) {
13
13
  let t = Math.max(0, e - 300 * 1e3);
14
- o.push(setTimeout(() => {
14
+ s.push(setTimeout(() => {
15
15
  a();
16
16
  }, t));
17
17
  }
18
18
  if (i) {
19
19
  let t = Math.max(0, e - 300 * 1e3);
20
- o.push(setTimeout(() => {
20
+ s.push(setTimeout(() => {
21
21
  i();
22
22
  }, t));
23
23
  }
24
- return (!n || !t?.refreshToken) && o.push(setTimeout(() => {
24
+ return s.push(setTimeout(() => {
25
25
  r?.();
26
- }, e)), () => o.forEach(clearTimeout);
26
+ }, e)), () => s.forEach(clearTimeout);
27
27
  }, [
28
28
  t?.expiresAt,
29
29
  t?.refreshToken,
@@ -35,7 +35,7 @@ function d(e) {
35
35
  }), v = a(({ error: e }) => {
36
36
  let t = e.errors;
37
37
  t ? t.forEach((e) => {
38
- console.error(`[GraphQL error]: Message: ${e.message}, Location: ${JSON.stringify(e.locations)}, Path: ${e.path}`), (e.extensions?.code === "UNAUTHENTICATED" || e.extensions?.code === "FORBIDDEN") && f?.();
38
+ console.error(`[GraphQL error]: Message: ${e.message}, Location: ${JSON.stringify(e.locations)}, Path: ${e.path}`), e.extensions?.code === "UNAUTHENTICATED" && f?.();
39
39
  }) : e && (console.error(`[Network error]: ${e.message}`), p?.(e));
40
40
  }), y = s((e, { headers: t }) => {
41
41
  let n = d?.();
@@ -1 +1 @@
1
- {"version":3,"file":"authErrorHandling.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/authErrorHandling.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAoBzE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAOxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAiBnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI,GAAG,SAAS,GACrD,OAAO,CAET;AAED,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,YAAY,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnC,2DAA2D;IAC3D,cAAc,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuFtF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,EAAE,SAAS,SAAgB,GAAG,IAAI,CAW5F"}
1
+ {"version":3,"file":"authErrorHandling.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/authErrorHandling.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAoBzE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAOxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAqBnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI,GAAG,SAAS,GACrD,OAAO,CAET;AAED,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,YAAY,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnC,2DAA2D;IAC3D,cAAc,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CA+HtF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,EAAE,SAAS,SAAgB,GAAG,IAAI,CAW5F"}
@@ -16,11 +16,11 @@ function r(e) {
16
16
  }
17
17
  function i(e) {
18
18
  let t = e.message.toLowerCase();
19
- return t.includes("401") || t.includes("unauthorized") || t.includes("unauthenticated");
19
+ return /\b401\b/.test(t) || /\bunauthorized\b/.test(t) || /\bunauthenticated\b/.test(t);
20
20
  }
21
21
  function a(e) {
22
22
  let t = typeof e.extensions?.code == "string" ? e.extensions.code : "", n = typeof e.extensions?.errorCode == "string" ? e.extensions.errorCode : "", r = e.message?.toLowerCase() ?? "";
23
- return t === "UNAUTHENTICATED" || n === "TOKEN_EXPIRED" || r.includes("token_expired") || r.includes("token expired") || r.includes("session expired") || r.includes("unauthorized") || r.includes("unauthenticated") || r.includes("authentication required") || r.includes("workspace context missing");
23
+ return t === "UNAUTHENTICATED" || n === "TOKEN_EXPIRED" || r.includes("token_expired") || r.includes("token expired") || r.includes("session expired");
24
24
  }
25
25
  function o(e) {
26
26
  return Array.isArray(e) && e.some((e) => a(e));
@@ -41,7 +41,12 @@ async function s(t) {
41
41
  } catch {}
42
42
  if (!s) return !1;
43
43
  i.current = !0;
44
- let c = (async () => {
44
+ let c = new Set([
45
+ "INVALID_REFRESH_TOKEN",
46
+ "REFRESH_TOKEN_EXPIRED",
47
+ "SESSION_REVOKED",
48
+ "UNAUTHENTICATED"
49
+ ]), l = async () => {
45
50
  try {
46
51
  let t = await e({
47
52
  gateway: "global",
@@ -50,20 +55,30 @@ async function s(t) {
50
55
  query: "mutation RefreshToken($token: String!) {\n refreshToken(token: $token) {\n accessToken\n refreshToken\n expiresIn\n }\n }",
51
56
  variables: { token: s }
52
57
  });
53
- if (t.errors?.length) throw Error(t.errors[0].message ?? "Token refresh failed");
54
- let i = t.data.refreshToken, a = i.expiresIn ? Date.now() + i.expiresIn * 1e3 : Date.now() + 3600 * 1e3, c = {
58
+ if (t.errors?.length) {
59
+ let e = t.errors[0]?.extensions ?? {}, n = typeof e.code == "string" ? e.code : "", r = typeof e.errorCode == "string" ? e.errorCode : "", i = (n || r).toUpperCase();
60
+ return i && c.has(i) ? "auth-rejected" : "transient";
61
+ }
62
+ let i = t.data?.refreshToken;
63
+ if (!i?.accessToken) return "transient";
64
+ let a = i.expiresIn ? Date.now() + i.expiresIn * 1e3 : Date.now() + 1440 * 60 * 1e3, l = {
55
65
  accessToken: i.accessToken,
56
66
  refreshToken: i.refreshToken ?? s,
57
67
  expiresAt: a
58
68
  };
59
- return localStorage.setItem(`${n}-${o}-tokens`, JSON.stringify(c)), window.dispatchEvent(new Event("bf-profile-storage-change")), !0;
69
+ return localStorage.setItem(`${n}-${o}-tokens`, JSON.stringify(l)), window.dispatchEvent(new Event("bf-profile-storage-change")), "ok";
60
70
  } catch (e) {
61
- return console.error("[Auth] Token refresh failed:", e), !1;
71
+ return console.warn("[Auth] Token refresh attempt failed (will retry):", e), "transient";
72
+ }
73
+ }, u = (async () => {
74
+ try {
75
+ let e = await l();
76
+ return e === "transient" && (await new Promise((e) => setTimeout(e, 800)), e = await l()), e !== "ok" && console.error("[Auth] Token refresh failed:", e), e === "ok";
62
77
  } finally {
63
78
  i.current = !1, a.current = null;
64
79
  }
65
80
  })();
66
- return a.current = c.then(() => {}), c;
81
+ return a.current = u.then(() => {}), u;
67
82
  }
68
83
  function c(e, t = "/auth/login") {
69
84
  if (window.location.pathname.startsWith("/auth/")) return;
@@ -1,4 +1,11 @@
1
1
  export declare const BACKEND_ERROR_EVENT: "burdenoff:backend-error";
2
+ export declare const CONNECTION_STATUS_EVENT: "burdenoff:connection-status";
3
+ export interface ConnectionStatusDetail {
4
+ /** true = connectivity restored, false = server unreachable / degraded */
5
+ online: boolean;
6
+ /** epoch ms when this status was observed */
7
+ since: number;
8
+ }
2
9
  export interface BackendErrorExtensions {
3
10
  code?: string;
4
11
  errorCode?: string;
@@ -32,6 +39,22 @@ export interface ExtractBackendErrorOptions {
32
39
  operationName?: string;
33
40
  fallbackMessage?: string;
34
41
  }
42
+ /** AbortError in either form — a user/navigation cancellation, never surfaced. */
43
+ export declare function isAbortError(input: unknown): boolean;
44
+ /**
45
+ * True when an error is a pure transport/connectivity failure with no
46
+ * actionable application code — it should be logged + surfaced via the
47
+ * connection indicator, never as a toast. Returns false for AbortError (handled
48
+ * separately/silently), for anything carrying an application GraphQL code, and
49
+ * for auth/authorization HTTP statuses so those paths are preserved.
50
+ */
51
+ export declare function isTransportError(input: unknown): boolean;
52
+ /**
53
+ * Signal that connectivity is healthy again. Called from the GraphQL success
54
+ * paths; clears the connection indicator exactly once on recovery. No-op when
55
+ * the connection was never marked degraded.
56
+ */
57
+ export declare function markConnectionHealthy(): void;
35
58
  export declare function extractBackendError(input: unknown, options?: ExtractBackendErrorOptions): BackendErrorDisplay | null;
36
59
  export declare function isBackendErrorDisplay(value: unknown): value is BackendErrorDisplay;
37
60
  export declare function shouldToastBackendError(error: BackendErrorDisplay | null): error is BackendErrorDisplay;
@@ -1 +1 @@
1
- {"version":3,"file":"backendErrors.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/backendErrors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,EAAG,yBAAkC,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+LD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,GAAG,IAAI,CAmC5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAChC,KAAK,IAAI,mBAAmB,CAmB9B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,0BAA+B,GACvC,IAAI,CAYN"}
1
+ {"version":3,"file":"backendErrors.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/backendErrors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,EAAG,yBAAkC,CAAC;AAQtE,eAAO,MAAM,uBAAuB,EAAG,6BAAsC,CAAC;AAE9E,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,MAAM,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA6ID,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD;AA8BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqBxD;AAiCD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAU5C;AAmHD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,GAAG,IAAI,CAmC5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAChC,KAAK,IAAI,mBAAmB,CA0B9B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,0BAA+B,GACvC,IAAI,CAuBN"}