tempest-react-sdk 0.82.0 → 0.83.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.
- package/README.md +6 -6
- package/bin/lib/openapi/generate.hostile.test.mjs +91 -0
- package/bin/lib/openapi/generate.mjs +42 -3
- package/dist/auth/create-tempest-auth.cjs +1 -1
- package/dist/auth/create-tempest-auth.cjs.map +1 -1
- package/dist/auth/create-tempest-auth.js +135 -132
- package/dist/auth/create-tempest-auth.js.map +1 -1
- package/dist/http/resumable-upload.cjs +1 -1
- package/dist/http/resumable-upload.cjs.map +1 -1
- package/dist/http/resumable-upload.js +124 -75
- package/dist/http/resumable-upload.js.map +1 -1
- package/dist/http/upload-with-progress.cjs +1 -1
- package/dist/http/upload-with-progress.cjs.map +1 -1
- package/dist/http/upload-with-progress.js +100 -44
- package/dist/http/upload-with-progress.js.map +1 -1
- package/dist/query/offline-persistence.cjs +1 -1
- package/dist/query/offline-persistence.cjs.map +1 -1
- package/dist/query/offline-persistence.js +57 -44
- package/dist/query/offline-persistence.js.map +1 -1
- package/dist/sw/cache.cjs +1 -1
- package/dist/sw/cache.cjs.map +1 -1
- package/dist/sw/cache.js +82 -32
- package/dist/sw/cache.js.map +1 -1
- package/dist/sw.d.ts +21 -1
- package/dist/tempest-react-sdk.d.ts +90 -6
- package/dist/vite/base-url.cjs +1 -1
- package/dist/vite/base-url.cjs.map +1 -1
- package/dist/vite/base-url.js +5 -1
- package/dist/vite/base-url.js.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.js +96 -31
- package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
- package/dist/vite/tempest-pwa-manifest.cjs +2 -2
- package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
- package/dist/vite/tempest-pwa-manifest.js +32 -16
- package/dist/vite/tempest-pwa-manifest.js.map +1 -1
- package/dist/vite.cjs +1 -1
- package/dist/vite.d.ts +63 -12
- package/dist/vite.js +4 -4
- package/package.json +1 -1
|
@@ -14,67 +14,67 @@ function c(e, t) {
|
|
|
14
14
|
});
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function l() {
|
|
18
18
|
let e = globalThis.crypto;
|
|
19
19
|
return typeof e?.randomUUID == "function" ? e.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
20
20
|
}
|
|
21
|
-
var
|
|
22
|
-
function
|
|
23
|
-
e() && !
|
|
21
|
+
var u = /* @__PURE__ */ new Set();
|
|
22
|
+
function ee(t) {
|
|
23
|
+
e() && !u.has(t) && (u.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
24
|
}
|
|
25
|
-
function
|
|
25
|
+
function te(e) {
|
|
26
26
|
let t = e ?? {};
|
|
27
27
|
return {
|
|
28
28
|
token: t.access_token,
|
|
29
29
|
refreshToken: t.refresh_token
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
-
function u
|
|
33
|
-
let { baseURL:
|
|
34
|
-
|
|
35
|
-
let
|
|
36
|
-
name:
|
|
37
|
-
storage:
|
|
38
|
-
}),
|
|
39
|
-
function w() {
|
|
40
|
-
return typeof window > "u" ? null : h === "session" ? window.sessionStorage : window.localStorage;
|
|
41
|
-
}
|
|
32
|
+
function d(u) {
|
|
33
|
+
let { baseURL: d, prefix: f, loginPath: ne = "/api/auth/login", refreshPath: re = "/api/auth/refresh", logoutPath: p, onLogoutError: ie, mePath: m, storeName: h = "tempest-auth", storage: g = "local", withCredentials: _ = !1, csrf: ae, fetcher: v, parseTokens: y = te, parseUser: oe, refreshBody: b = (e) => e ? { refresh_token: e } : void 0, retry: se, redirectTo: x, onSessionEnd: S } = u;
|
|
34
|
+
_ && !p && ee(h);
|
|
35
|
+
let C = i({
|
|
36
|
+
name: h,
|
|
37
|
+
storage: g
|
|
38
|
+
}), w = `${h}-refresh`;
|
|
42
39
|
function T() {
|
|
43
|
-
return
|
|
40
|
+
return typeof window > "u" ? null : g === "session" ? window.sessionStorage : window.localStorage;
|
|
41
|
+
}
|
|
42
|
+
function E() {
|
|
43
|
+
return T()?.getItem(w) ?? null;
|
|
44
44
|
}
|
|
45
|
-
let
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
let t =
|
|
49
|
-
t && (e ? t.setItem(
|
|
45
|
+
let D = E();
|
|
46
|
+
function O(e) {
|
|
47
|
+
D = e;
|
|
48
|
+
let t = T();
|
|
49
|
+
t && (e ? t.setItem(w, e) : t.removeItem(w));
|
|
50
50
|
}
|
|
51
|
-
let
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
let t =
|
|
55
|
-
t && (e ? t.setItem(
|
|
51
|
+
let k = `${h}-lineage`, ce = `tempest-react-sdk:${h}:refresh`, A = T()?.getItem(k) ?? null;
|
|
52
|
+
function j(e) {
|
|
53
|
+
A = e;
|
|
54
|
+
let t = T();
|
|
55
|
+
t && (e ? t.setItem(k, e) : t.removeItem(k));
|
|
56
56
|
}
|
|
57
|
-
let
|
|
58
|
-
async function
|
|
59
|
-
if (!
|
|
60
|
-
let e =
|
|
57
|
+
let M = () => C.getState(), N = () => M().token;
|
|
58
|
+
async function le() {
|
|
59
|
+
if (!m) return M().user;
|
|
60
|
+
let e = P, n;
|
|
61
61
|
try {
|
|
62
|
-
n = await Q.get(
|
|
62
|
+
n = await Q.get(m, { skipAuthRetry: !0 });
|
|
63
63
|
} catch (n) {
|
|
64
|
-
throw
|
|
64
|
+
throw P === e ? n : new t();
|
|
65
65
|
}
|
|
66
|
-
if (
|
|
67
|
-
return
|
|
66
|
+
if (P !== e || !Z().continues) throw new t();
|
|
67
|
+
return M().setUser(n), n;
|
|
68
68
|
}
|
|
69
|
-
let
|
|
69
|
+
let P = 0, ue = Promise.resolve(), F = 0, I = /* @__PURE__ */ new Set(), L = /* @__PURE__ */ new Set(), R = /* @__PURE__ */ new Set(), z = /* @__PURE__ */ new Set();
|
|
70
70
|
function B(e) {
|
|
71
71
|
let t = e.then(() => void 0, () => void 0);
|
|
72
72
|
return R.add(t), t.then(() => R.delete(t)), e;
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function de(t) {
|
|
75
75
|
e() && console.warn("[tempest-react-sdk] createTempestAuth: logoutPath revocation failed", t);
|
|
76
76
|
try {
|
|
77
|
-
|
|
77
|
+
ie?.(t);
|
|
78
78
|
} catch {
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
@@ -84,42 +84,42 @@ function u(l) {
|
|
|
84
84
|
try {
|
|
85
85
|
await e();
|
|
86
86
|
} catch (e) {
|
|
87
|
-
|
|
87
|
+
de(e);
|
|
88
88
|
}
|
|
89
89
|
})();
|
|
90
90
|
return L.add(t), t.then(() => L.delete(t)), t;
|
|
91
91
|
}
|
|
92
92
|
function H(e, t) {
|
|
93
|
-
|
|
93
|
+
p && !_ && t && V(() => U(e).post(p, { body: b(t) }));
|
|
94
94
|
}
|
|
95
95
|
function U(e) {
|
|
96
96
|
return n({
|
|
97
|
-
baseURL:
|
|
98
|
-
prefix:
|
|
99
|
-
withCredentials:
|
|
100
|
-
csrf:
|
|
101
|
-
fetcher:
|
|
97
|
+
baseURL: d,
|
|
98
|
+
prefix: f,
|
|
99
|
+
withCredentials: _,
|
|
100
|
+
csrf: ae,
|
|
101
|
+
fetcher: v,
|
|
102
102
|
getToken: () => e
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
function W() {
|
|
106
|
-
|
|
106
|
+
P += 1, K = a(G);
|
|
107
107
|
}
|
|
108
108
|
async function G() {
|
|
109
|
-
let e =
|
|
109
|
+
let e = N(), t = P;
|
|
110
110
|
z.add(t);
|
|
111
111
|
try {
|
|
112
|
-
await
|
|
112
|
+
await fe(() => pe(e));
|
|
113
113
|
} finally {
|
|
114
114
|
z.delete(t);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
async function
|
|
118
|
-
let t =
|
|
117
|
+
async function fe(e) {
|
|
118
|
+
let t = g === "local" && typeof navigator < "u" ? navigator.locks : void 0;
|
|
119
119
|
if (!t) return e();
|
|
120
120
|
let n = new AbortController(), r = setTimeout(() => n.abort(), s), i = !1;
|
|
121
121
|
try {
|
|
122
|
-
await t.request(
|
|
122
|
+
await t.request(ce, { signal: n.signal }, async () => {
|
|
123
123
|
i = !0, clearTimeout(r), await e();
|
|
124
124
|
});
|
|
125
125
|
} catch (t) {
|
|
@@ -127,48 +127,48 @@ function u(l) {
|
|
|
127
127
|
clearTimeout(r), await e();
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
async function
|
|
131
|
-
let n = e !== null ||
|
|
132
|
-
if (!n &&
|
|
130
|
+
async function pe(e) {
|
|
131
|
+
let n = e !== null || M().user !== null || D !== null, r = Z();
|
|
132
|
+
if (!n && N() !== null) return;
|
|
133
133
|
if (!r.continues) throw new t();
|
|
134
|
-
if (
|
|
135
|
-
let i =
|
|
134
|
+
if (N() !== e) return;
|
|
135
|
+
let i = P, a;
|
|
136
136
|
try {
|
|
137
|
-
a = await B(Q.post(
|
|
138
|
-
body:
|
|
137
|
+
a = await B(Q.post(re, {
|
|
138
|
+
body: b(E()),
|
|
139
139
|
skipAuth: !0
|
|
140
140
|
}));
|
|
141
141
|
} catch (e) {
|
|
142
|
-
throw
|
|
142
|
+
throw P === i ? e : new t();
|
|
143
143
|
}
|
|
144
|
-
let { token: o, refreshToken: s } =
|
|
145
|
-
if (
|
|
146
|
-
j().setToken(o), s &&
|
|
144
|
+
let { token: o, refreshToken: s } = y(a);
|
|
145
|
+
if (P !== i || !Z().continues) throw H(o ?? null, s), new t();
|
|
146
|
+
n || j(l()), M().setToken(o), s && O(s);
|
|
147
147
|
}
|
|
148
148
|
let K = a(G);
|
|
149
149
|
function q(e) {
|
|
150
|
-
let t =
|
|
150
|
+
let t = N();
|
|
151
151
|
return t === null ? !1 : e.token === null || e.token !== t;
|
|
152
152
|
}
|
|
153
153
|
function J() {
|
|
154
|
-
return
|
|
154
|
+
return N() === null && E() === null;
|
|
155
155
|
}
|
|
156
|
-
async function
|
|
157
|
-
if (!(I.size > 0 && F === 0 && (await Promise.allSettled([...I]),
|
|
156
|
+
async function me() {
|
|
157
|
+
if (!(I.size > 0 && F === 0 && (await Promise.allSettled([...I]), N() !== null))) throw Error("anonymous 401 with no session");
|
|
158
158
|
}
|
|
159
|
-
async function
|
|
160
|
-
if (e.epoch !== null && e.epoch !==
|
|
159
|
+
async function he(e) {
|
|
160
|
+
if (e.epoch !== null && e.epoch !== P) throw new t();
|
|
161
161
|
if (q(e)) {
|
|
162
162
|
if (e.token === null) throw Error("anonymous 401 under a live session");
|
|
163
|
-
} else return e.token === null && J() ? z.has(
|
|
163
|
+
} else return e.token === null && J() ? z.has(P) ? K() : me() : K();
|
|
164
164
|
}
|
|
165
|
-
async function
|
|
166
|
-
if (n.epoch !== null && n.epoch !==
|
|
167
|
-
q(n) || n.token === null && J() || await
|
|
165
|
+
async function ge(e, n) {
|
|
166
|
+
if (n.epoch !== null && n.epoch !== P || !Z().continues) throw new t();
|
|
167
|
+
q(n) || n.token === null && J() || await Se();
|
|
168
168
|
}
|
|
169
|
-
async function
|
|
169
|
+
async function _e(e) {
|
|
170
170
|
L.size > 0 && await c([...L], o);
|
|
171
|
-
let t =
|
|
171
|
+
let t = ve(e);
|
|
172
172
|
I.add(t);
|
|
173
173
|
try {
|
|
174
174
|
return await t;
|
|
@@ -176,22 +176,22 @@ function u(l) {
|
|
|
176
176
|
I.delete(t);
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
async function
|
|
180
|
-
let n =
|
|
179
|
+
async function ve(e) {
|
|
180
|
+
let n = P, r = await B(Q.post(ne, {
|
|
181
181
|
body: e,
|
|
182
182
|
skipAuth: !0
|
|
183
|
-
})), { token: i, refreshToken: a } =
|
|
184
|
-
if (
|
|
185
|
-
H(
|
|
186
|
-
let { done: o } = Y("switch"), s =
|
|
187
|
-
if (await o.catch(() => void 0),
|
|
188
|
-
|
|
189
|
-
let c =
|
|
190
|
-
return c == null ?
|
|
183
|
+
})), { token: i, refreshToken: a } = y(r);
|
|
184
|
+
if (P !== n) throw H(i ?? null, a), new t();
|
|
185
|
+
H(N(), E() ?? void 0);
|
|
186
|
+
let { done: o } = Y("switch"), s = P;
|
|
187
|
+
if (await o.catch(() => void 0), P !== s) throw new t();
|
|
188
|
+
j(l()), M().setToken(i), O(a ?? null);
|
|
189
|
+
let c = oe?.(r);
|
|
190
|
+
return c == null ? le() : (M().setUser(c), c);
|
|
191
191
|
}
|
|
192
192
|
function Y(e) {
|
|
193
|
-
let { user: t, token: n } =
|
|
194
|
-
return (r || e !== "expired") && W(),
|
|
193
|
+
let { user: t, token: n } = M(), r = n !== null || t !== null || E() !== null;
|
|
194
|
+
return (r || e !== "expired") && W(), M().logout(), O(null), j(null), r ? {
|
|
195
195
|
live: r,
|
|
196
196
|
done: X({
|
|
197
197
|
reason: e,
|
|
@@ -201,16 +201,16 @@ function u(l) {
|
|
|
201
201
|
})
|
|
202
202
|
} : {
|
|
203
203
|
live: r,
|
|
204
|
-
done: e === "switch" || F === 0 ?
|
|
204
|
+
done: e === "switch" || F === 0 ? ue : Promise.resolve()
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
207
|
function X(e) {
|
|
208
|
-
if (!
|
|
208
|
+
if (!S) return Promise.resolve();
|
|
209
209
|
let t = U(e.token);
|
|
210
210
|
F += 1;
|
|
211
211
|
let n = (async () => {
|
|
212
212
|
try {
|
|
213
|
-
await
|
|
213
|
+
await S({
|
|
214
214
|
...e,
|
|
215
215
|
api: t
|
|
216
216
|
});
|
|
@@ -218,12 +218,12 @@ function u(l) {
|
|
|
218
218
|
--F;
|
|
219
219
|
}
|
|
220
220
|
})();
|
|
221
|
-
return
|
|
221
|
+
return ue = n.then(() => void 0, () => void 0), n.then(() => void 0);
|
|
222
222
|
}
|
|
223
|
-
function
|
|
224
|
-
let e =
|
|
223
|
+
function ye() {
|
|
224
|
+
let e = T();
|
|
225
225
|
if (!e) return null;
|
|
226
|
-
let t = e.getItem(
|
|
226
|
+
let t = e.getItem(w), n = e.getItem(k), r = e.getItem(h);
|
|
227
227
|
if (!r) return {
|
|
228
228
|
user: null,
|
|
229
229
|
token: null,
|
|
@@ -248,18 +248,18 @@ function u(l) {
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
function Z() {
|
|
251
|
-
let e =
|
|
251
|
+
let e = ye(), { user: t, token: n } = M();
|
|
252
252
|
if (e === null) return {
|
|
253
253
|
continues: !0,
|
|
254
254
|
done: Promise.resolve()
|
|
255
255
|
};
|
|
256
256
|
let r = JSON.stringify(e.user) === JSON.stringify(t);
|
|
257
|
-
if (e.token === n && e.refreshToken ===
|
|
257
|
+
if (e.token === n && e.refreshToken === D && e.lineage === A && r) return {
|
|
258
258
|
continues: !0,
|
|
259
259
|
done: Promise.resolve()
|
|
260
260
|
};
|
|
261
|
-
let i = e.lineage !== null ||
|
|
262
|
-
if (a || W(),
|
|
261
|
+
let i = e.lineage !== null || A !== null ? e.lineage === A : e.token === n || n !== null && r, a = e.token !== null && i, o = n !== null || t !== null || D !== null;
|
|
262
|
+
if (a || W(), D = e.refreshToken, A = e.lineage, C.setState({
|
|
263
263
|
user: e.user,
|
|
264
264
|
token: e.token,
|
|
265
265
|
isAuthenticated: e.token !== null
|
|
@@ -278,55 +278,58 @@ function u(l) {
|
|
|
278
278
|
done: s
|
|
279
279
|
};
|
|
280
280
|
}
|
|
281
|
-
function
|
|
282
|
-
if (!
|
|
283
|
-
let e =
|
|
284
|
-
if (!
|
|
285
|
-
let i =
|
|
286
|
-
return V(async () => (await c(i, o), U(t).post(e, { body:
|
|
281
|
+
function be() {
|
|
282
|
+
if (!p) return null;
|
|
283
|
+
let e = p, { token: t, user: n } = M(), r = E();
|
|
284
|
+
if (!_ && t === null && n === null && r === null) return null;
|
|
285
|
+
let i = _ ? [...R] : [];
|
|
286
|
+
return V(async () => (await c(i, o), U(t).post(e, { body: b(r) })));
|
|
287
287
|
}
|
|
288
|
-
function
|
|
288
|
+
function xe() {
|
|
289
289
|
let e = Z();
|
|
290
290
|
if (!e.continues) return e.done;
|
|
291
|
-
let t =
|
|
291
|
+
let t = be(), { done: n } = Y("logout");
|
|
292
292
|
return t ? Promise.all([t, n]).then(() => void 0) : n;
|
|
293
293
|
}
|
|
294
|
-
async function
|
|
294
|
+
async function Se() {
|
|
295
295
|
let { live: e, done: t } = Y("expired");
|
|
296
|
-
await t.catch(() => void 0), e &&
|
|
296
|
+
await t.catch(() => void 0), e && x && typeof window < "u" && window.location.assign(x);
|
|
297
297
|
}
|
|
298
298
|
let Q = n({
|
|
299
|
-
baseURL:
|
|
300
|
-
prefix:
|
|
301
|
-
withCredentials:
|
|
302
|
-
csrf:
|
|
303
|
-
fetcher:
|
|
304
|
-
getToken:
|
|
305
|
-
getSessionEpoch: () =>
|
|
306
|
-
refresh:
|
|
307
|
-
retry:
|
|
308
|
-
onUnauthorized:
|
|
309
|
-
}),
|
|
310
|
-
|
|
311
|
-
|
|
299
|
+
baseURL: d,
|
|
300
|
+
prefix: f,
|
|
301
|
+
withCredentials: _,
|
|
302
|
+
csrf: ae,
|
|
303
|
+
fetcher: v,
|
|
304
|
+
getToken: N,
|
|
305
|
+
getSessionEpoch: () => P,
|
|
306
|
+
refresh: he,
|
|
307
|
+
retry: se,
|
|
308
|
+
onUnauthorized: ge
|
|
309
|
+
}), Ce = () => K(), $ = null, we = () => N() === null ? null : A === null ? ($?.epoch !== P && ($ = {
|
|
310
|
+
epoch: P,
|
|
311
|
+
key: l()
|
|
312
|
+
}), $.key) : A, Te = {
|
|
313
|
+
current: we,
|
|
314
|
+
subscribe: (e) => C.subscribe(e)
|
|
312
315
|
};
|
|
313
|
-
r(Q,
|
|
314
|
-
function
|
|
315
|
-
e.storageArea ===
|
|
316
|
+
r(Q, Te), r(N, Te);
|
|
317
|
+
function Ee(e) {
|
|
318
|
+
e.storageArea === T() && (e.key === null || e.key === h || e.key === w || e.key === k) && Z();
|
|
316
319
|
}
|
|
317
|
-
let
|
|
318
|
-
return
|
|
319
|
-
useAuthStore:
|
|
320
|
+
let De = typeof window > "u" ? null : window;
|
|
321
|
+
return De?.addEventListener("storage", Ee), {
|
|
322
|
+
useAuthStore: C,
|
|
320
323
|
api: Q,
|
|
321
|
-
login:
|
|
322
|
-
logout:
|
|
323
|
-
refresh:
|
|
324
|
-
getToken:
|
|
325
|
-
sessionKey:
|
|
326
|
-
dispose: () =>
|
|
324
|
+
login: _e,
|
|
325
|
+
logout: xe,
|
|
326
|
+
refresh: Ce,
|
|
327
|
+
getToken: N,
|
|
328
|
+
sessionKey: we,
|
|
329
|
+
dispose: () => De?.removeEventListener("storage", Ee)
|
|
327
330
|
};
|
|
328
331
|
}
|
|
329
332
|
//#endregion
|
|
330
|
-
export {
|
|
333
|
+
export { d as createTempestAuth };
|
|
331
334
|
|
|
332
335
|
//# sourceMappingURL=create-tempest-auth.js.map
|