@codingfactory/socialkit-vue 0.1.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 (56) hide show
  1. package/dist/composables/useAuth.d.ts +27 -0
  2. package/dist/composables/useAuth.d.ts.map +1 -0
  3. package/dist/composables/useAuth.js +137 -0
  4. package/dist/composables/useAuth.js.map +1 -0
  5. package/dist/index.d.ts +25 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +16 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/plugins/terminology/index.d.ts +11 -0
  10. package/dist/plugins/terminology/index.d.ts.map +1 -0
  11. package/dist/plugins/terminology/index.js +91 -0
  12. package/dist/plugins/terminology/index.js.map +1 -0
  13. package/dist/plugins/terminology/terms.d.ts +15 -0
  14. package/dist/plugins/terminology/terms.d.ts.map +1 -0
  15. package/dist/plugins/terminology/terms.js +72 -0
  16. package/dist/plugins/terminology/terms.js.map +1 -0
  17. package/dist/plugins/terminology/types.d.ts +32 -0
  18. package/dist/plugins/terminology/types.d.ts.map +1 -0
  19. package/dist/plugins/terminology/types.js +2 -0
  20. package/dist/plugins/terminology/types.js.map +1 -0
  21. package/dist/services/api.d.ts +50 -0
  22. package/dist/services/api.d.ts.map +1 -0
  23. package/dist/services/api.js +305 -0
  24. package/dist/services/api.js.map +1 -0
  25. package/dist/services/auth.d.ts +127 -0
  26. package/dist/services/auth.d.ts.map +1 -0
  27. package/dist/services/auth.js +562 -0
  28. package/dist/services/auth.js.map +1 -0
  29. package/dist/stores/auth.d.ts +174 -0
  30. package/dist/stores/auth.d.ts.map +1 -0
  31. package/dist/stores/auth.js +262 -0
  32. package/dist/stores/auth.js.map +1 -0
  33. package/dist/types/api.d.ts +52 -0
  34. package/dist/types/api.d.ts.map +1 -0
  35. package/dist/types/api.js +7 -0
  36. package/dist/types/api.js.map +1 -0
  37. package/dist/types/user.d.ts +42 -0
  38. package/dist/types/user.d.ts.map +1 -0
  39. package/dist/types/user.js +45 -0
  40. package/dist/types/user.js.map +1 -0
  41. package/dist/utils/tokenStorage.d.ts +41 -0
  42. package/dist/utils/tokenStorage.d.ts.map +1 -0
  43. package/dist/utils/tokenStorage.js +300 -0
  44. package/dist/utils/tokenStorage.js.map +1 -0
  45. package/package.json +40 -0
  46. package/src/composables/useAuth.ts +164 -0
  47. package/src/index.ts +118 -0
  48. package/src/plugins/terminology/index.ts +114 -0
  49. package/src/plugins/terminology/terms.ts +104 -0
  50. package/src/plugins/terminology/types.ts +28 -0
  51. package/src/services/api.ts +472 -0
  52. package/src/services/auth.ts +874 -0
  53. package/src/stores/auth.ts +400 -0
  54. package/src/types/api.ts +56 -0
  55. package/src/types/user.ts +94 -0
  56. package/src/utils/tokenStorage.ts +394 -0
@@ -0,0 +1,562 @@
1
+ /**
2
+ * Configurable auth services and Axios auth-client wiring for
3
+ * SocialKit-powered frontends.
4
+ */
5
+ import axios from 'axios';
6
+ import { extractTokenFromResponse } from '../utils/tokenStorage.js';
7
+ const DEFAULT_DEVICE_ID_STORAGE_KEY = 'socialkit_device_id';
8
+ const DEFAULT_DEVICE_ID_HEADER_NAME = 'X-Device-Id';
9
+ const DEFAULT_AUTH_FAILURE_REDIRECT_DELAY_MS = 1500;
10
+ const DEFAULT_AUTH_PAGE_PATHS = ['/login', '/register'];
11
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
12
+ function isRecord(value) {
13
+ return typeof value === 'object' && value !== null;
14
+ }
15
+ function deriveRole(roles) {
16
+ if (roles.includes('admin') || roles.includes('super-admin')) {
17
+ return 'admin';
18
+ }
19
+ if (roles.includes('moderator')) {
20
+ return 'moderator';
21
+ }
22
+ return 'user';
23
+ }
24
+ function normalizeUserPayload(raw) {
25
+ const rawRoles = raw.roles;
26
+ const roles = Array.isArray(rawRoles)
27
+ ? rawRoles.filter((value) => typeof value === 'string')
28
+ : [];
29
+ const id = typeof raw.id === 'string' ? raw.id : '';
30
+ const name = typeof raw.name === 'string' ? raw.name : '';
31
+ const email = typeof raw.email === 'string' ? raw.email : '';
32
+ const avatarValue = isRecord(raw.avatar) ? raw.avatar : null;
33
+ const avatarUrl = typeof avatarValue?.url === 'string' ? avatarValue.url : null;
34
+ return {
35
+ ...raw,
36
+ id,
37
+ name,
38
+ email,
39
+ role: deriveRole(roles),
40
+ avatar: avatarValue,
41
+ avatar_url: avatarUrl
42
+ };
43
+ }
44
+ function createConfiguredClient(baseURL, timeout, client) {
45
+ if (client) {
46
+ client.defaults.baseURL = baseURL;
47
+ client.defaults.timeout = timeout;
48
+ client.defaults.headers.common.Accept = 'application/json';
49
+ client.defaults.headers.common['Content-Type'] = 'application/json';
50
+ client.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
51
+ client.defaults.withCredentials = false;
52
+ return client;
53
+ }
54
+ return axios.create({
55
+ baseURL,
56
+ timeout,
57
+ headers: {
58
+ Accept: 'application/json',
59
+ 'Content-Type': 'application/json',
60
+ 'X-Requested-With': 'XMLHttpRequest'
61
+ },
62
+ withCredentials: false
63
+ });
64
+ }
65
+ function isUuid(value) {
66
+ return UUID_PATTERN.test(value);
67
+ }
68
+ function generateDeviceIdWithCrypto() {
69
+ const bytes = new Uint8Array(16);
70
+ globalThis.crypto.getRandomValues(bytes);
71
+ const byteSix = bytes[6] ?? 0;
72
+ const byteEight = bytes[8] ?? 0;
73
+ bytes[6] = (byteSix & 0x0f) | 0x40;
74
+ bytes[8] = (byteEight & 0x3f) | 0x80;
75
+ const hex = [...bytes].map((byte) => byte.toString(16).padStart(2, '0')).join('');
76
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
77
+ }
78
+ function generateDeviceId() {
79
+ if (typeof globalThis.crypto?.randomUUID === 'function') {
80
+ return globalThis.crypto.randomUUID().toLowerCase();
81
+ }
82
+ if (typeof globalThis.crypto?.getRandomValues === 'function') {
83
+ return generateDeviceIdWithCrypto();
84
+ }
85
+ return `${Date.now().toString(16).padStart(12, '0')}-fallback-device-id`;
86
+ }
87
+ function createDeviceIdentifierHeadersProvider(storageKey = DEFAULT_DEVICE_ID_STORAGE_KEY, headerName = DEFAULT_DEVICE_ID_HEADER_NAME) {
88
+ let cachedDeviceId = null;
89
+ function getStoredDeviceId() {
90
+ try {
91
+ const storedValue = localStorage.getItem(storageKey);
92
+ if (storedValue && isUuid(storedValue)) {
93
+ return storedValue.toLowerCase();
94
+ }
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ return null;
100
+ }
101
+ function persistDeviceId(deviceId) {
102
+ try {
103
+ localStorage.setItem(storageKey, deviceId);
104
+ }
105
+ catch {
106
+ // Ignore storage failures; request-level usage still works for this session.
107
+ }
108
+ }
109
+ function getOrCreateDeviceId() {
110
+ if (cachedDeviceId && isUuid(cachedDeviceId)) {
111
+ return cachedDeviceId;
112
+ }
113
+ const storedDeviceId = getStoredDeviceId();
114
+ if (storedDeviceId) {
115
+ cachedDeviceId = storedDeviceId;
116
+ return storedDeviceId;
117
+ }
118
+ const generatedDeviceId = generateDeviceId();
119
+ if (!isUuid(generatedDeviceId)) {
120
+ return '';
121
+ }
122
+ const normalizedDeviceId = generatedDeviceId.toLowerCase();
123
+ cachedDeviceId = normalizedDeviceId;
124
+ persistDeviceId(normalizedDeviceId);
125
+ return normalizedDeviceId;
126
+ }
127
+ return () => {
128
+ const deviceId = getOrCreateDeviceId();
129
+ if (deviceId === '') {
130
+ return {};
131
+ }
132
+ return {
133
+ [headerName]: deviceId
134
+ };
135
+ };
136
+ }
137
+ function buildForgotPasswordPayload(identifier, strategy) {
138
+ if (strategy === 'email-only') {
139
+ return { email: identifier.trim() };
140
+ }
141
+ const trimmedIdentifier = identifier.trim();
142
+ const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
143
+ if (emailPattern.test(trimmedIdentifier)) {
144
+ return { email: trimmedIdentifier };
145
+ }
146
+ return { username: trimmedIdentifier.replace(/^@+/, '') };
147
+ }
148
+ function withAuthorizationHeader(config, token) {
149
+ return {
150
+ ...config,
151
+ headers: {
152
+ ...config.headers,
153
+ Authorization: `Bearer ${token}`
154
+ }
155
+ };
156
+ }
157
+ function parseMissingPolicies(payload) {
158
+ if (!isRecord(payload)) {
159
+ return [];
160
+ }
161
+ const errors = payload.errors;
162
+ if (!isRecord(errors)) {
163
+ return [];
164
+ }
165
+ const missing = errors.missing;
166
+ if (!Array.isArray(missing)) {
167
+ return [];
168
+ }
169
+ const parsed = [];
170
+ for (const item of missing) {
171
+ if (!isRecord(item)) {
172
+ continue;
173
+ }
174
+ const policyId = item.policy_id;
175
+ const version = item.version;
176
+ if (typeof policyId !== 'string') {
177
+ continue;
178
+ }
179
+ const parsedVersion = typeof version === 'number'
180
+ ? version
181
+ : typeof version === 'string'
182
+ ? Number.parseInt(version, 10)
183
+ : Number.NaN;
184
+ if (!Number.isInteger(parsedVersion)) {
185
+ continue;
186
+ }
187
+ parsed.push({
188
+ policy_id: policyId,
189
+ version: parsedVersion
190
+ });
191
+ }
192
+ return parsed;
193
+ }
194
+ function dedupeMissingPolicies(policies) {
195
+ const deduped = new Map();
196
+ for (const policy of policies) {
197
+ const existing = deduped.get(policy.policy_id);
198
+ if (!existing || policy.version > existing.version) {
199
+ deduped.set(policy.policy_id, policy);
200
+ }
201
+ }
202
+ return [...deduped.values()];
203
+ }
204
+ function isPoliciesPendingErrorPayload(payload) {
205
+ return isRecord(payload) && payload.code === 'POLICIES_PENDING';
206
+ }
207
+ function isPolicyAcceptRequest(url) {
208
+ return typeof url === 'string' && url.includes('/v1/policy/accept');
209
+ }
210
+ /**
211
+ * Create a configured auth service instance.
212
+ *
213
+ * This is the conservative base service used by shared auth-store code.
214
+ */
215
+ export function createAuthService(config) {
216
+ const { baseURL, tokenStorage, timeout = 30000 } = config;
217
+ const client = createConfiguredClient(baseURL, timeout);
218
+ client.interceptors.request.use((reqConfig) => {
219
+ const url = reqConfig.url ?? '';
220
+ if (tokenStorage.shouldSkipAuth(url)) {
221
+ return reqConfig;
222
+ }
223
+ const token = tokenStorage.getToken();
224
+ if (token) {
225
+ reqConfig.headers.Authorization = `Bearer ${token}`;
226
+ }
227
+ return reqConfig;
228
+ });
229
+ return {
230
+ async login(loginCredential, password, remember = false) {
231
+ const response = await client.post('/v1/auth/login', {
232
+ login: loginCredential,
233
+ password,
234
+ remember
235
+ });
236
+ const responseData = response.data;
237
+ const token = extractTokenFromResponse(responseData);
238
+ if (token) {
239
+ tokenStorage.setToken(token);
240
+ }
241
+ return responseData.data ?? responseData;
242
+ },
243
+ async register(data) {
244
+ const response = await client.post('/v1/auth/register', data);
245
+ const responseData = response.data;
246
+ const token = extractTokenFromResponse(responseData);
247
+ if (token) {
248
+ tokenStorage.setToken(token);
249
+ }
250
+ return responseData.data ?? responseData;
251
+ },
252
+ async logout() {
253
+ try {
254
+ await client.post('/v1/auth/logout');
255
+ }
256
+ catch {
257
+ // Even if the API call fails, we clear local state.
258
+ }
259
+ finally {
260
+ tokenStorage.removeToken();
261
+ }
262
+ },
263
+ async getUser() {
264
+ const response = await client.get('/v1/me', {
265
+ params: { _t: Date.now() },
266
+ headers: { 'Cache-Control': 'no-cache', Pragma: 'no-cache' }
267
+ });
268
+ const rawPayload = isRecord(response.data?.data)
269
+ ? response.data.data
270
+ : isRecord(response.data)
271
+ ? response.data
272
+ : {};
273
+ return normalizeUserPayload(rawPayload);
274
+ },
275
+ async forgotPassword(email) {
276
+ const response = await client.post('/v1/auth/forgot-password', { email });
277
+ return response.data;
278
+ },
279
+ async resetPassword(data) {
280
+ const response = await client.post('/v1/auth/reset-password', data);
281
+ const token = extractTokenFromResponse(response.data);
282
+ if (token) {
283
+ tokenStorage.setToken(token);
284
+ }
285
+ return response.data;
286
+ },
287
+ hasToken() {
288
+ return tokenStorage.hasToken();
289
+ },
290
+ clearToken() {
291
+ tokenStorage.removeToken();
292
+ }
293
+ };
294
+ }
295
+ /**
296
+ * Create a richer auth workflow service for apps that use 2FA and device-id
297
+ * headers during login/verification flows.
298
+ */
299
+ export function createExtendedAuthService(config) {
300
+ const { baseURL, tokenStorage, timeout = 30000, client, deviceIdStorageKey = DEFAULT_DEVICE_ID_STORAGE_KEY, deviceIdHeaderName = DEFAULT_DEVICE_ID_HEADER_NAME, forgotPasswordIdentifierStrategy = 'email-or-username' } = config;
301
+ const authClient = createConfiguredClient(baseURL, timeout, client);
302
+ const getDeviceIdentifierHeaders = createDeviceIdentifierHeadersProvider(deviceIdStorageKey, deviceIdHeaderName);
303
+ return {
304
+ async login(loginCredential, password, remember = false) {
305
+ const response = await authClient.post('/v1/auth/login', {
306
+ login: loginCredential,
307
+ password,
308
+ remember
309
+ }, {
310
+ headers: getDeviceIdentifierHeaders()
311
+ });
312
+ const responseData = response.data;
313
+ const inner = responseData.data ?? responseData;
314
+ if (inner.requires_2fa === true && typeof inner.challenge_id === 'string') {
315
+ return {
316
+ requires_2fa: true,
317
+ challenge_id: inner.challenge_id
318
+ };
319
+ }
320
+ const token = extractTokenFromResponse(responseData);
321
+ if (token) {
322
+ tokenStorage.setToken(token);
323
+ }
324
+ return inner;
325
+ },
326
+ async register(data) {
327
+ const response = await authClient.post('/v1/auth/register', data);
328
+ const responseData = response.data;
329
+ const token = extractTokenFromResponse(responseData);
330
+ if (token) {
331
+ tokenStorage.setToken(token);
332
+ }
333
+ const result = responseData.data ?? responseData;
334
+ if (!token) {
335
+ return {
336
+ requires_verification: true
337
+ };
338
+ }
339
+ return {
340
+ ...result,
341
+ requires_verification: false
342
+ };
343
+ },
344
+ async verify2faChallenge(challengeId, code, recoveryCode, rememberDevice = false, rememberSession = false) {
345
+ const payload = {
346
+ challenge_id: challengeId,
347
+ remember_session: rememberSession
348
+ };
349
+ if (code) {
350
+ payload.code = code;
351
+ }
352
+ if (recoveryCode) {
353
+ payload.recovery_code = recoveryCode;
354
+ }
355
+ if (rememberDevice) {
356
+ payload.remember_device = true;
357
+ }
358
+ const response = await authClient.post('/v1/auth/2fa/verify', payload, {
359
+ headers: getDeviceIdentifierHeaders()
360
+ });
361
+ const responseData = response.data;
362
+ const token = extractTokenFromResponse(responseData);
363
+ if (token) {
364
+ tokenStorage.setToken(token);
365
+ }
366
+ return (responseData.data ?? responseData);
367
+ },
368
+ async logout() {
369
+ try {
370
+ await authClient.post('/v1/auth/logout');
371
+ }
372
+ catch {
373
+ // Even if the API call fails, we clear local state.
374
+ }
375
+ finally {
376
+ tokenStorage.removeToken();
377
+ }
378
+ },
379
+ async getUser() {
380
+ const response = await authClient.get('/v1/me', {
381
+ params: { _t: Date.now() },
382
+ headers: { 'Cache-Control': 'no-cache', Pragma: 'no-cache' }
383
+ });
384
+ const rawPayload = isRecord(response.data?.data)
385
+ ? response.data.data
386
+ : isRecord(response.data)
387
+ ? response.data
388
+ : {};
389
+ return normalizeUserPayload(rawPayload);
390
+ },
391
+ async forgotPassword(identifier) {
392
+ const response = await authClient.post('/v1/auth/forgot-password', buildForgotPasswordPayload(identifier, forgotPasswordIdentifierStrategy));
393
+ return response.data;
394
+ },
395
+ async resetPassword(data) {
396
+ const response = await authClient.post('/v1/auth/reset-password', data);
397
+ const token = extractTokenFromResponse(response.data);
398
+ if (token) {
399
+ tokenStorage.setToken(token);
400
+ }
401
+ return response.data;
402
+ },
403
+ hasToken() {
404
+ return tokenStorage.hasToken();
405
+ },
406
+ clearToken() {
407
+ tokenStorage.removeToken();
408
+ }
409
+ };
410
+ }
411
+ /**
412
+ * Configure a shared Axios client with generic token-auth request/response
413
+ * interceptors while preserving the raw Axios surface for host apps.
414
+ */
415
+ export function configureTokenAuthClient(config) {
416
+ const { client = axios, baseURL, tokenStorage, timeout = 30000, authFailureRedirectDelayMs = DEFAULT_AUTH_FAILURE_REDIRECT_DELAY_MS, authPagePaths = DEFAULT_AUTH_PAGE_PATHS, buildLoginRedirectUrl, onAuthInvalidated, onResponseError, shouldSuppressResponseError } = config;
417
+ client.defaults.baseURL = baseURL;
418
+ client.defaults.timeout = timeout;
419
+ client.defaults.headers.common.Accept = 'application/json';
420
+ client.defaults.headers.common['Content-Type'] = 'application/json';
421
+ client.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
422
+ client.defaults.withCredentials = false;
423
+ let isValidatingAuth = false;
424
+ let authFailureRedirectTimeoutId = null;
425
+ let authFailureQueuedToken = null;
426
+ let policyAcceptancePromise = null;
427
+ function cancelQueuedAuthFailureRedirect() {
428
+ if (authFailureRedirectTimeoutId === null) {
429
+ return;
430
+ }
431
+ window.clearTimeout(authFailureRedirectTimeoutId);
432
+ authFailureRedirectTimeoutId = null;
433
+ authFailureQueuedToken = null;
434
+ }
435
+ function queueAuthFailureRedirect() {
436
+ if (authFailureRedirectTimeoutId !== null) {
437
+ return;
438
+ }
439
+ authFailureQueuedToken = tokenStorage.getToken();
440
+ authFailureRedirectTimeoutId = window.setTimeout(() => {
441
+ authFailureRedirectTimeoutId = null;
442
+ const queuedToken = authFailureQueuedToken;
443
+ authFailureQueuedToken = null;
444
+ const currentToken = tokenStorage.getToken();
445
+ if (queuedToken !== null &&
446
+ currentToken !== null &&
447
+ currentToken !== queuedToken) {
448
+ return;
449
+ }
450
+ onAuthInvalidated?.();
451
+ tokenStorage.removeToken();
452
+ const currentPath = window.location.pathname;
453
+ if (authPagePaths.includes(currentPath)) {
454
+ return;
455
+ }
456
+ const redirectUrl = buildLoginRedirectUrl?.() ?? '/login';
457
+ window.location.assign(redirectUrl);
458
+ }, authFailureRedirectDelayMs);
459
+ }
460
+ async function acceptMissingPolicies(missingPolicies) {
461
+ const policiesToAccept = dedupeMissingPolicies(missingPolicies);
462
+ if (policiesToAccept.length === 0) {
463
+ return false;
464
+ }
465
+ if (policyAcceptancePromise) {
466
+ return policyAcceptancePromise;
467
+ }
468
+ policyAcceptancePromise = (async () => {
469
+ try {
470
+ for (const policy of policiesToAccept) {
471
+ await client.post('/v1/policy/accept', {
472
+ policy_id: policy.policy_id,
473
+ version: policy.version
474
+ });
475
+ }
476
+ return true;
477
+ }
478
+ catch {
479
+ return false;
480
+ }
481
+ finally {
482
+ policyAcceptancePromise = null;
483
+ }
484
+ })();
485
+ return policyAcceptancePromise;
486
+ }
487
+ client.interceptors.request.use((reqConfig) => {
488
+ const url = reqConfig.url ?? '';
489
+ if (tokenStorage.shouldSkipAuth(url)) {
490
+ return reqConfig;
491
+ }
492
+ const token = tokenStorage.getToken();
493
+ if (token) {
494
+ reqConfig.headers.Authorization = `Bearer ${token}`;
495
+ }
496
+ if (typeof FormData !== 'undefined' && reqConfig.data instanceof FormData) {
497
+ delete reqConfig.headers['Content-Type'];
498
+ delete reqConfig.headers['content-type'];
499
+ }
500
+ return reqConfig;
501
+ });
502
+ client.interceptors.response.use((response) => {
503
+ cancelQueuedAuthFailureRedirect();
504
+ return response;
505
+ }, async (error) => {
506
+ if (error.response?.status === 428) {
507
+ const originalRequest = error.config;
508
+ const requestUrl = originalRequest?.url;
509
+ const responsePayload = error.response?.data;
510
+ const missingPolicies = parseMissingPolicies(responsePayload);
511
+ const canAttemptPolicyAcceptance = Boolean(originalRequest &&
512
+ !originalRequest._policyRetry &&
513
+ !isPolicyAcceptRequest(requestUrl) &&
514
+ isPoliciesPendingErrorPayload(responsePayload) &&
515
+ missingPolicies.length > 0);
516
+ if (canAttemptPolicyAcceptance && originalRequest) {
517
+ originalRequest._policyRetry = true;
518
+ const accepted = await acceptMissingPolicies(missingPolicies);
519
+ if (accepted) {
520
+ return client(originalRequest);
521
+ }
522
+ }
523
+ }
524
+ if (error.response?.status === 401) {
525
+ const originalRequest = error.config;
526
+ const requestUrl = originalRequest?.url;
527
+ const canAttemptRefresh = Boolean(originalRequest &&
528
+ !originalRequest._retry &&
529
+ !tokenStorage.shouldSkipAuth(requestUrl) &&
530
+ !tokenStorage.isRefreshTokenEndpoint(requestUrl));
531
+ if (canAttemptRefresh && originalRequest) {
532
+ originalRequest._retry = true;
533
+ const refreshedToken = await tokenStorage.tryRefreshToken();
534
+ if (refreshedToken) {
535
+ cancelQueuedAuthFailureRedirect();
536
+ const retryConfig = withAuthorizationHeader(originalRequest, refreshedToken);
537
+ return client(retryConfig);
538
+ }
539
+ }
540
+ if (tokenStorage.wasTokenRotatedSince(originalRequest?.headers)) {
541
+ if (!shouldSuppressResponseError?.(error)) {
542
+ onResponseError?.(error);
543
+ }
544
+ return Promise.reject(error);
545
+ }
546
+ if (!isValidatingAuth) {
547
+ queueAuthFailureRedirect();
548
+ }
549
+ }
550
+ if (!shouldSuppressResponseError?.(error)) {
551
+ onResponseError?.(error);
552
+ }
553
+ return Promise.reject(error);
554
+ });
555
+ return {
556
+ client,
557
+ setValidatingAuth(value) {
558
+ isValidatingAuth = value;
559
+ }
560
+ };
561
+ }
562
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}