tempest-react-sdk 0.81.0 → 0.82.0

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 (179) hide show
  1. package/README.md +5 -6
  2. package/bin/create-tempest-app.e2e.test.mjs +31 -0
  3. package/bin/create-tempest-app.mjs +11 -1
  4. package/bin/lib/doctor/doctor.e2e.test.mjs +29 -0
  5. package/bin/lib/doctor/vitest.mjs +120 -0
  6. package/bin/lib/doctor/vitest.test.mjs +139 -0
  7. package/bin/lib/fs/contain.mjs +7 -0
  8. package/bin/lib/openapi/escape.mjs +68 -4
  9. package/bin/lib/openapi/generate.hostile.test.mjs +137 -0
  10. package/bin/lib/openapi/generate.mjs +78 -13
  11. package/bin/lib/openapi/pattern-risk.mjs +134 -0
  12. package/bin/lib/openapi/pattern-risk.test.mjs +45 -0
  13. package/bin/tempest-gen.test.mjs +100 -0
  14. package/bin/tempest.mjs +24 -8
  15. package/dist/access/use-can.cjs +1 -1
  16. package/dist/access/use-can.cjs.map +1 -1
  17. package/dist/access/use-can.js +25 -28
  18. package/dist/access/use-can.js.map +1 -1
  19. package/dist/auth/create-tempest-auth.cjs +1 -1
  20. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  21. package/dist/auth/create-tempest-auth.js +192 -149
  22. package/dist/auth/create-tempest-auth.js.map +1 -1
  23. package/dist/auth/session-identity.cjs +2 -0
  24. package/dist/auth/session-identity.cjs.map +1 -0
  25. package/dist/auth/session-identity.js +12 -0
  26. package/dist/auth/session-identity.js.map +1 -0
  27. package/dist/br/boleto.cjs.map +1 -1
  28. package/dist/br/boleto.js.map +1 -1
  29. package/dist/components/AuthForm/AuthLinks.cjs +1 -1
  30. package/dist/components/AuthForm/AuthLinks.cjs.map +1 -1
  31. package/dist/components/AuthForm/AuthLinks.js +18 -15
  32. package/dist/components/AuthForm/AuthLinks.js.map +1 -1
  33. package/dist/components/AuthPage/AuthPage.cjs +1 -1
  34. package/dist/components/AuthPage/AuthPage.cjs.map +1 -1
  35. package/dist/components/AuthPage/AuthPage.js +58 -52
  36. package/dist/components/AuthPage/AuthPage.js.map +1 -1
  37. package/dist/components/Breadcrumbs/Breadcrumbs.cjs +1 -1
  38. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  39. package/dist/components/Breadcrumbs/Breadcrumbs.js +22 -21
  40. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  41. package/dist/components/Button/Button.cjs +1 -1
  42. package/dist/components/Button/Button.cjs.map +1 -1
  43. package/dist/components/Button/Button.js +41 -40
  44. package/dist/components/Button/Button.js.map +1 -1
  45. package/dist/components/Chat/ChatAttachments.cjs +1 -1
  46. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  47. package/dist/components/Chat/ChatAttachments.js +38 -38
  48. package/dist/components/Form/Form.cjs +1 -1
  49. package/dist/components/Form/Form.cjs.map +1 -1
  50. package/dist/components/Form/Form.js +30 -32
  51. package/dist/components/Form/Form.js.map +1 -1
  52. package/dist/components/Layout/Layout.cjs +1 -1
  53. package/dist/components/Layout/Layout.cjs.map +1 -1
  54. package/dist/components/Layout/Layout.js +25 -24
  55. package/dist/components/Layout/Layout.js.map +1 -1
  56. package/dist/components/Layout/gap.cjs +2 -0
  57. package/dist/components/Layout/gap.cjs.map +1 -0
  58. package/dist/components/Layout/gap.js +15 -0
  59. package/dist/components/Layout/gap.js.map +1 -0
  60. package/dist/components/NavigationMenu/NavigationMenu.cjs +1 -1
  61. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  62. package/dist/components/NavigationMenu/NavigationMenu.js +71 -70
  63. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  64. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  65. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  66. package/dist/components/Sidebar/SidebarEntry.cjs +1 -1
  67. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  68. package/dist/components/Sidebar/SidebarEntry.js +30 -29
  69. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  70. package/dist/data/create-data-provider.cjs +1 -1
  71. package/dist/data/create-data-provider.cjs.map +1 -1
  72. package/dist/data/create-data-provider.js +1 -2
  73. package/dist/data/create-data-provider.js.map +1 -1
  74. package/dist/forms/validate-form.cjs +1 -1
  75. package/dist/forms/validate-form.cjs.map +1 -1
  76. package/dist/forms/validate-form.js +6 -1
  77. package/dist/forms/validate-form.js.map +1 -1
  78. package/dist/forms/zod-resolver.cjs +1 -1
  79. package/dist/forms/zod-resolver.cjs.map +1 -1
  80. package/dist/forms/zod-resolver.js +8 -3
  81. package/dist/forms/zod-resolver.js.map +1 -1
  82. package/dist/http/api-client.cjs +1 -1
  83. package/dist/http/api-client.cjs.map +1 -1
  84. package/dist/http/api-client.js +90 -72
  85. package/dist/http/api-client.js.map +1 -1
  86. package/dist/http/credential-scope.cjs +1 -1
  87. package/dist/http/credential-scope.cjs.map +1 -1
  88. package/dist/http/credential-scope.js +33 -9
  89. package/dist/http/credential-scope.js.map +1 -1
  90. package/dist/http/presigned-post.cjs.map +1 -1
  91. package/dist/http/presigned-post.js.map +1 -1
  92. package/dist/http/resumable-upload.cjs +1 -1
  93. package/dist/http/resumable-upload.cjs.map +1 -1
  94. package/dist/http/resumable-upload.js +90 -84
  95. package/dist/http/resumable-upload.js.map +1 -1
  96. package/dist/http/upload-with-progress.cjs +1 -1
  97. package/dist/http/upload-with-progress.cjs.map +1 -1
  98. package/dist/http/upload-with-progress.js +8 -8
  99. package/dist/http/upload-with-progress.js.map +1 -1
  100. package/dist/oauth/GoogleSignIn.cjs +1 -1
  101. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  102. package/dist/oauth/GoogleSignIn.js +5 -4
  103. package/dist/oauth/GoogleSignIn.js.map +1 -1
  104. package/dist/offline/create-offline-sync.cjs +1 -1
  105. package/dist/offline/create-offline-sync.cjs.map +1 -1
  106. package/dist/offline/create-offline-sync.js +87 -69
  107. package/dist/offline/create-offline-sync.js.map +1 -1
  108. package/dist/query/offline-persistence.cjs +1 -1
  109. package/dist/query/offline-persistence.cjs.map +1 -1
  110. package/dist/query/offline-persistence.js +54 -44
  111. package/dist/query/offline-persistence.js.map +1 -1
  112. package/dist/sse/create-event-stream.cjs +1 -1
  113. package/dist/sse/create-event-stream.cjs.map +1 -1
  114. package/dist/sse/create-event-stream.js +48 -41
  115. package/dist/sse/create-event-stream.js.map +1 -1
  116. package/dist/sse/ticket-event-stream.cjs +1 -1
  117. package/dist/sse/ticket-event-stream.cjs.map +1 -1
  118. package/dist/sse/ticket-event-stream.js +48 -19
  119. package/dist/sse/ticket-event-stream.js.map +1 -1
  120. package/dist/sse/use-event-stream.cjs +1 -1
  121. package/dist/sse/use-event-stream.cjs.map +1 -1
  122. package/dist/sse/use-event-stream.js +19 -14
  123. package/dist/sse/use-event-stream.js.map +1 -1
  124. package/dist/sw/background-sync.cjs +1 -1
  125. package/dist/sw/background-sync.cjs.map +1 -1
  126. package/dist/sw/background-sync.js +10 -8
  127. package/dist/sw/background-sync.js.map +1 -1
  128. package/dist/sw/cache.cjs +1 -1
  129. package/dist/sw/cache.cjs.map +1 -1
  130. package/dist/sw/cache.js +36 -30
  131. package/dist/sw/cache.js.map +1 -1
  132. package/dist/sw/create-push-handler.cjs +1 -1
  133. package/dist/sw/create-push-handler.cjs.map +1 -1
  134. package/dist/sw/create-push-handler.js +20 -10
  135. package/dist/sw/create-push-handler.js.map +1 -1
  136. package/dist/sw.d.ts +44 -13
  137. package/dist/tabular/compact.cjs +1 -1
  138. package/dist/tabular/compact.cjs.map +1 -1
  139. package/dist/tabular/compact.js +35 -16
  140. package/dist/tabular/compact.js.map +1 -1
  141. package/dist/tabular/manifest.cjs +1 -1
  142. package/dist/tabular/manifest.cjs.map +1 -1
  143. package/dist/tabular/manifest.js +33 -15
  144. package/dist/tabular/manifest.js.map +1 -1
  145. package/dist/tabular.d.ts +11 -1
  146. package/dist/tempest-react-sdk.cjs +1 -1
  147. package/dist/tempest-react-sdk.d.ts +457 -68
  148. package/dist/tempest-react-sdk.js +224 -224
  149. package/dist/theme/initial-theme.cjs +4 -4
  150. package/dist/theme/initial-theme.cjs.map +1 -1
  151. package/dist/theme/initial-theme.js +8 -5
  152. package/dist/theme/initial-theme.js.map +1 -1
  153. package/dist/utils/compressed-storage.cjs +1 -1
  154. package/dist/utils/compressed-storage.cjs.map +1 -1
  155. package/dist/utils/compressed-storage.js +13 -7
  156. package/dist/utils/compressed-storage.js.map +1 -1
  157. package/dist/utils/objects.cjs +1 -1
  158. package/dist/utils/objects.cjs.map +1 -1
  159. package/dist/utils/objects.js +13 -7
  160. package/dist/utils/objects.js.map +1 -1
  161. package/dist/utils/safe-url.cjs +1 -1
  162. package/dist/utils/safe-url.cjs.map +1 -1
  163. package/dist/utils/safe-url.js +4 -1
  164. package/dist/utils/safe-url.js.map +1 -1
  165. package/dist/webrtc/peer-mesh.cjs +1 -1
  166. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  167. package/dist/webrtc/peer-mesh.js +7 -1
  168. package/dist/webrtc/peer-mesh.js.map +1 -1
  169. package/dist/ws/create-web-socket.cjs +1 -1
  170. package/dist/ws/create-web-socket.cjs.map +1 -1
  171. package/dist/ws/create-web-socket.js +77 -61
  172. package/dist/ws/create-web-socket.js.map +1 -1
  173. package/dist/ws/use-web-socket.cjs +1 -1
  174. package/dist/ws/use-web-socket.cjs.map +1 -1
  175. package/dist/ws/use-web-socket.js +4 -3
  176. package/dist/ws/use-web-socket.js.map +1 -1
  177. package/package.json +1 -1
  178. package/template-pwa/src/pwa.tsx +42 -0
  179. package/template-pwa/src/sw.ts +5 -4
@@ -1,11 +1,12 @@
1
1
  import { isDevBuild as e } from "../utils/dev-mode.js";
2
2
  import { SessionSupersededError as t } from "../http/errors.js";
3
3
  import { createApiClient as n } from "../http/api-client.js";
4
- import { createAuthStore as r } from "./create-auth-store.js";
5
- import { createRefreshQueue as i } from "./refresh-queue.js";
4
+ import { bindSessionIdentity as r } from "./session-identity.js";
5
+ import { createAuthStore as i } from "./create-auth-store.js";
6
+ import { createRefreshQueue as a } from "./refresh-queue.js";
6
7
  //#region src/auth/create-tempest-auth.ts
7
- var a = 1e4;
8
- function o(e, t) {
8
+ var o = 1e4, s = 1e4;
9
+ function c(e, t) {
9
10
  return e.length === 0 ? Promise.resolve() : new Promise((n) => {
10
11
  let r = setTimeout(n, t);
11
12
  Promise.allSettled(e).then(() => {
@@ -13,152 +14,186 @@ function o(e, t) {
13
14
  });
14
15
  });
15
16
  }
16
- function s(e) {
17
+ function ee() {
18
+ let e = globalThis.crypto;
19
+ return typeof e?.randomUUID == "function" ? e.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
20
+ }
21
+ var te = "unlineaged", l = /* @__PURE__ */ new Set();
22
+ function ne(t) {
23
+ e() && !l.has(t) && (l.add(t), console.warn("[tempest-react-sdk] createTempestAuth: withCredentials is set without logoutPath. logout() cannot clear the HttpOnly refresh cookie, so the next refresh() — the boot restore — signs the same account back in. Pass logoutPath (the backend's cookie logout route) so the server revokes it."));
24
+ }
25
+ function re(e) {
17
26
  let t = e ?? {};
18
27
  return {
19
28
  token: t.access_token,
20
29
  refreshToken: t.refresh_token
21
30
  };
22
31
  }
23
- function c(c) {
24
- let { baseURL: l, prefix: u, loginPath: d = "/api/auth/login", refreshPath: ee = "/api/auth/refresh", logoutPath: f, onLogoutError: te, mePath: p, storeName: m = "tempest-auth", storage: h = "local", withCredentials: g = !1, csrf: _, fetcher: v, parseTokens: y = s, parseUser: ne, refreshBody: b = (e) => e ? { refresh_token: e } : void 0, retry: re, redirectTo: x, onSessionEnd: S } = c, C = r({
32
+ function u(l) {
33
+ let { baseURL: u, prefix: d, loginPath: ie = "/api/auth/login", refreshPath: ae = "/api/auth/refresh", logoutPath: f, onLogoutError: oe, mePath: p, storeName: m = "tempest-auth", storage: h = "local", withCredentials: g = !1, csrf: _, fetcher: se, parseTokens: v = re, parseUser: ce, refreshBody: y = (e) => e ? { refresh_token: e } : void 0, retry: le, redirectTo: b, onSessionEnd: x } = l;
34
+ g && !f && ne(m);
35
+ let S = i({
25
36
  name: m,
26
37
  storage: h
27
- }), w = `${m}-refresh`;
28
- function T() {
38
+ }), C = `${m}-refresh`;
39
+ function w() {
29
40
  return typeof window > "u" ? null : h === "session" ? window.sessionStorage : window.localStorage;
30
41
  }
31
- function E() {
32
- return T()?.getItem(w) ?? null;
42
+ function T() {
43
+ return w()?.getItem(C) ?? null;
44
+ }
45
+ let E = T();
46
+ function D(e) {
47
+ E = e;
48
+ let t = w();
49
+ t && (e ? t.setItem(C, e) : t.removeItem(C));
33
50
  }
34
- let D = E();
35
- function O(e) {
36
- D = e;
37
- let t = T();
38
- t && (e ? t.setItem(w, e) : t.removeItem(w));
51
+ let O = `${m}-lineage`, ue = `tempest-react-sdk:${m}:refresh`, k = w()?.getItem(O) ?? null;
52
+ function A(e) {
53
+ k = e;
54
+ let t = w();
55
+ t && (e ? t.setItem(O, e) : t.removeItem(O));
39
56
  }
40
- let k = () => C.getState(), A = () => k().token;
41
- async function ie() {
42
- if (!p) return k().user;
43
- let e = j, n;
57
+ let j = () => S.getState(), M = () => j().token;
58
+ async function de() {
59
+ if (!p) return j().user;
60
+ let e = N, n;
44
61
  try {
45
- n = await Z.get(p, { skipAuthRetry: !0 });
62
+ n = await Q.get(p, { skipAuthRetry: !0 });
46
63
  } catch (n) {
47
- throw j === e ? n : new t();
64
+ throw N === e ? n : new t();
48
65
  }
49
- if (j !== e) throw new t();
50
- return k().setUser(n), n;
66
+ if (N !== e || !Z().continues) throw new t();
67
+ return j().setUser(n), n;
51
68
  }
52
- let j = 0, M = Promise.resolve(), N = 0, P = /* @__PURE__ */ new Set(), F = /* @__PURE__ */ new Set(), I = /* @__PURE__ */ new Set(), L = /* @__PURE__ */ new Set();
53
- function R(e) {
69
+ let N = 0, P = Promise.resolve(), F = 0, I = /* @__PURE__ */ new Set(), L = /* @__PURE__ */ new Set(), R = /* @__PURE__ */ new Set(), z = /* @__PURE__ */ new Set();
70
+ function B(e) {
54
71
  let t = e.then(() => void 0, () => void 0);
55
- return I.add(t), t.then(() => I.delete(t)), e;
72
+ return R.add(t), t.then(() => R.delete(t)), e;
56
73
  }
57
- function ae(t) {
74
+ function fe(t) {
58
75
  e() && console.warn("[tempest-react-sdk] createTempestAuth: logoutPath revocation failed", t);
59
76
  try {
60
- te?.(t);
77
+ oe?.(t);
61
78
  } catch {
62
79
  return;
63
80
  }
64
81
  }
65
- function z(e) {
82
+ function V(e) {
66
83
  let t = (async () => {
67
84
  try {
68
85
  await e();
69
86
  } catch (e) {
70
- ae(e);
87
+ fe(e);
71
88
  }
72
89
  })();
73
- return F.add(t), t.then(() => F.delete(t)), t;
90
+ return L.add(t), t.then(() => L.delete(t)), t;
74
91
  }
75
- function B(e, t) {
76
- f && !g && t && z(() => V(e).post(f, { body: b(t) }));
92
+ function H(e, t) {
93
+ f && !g && t && V(() => U(e).post(f, { body: y(t) }));
77
94
  }
78
- function V(e) {
95
+ function U(e) {
79
96
  return n({
80
- baseURL: l,
81
- prefix: u,
97
+ baseURL: u,
98
+ prefix: d,
82
99
  withCredentials: g,
83
100
  csrf: _,
84
- fetcher: v,
101
+ fetcher: se,
85
102
  getToken: () => e
86
103
  });
87
104
  }
88
- function H() {
89
- j += 1, W = i(U);
105
+ function W() {
106
+ N += 1, K = a(G);
90
107
  }
91
- async function U() {
92
- let e = A();
93
- if (!X().continues) throw new t();
94
- if (A() !== e) return;
95
- let n = j;
96
- L.add(n);
108
+ async function G() {
109
+ let e = M(), t = N;
110
+ z.add(t);
97
111
  try {
98
- let e;
99
- try {
100
- e = await R(Z.post(ee, {
101
- body: b(E()),
102
- skipAuth: !0
103
- }));
104
- } catch (e) {
105
- throw j === n ? e : new t();
106
- }
107
- let { token: r, refreshToken: i } = y(e);
108
- if (j !== n || !X().continues) throw B(r ?? null, i), new t();
109
- k().setToken(r), i && O(i);
112
+ await pe(() => me(e));
110
113
  } finally {
111
- L.delete(n);
114
+ z.delete(t);
112
115
  }
113
116
  }
114
- let W = i(U);
115
- function G(e) {
116
- let t = A();
117
+ async function pe(e) {
118
+ let t = h === "local" && typeof navigator < "u" ? navigator.locks : void 0;
119
+ if (!t) return e();
120
+ let n = new AbortController(), r = setTimeout(() => n.abort(), s), i = !1;
121
+ try {
122
+ await t.request(ue, { signal: n.signal }, async () => {
123
+ i = !0, clearTimeout(r), await e();
124
+ });
125
+ } catch (t) {
126
+ if (i) throw t;
127
+ clearTimeout(r), await e();
128
+ }
129
+ }
130
+ async function me(e) {
131
+ let n = e !== null || j().user !== null || E !== null, r = Z();
132
+ if (!n && M() !== null) return;
133
+ if (!r.continues) throw new t();
134
+ if (M() !== e) return;
135
+ let i = N, a;
136
+ try {
137
+ a = await B(Q.post(ae, {
138
+ body: y(T()),
139
+ skipAuth: !0
140
+ }));
141
+ } catch (e) {
142
+ throw N === i ? e : new t();
143
+ }
144
+ let { token: o, refreshToken: s } = v(a);
145
+ if (N !== i || !Z().continues) throw H(o ?? null, s), new t();
146
+ j().setToken(o), s && D(s);
147
+ }
148
+ let K = a(G);
149
+ function q(e) {
150
+ let t = M();
117
151
  return t === null ? !1 : e.token === null || e.token !== t;
118
152
  }
119
- function K() {
120
- return A() === null && E() === null;
153
+ function J() {
154
+ return M() === null && T() === null;
121
155
  }
122
- async function q() {
123
- if (!(P.size > 0 && N === 0 && (await Promise.allSettled([...P]), A() !== null))) throw Error("anonymous 401 with no session");
156
+ async function he() {
157
+ if (!(I.size > 0 && F === 0 && (await Promise.allSettled([...I]), M() !== null))) throw Error("anonymous 401 with no session");
124
158
  }
125
- async function oe(e) {
126
- if (e.epoch !== null && e.epoch !== j) throw new t();
127
- if (G(e)) {
159
+ async function ge(e) {
160
+ if (e.epoch !== null && e.epoch !== N) throw new t();
161
+ if (q(e)) {
128
162
  if (e.token === null) throw Error("anonymous 401 under a live session");
129
- } else return e.token === null && K() ? L.has(j) ? W() : q() : W();
163
+ } else return e.token === null && J() ? z.has(N) ? K() : he() : K();
130
164
  }
131
- async function se(e, n) {
132
- if (n.epoch !== null && n.epoch !== j || !X().continues) throw new t();
133
- G(n) || n.token === null && K() || await pe();
165
+ async function _e(e, n) {
166
+ if (n.epoch !== null && n.epoch !== N || !Z().continues) throw new t();
167
+ q(n) || n.token === null && J() || await Ce();
134
168
  }
135
- async function ce(e) {
136
- F.size > 0 && await o([...F], a);
137
- let t = le(e);
138
- P.add(t);
169
+ async function ve(e) {
170
+ L.size > 0 && await c([...L], o);
171
+ let t = ye(e);
172
+ I.add(t);
139
173
  try {
140
174
  return await t;
141
175
  } finally {
142
- P.delete(t);
176
+ I.delete(t);
143
177
  }
144
178
  }
145
- async function le(e) {
146
- let n = j, r = await R(Z.post(d, {
179
+ async function ye(e) {
180
+ let n = N, r = await B(Q.post(ie, {
147
181
  body: e,
148
182
  skipAuth: !0
149
- })), { token: i, refreshToken: a } = y(r);
150
- if (j !== n) throw B(i ?? null, a), new t();
151
- let { done: o } = J("switch"), s = j;
152
- if (await o.catch(() => void 0), j !== s) throw new t();
153
- k().setToken(i), O(a ?? null);
154
- let c = ne?.(r);
155
- return c == null ? ie() : (k().setUser(c), c);
183
+ })), { token: i, refreshToken: a } = v(r);
184
+ if (N !== n) throw H(i ?? null, a), new t();
185
+ H(M(), T() ?? void 0);
186
+ let { done: o } = Y("switch"), s = N;
187
+ if (await o.catch(() => void 0), N !== s) throw new t();
188
+ A(ee()), j().setToken(i), D(a ?? null);
189
+ let c = ce?.(r);
190
+ return c == null ? de() : (j().setUser(c), c);
156
191
  }
157
- function J(e) {
158
- let { user: t, token: n } = k(), r = n !== null || t !== null || E() !== null;
159
- return (r || e !== "expired") && H(), k().logout(), O(null), r ? {
192
+ function Y(e) {
193
+ let { user: t, token: n } = j(), r = n !== null || t !== null || T() !== null;
194
+ return (r || e !== "expired") && W(), j().logout(), D(null), A(null), r ? {
160
195
  live: r,
161
- done: Y({
196
+ done: X({
162
197
  reason: e,
163
198
  user: t,
164
199
  token: n,
@@ -166,124 +201,132 @@ function c(c) {
166
201
  })
167
202
  } : {
168
203
  live: r,
169
- done: e === "switch" || N === 0 ? M : Promise.resolve()
204
+ done: e === "switch" || F === 0 ? P : Promise.resolve()
170
205
  };
171
206
  }
172
- function Y(e) {
173
- if (!S) return Promise.resolve();
174
- let t = V(e.token);
175
- N += 1;
207
+ function X(e) {
208
+ if (!x) return Promise.resolve();
209
+ let t = U(e.token);
210
+ F += 1;
176
211
  let n = (async () => {
177
212
  try {
178
- await S({
213
+ await x({
179
214
  ...e,
180
215
  api: t
181
216
  });
182
217
  } finally {
183
- --N;
218
+ --F;
184
219
  }
185
220
  })();
186
- return M = n.then(() => void 0, () => void 0), n.then(() => void 0);
221
+ return P = n.then(() => void 0, () => void 0), n.then(() => void 0);
187
222
  }
188
- function ue() {
189
- let e = T();
223
+ function be() {
224
+ let e = w();
190
225
  if (!e) return null;
191
- let t = e.getItem(w), n = e.getItem(m);
192
- if (!n) return {
226
+ let t = e.getItem(C), n = e.getItem(O), r = e.getItem(m);
227
+ if (!r) return {
193
228
  user: null,
194
229
  token: null,
195
- refreshToken: t
230
+ refreshToken: t,
231
+ lineage: n
196
232
  };
197
233
  try {
198
- let e = JSON.parse(n);
234
+ let e = JSON.parse(r);
199
235
  return {
200
236
  user: e.state?.user ?? null,
201
237
  token: e.state?.token ?? null,
202
- refreshToken: t
238
+ refreshToken: t,
239
+ lineage: n
203
240
  };
204
241
  } catch {
205
242
  return {
206
243
  user: null,
207
244
  token: null,
208
- refreshToken: t
245
+ refreshToken: t,
246
+ lineage: n
209
247
  };
210
248
  }
211
249
  }
212
- function X() {
213
- let e = ue(), { user: t, token: n } = k();
250
+ function Z() {
251
+ let e = be(), { user: t, token: n } = j();
214
252
  if (e === null) return {
215
253
  continues: !0,
216
254
  done: Promise.resolve()
217
255
  };
218
256
  let r = JSON.stringify(e.user) === JSON.stringify(t);
219
- if (e.token === n && e.refreshToken === D && r) return {
257
+ if (e.token === n && e.refreshToken === E && e.lineage === k && r) return {
220
258
  continues: !0,
221
259
  done: Promise.resolve()
222
260
  };
223
- let i = e.token !== null && (e.token === n || n !== null && r), a = n !== null || t !== null || D !== null;
224
- if (i || H(), D = e.refreshToken, C.setState({
261
+ let i = e.lineage !== null || k !== null ? e.lineage === k : e.token === n || n !== null && r, a = e.token !== null && i, o = n !== null || t !== null || E !== null;
262
+ if (a || W(), E = e.refreshToken, k = e.lineage, S.setState({
225
263
  user: e.user,
226
264
  token: e.token,
227
265
  isAuthenticated: e.token !== null
228
- }), i || !a) return {
229
- continues: i,
266
+ }), a || !o) return {
267
+ continues: a,
230
268
  done: Promise.resolve()
231
269
  };
232
- let o = Y({
270
+ let s = X({
233
271
  reason: e.token === null ? "logout" : "switch",
234
272
  user: t,
235
273
  token: n,
236
274
  elsewhere: !0
237
275
  });
238
- return o.catch(() => void 0), {
239
- continues: i,
240
- done: o
276
+ return s.catch(() => void 0), {
277
+ continues: a,
278
+ done: s
241
279
  };
242
280
  }
243
- function de() {
281
+ function xe() {
244
282
  if (!f) return null;
245
- let e = f, { token: t, user: n } = k(), r = E();
283
+ let e = f, { token: t, user: n } = j(), r = T();
246
284
  if (!g && t === null && n === null && r === null) return null;
247
- let i = g ? [...I] : [];
248
- return z(async () => (await o(i, a), V(t).post(e, { body: b(r) })));
285
+ let i = g ? [...R] : [];
286
+ return V(async () => (await c(i, o), U(t).post(e, { body: y(r) })));
249
287
  }
250
- function fe() {
251
- let e = X();
288
+ function Se() {
289
+ let e = Z();
252
290
  if (!e.continues) return e.done;
253
- let t = de(), { done: n } = J("logout");
291
+ let t = xe(), { done: n } = Y("logout");
254
292
  return t ? Promise.all([t, n]).then(() => void 0) : n;
255
293
  }
256
- async function pe() {
257
- let { live: e, done: t } = J("expired");
258
- await t.catch(() => void 0), e && x && typeof window < "u" && window.location.assign(x);
294
+ async function Ce() {
295
+ let { live: e, done: t } = Y("expired");
296
+ await t.catch(() => void 0), e && b && typeof window < "u" && window.location.assign(b);
259
297
  }
260
- let Z = n({
261
- baseURL: l,
262
- prefix: u,
298
+ let Q = n({
299
+ baseURL: u,
300
+ prefix: d,
263
301
  withCredentials: g,
264
302
  csrf: _,
265
- fetcher: v,
266
- getToken: A,
267
- getSessionEpoch: () => j,
268
- refresh: oe,
269
- retry: re,
270
- onUnauthorized: se
271
- }), me = () => W();
272
- function Q(e) {
273
- e.storageArea === T() && (e.key === null || e.key === m || e.key === w) && X();
303
+ fetcher: se,
304
+ getToken: M,
305
+ getSessionEpoch: () => N,
306
+ refresh: ge,
307
+ retry: le,
308
+ onUnauthorized: _e
309
+ }), we = () => K(), Te = () => M() === null ? null : k ?? te, Ee = {
310
+ current: Te,
311
+ subscribe: (e) => S.subscribe(e)
312
+ };
313
+ r(Q, Ee), r(M, Ee);
314
+ function De(e) {
315
+ e.storageArea === w() && (e.key === null || e.key === m || e.key === C || e.key === O) && Z();
274
316
  }
275
317
  let $ = typeof window > "u" ? null : window;
276
- return $?.addEventListener("storage", Q), {
277
- useAuthStore: C,
278
- api: Z,
279
- login: ce,
280
- logout: fe,
281
- refresh: me,
282
- getToken: A,
283
- dispose: () => $?.removeEventListener("storage", Q)
318
+ return $?.addEventListener("storage", De), {
319
+ useAuthStore: S,
320
+ api: Q,
321
+ login: ve,
322
+ logout: Se,
323
+ refresh: we,
324
+ getToken: M,
325
+ sessionKey: Te,
326
+ dispose: () => $?.removeEventListener("storage", De)
284
327
  };
285
328
  }
286
329
  //#endregion
287
- export { c as createTempestAuth };
330
+ export { u as createTempestAuth };
288
331
 
289
332
  //# sourceMappingURL=create-tempest-auth.js.map