@molecule/app-auth 1.2.0 → 1.2.2
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 +303 -278
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +52 -30
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-10-
|
|
6
|
+
Generated: 2026-10-16T21:58:38.432Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-auth
|
|
@@ -50,6 +50,203 @@ npm install @molecule/app-auth @molecule/app-bond @molecule/app-i18n @molecule/a
|
|
|
50
50
|
|
|
51
51
|
### Interfaces
|
|
52
52
|
|
|
53
|
+
#### `UserProfile`
|
|
54
|
+
|
|
55
|
+
User profile information.
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
interface UserProfile {
|
|
59
|
+
/**
|
|
60
|
+
* Unique user identifier.
|
|
61
|
+
*/
|
|
62
|
+
id: string
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* User's email address.
|
|
66
|
+
*/
|
|
67
|
+
email?: string
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* User's display name.
|
|
71
|
+
*/
|
|
72
|
+
name?: string
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* User's avatar/profile image URL.
|
|
76
|
+
*/
|
|
77
|
+
avatar?: string
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* User's roles or permissions.
|
|
81
|
+
*/
|
|
82
|
+
roles?: string[]
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Additional metadata.
|
|
86
|
+
*/
|
|
87
|
+
metadata?: Record<string, unknown>
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### `LoginCredentials`
|
|
92
|
+
|
|
93
|
+
Email/password login credentials with optional "remember me" flag.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
interface LoginCredentials {
|
|
97
|
+
/**
|
|
98
|
+
* Email or username.
|
|
99
|
+
*/
|
|
100
|
+
email: string
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Password.
|
|
104
|
+
*/
|
|
105
|
+
password: string
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Whether to remember the session.
|
|
109
|
+
*/
|
|
110
|
+
remember?: boolean
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Time-based one-time password (TOTP) from the user's authenticator app.
|
|
114
|
+
* Required when the account has two-factor auth enabled — the server
|
|
115
|
+
* answers `{ twoFactorRequired: true }` (HTTP 206) until a valid token
|
|
116
|
+
* is supplied.
|
|
117
|
+
*/
|
|
118
|
+
twoFactorToken?: string
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### `RegisterData`
|
|
123
|
+
|
|
124
|
+
New user registration payload (email, password, optional name and metadata).
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
interface RegisterData {
|
|
128
|
+
/**
|
|
129
|
+
* Email address.
|
|
130
|
+
*/
|
|
131
|
+
email: string
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Password.
|
|
135
|
+
*/
|
|
136
|
+
password: string
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Display name.
|
|
140
|
+
*/
|
|
141
|
+
name?: string
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Additional registration fields.
|
|
145
|
+
*/
|
|
146
|
+
metadata?: Record<string, unknown>
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
#### `AuthResult`
|
|
151
|
+
|
|
152
|
+
Successful authentication result containing the user, access/refresh tokens, and expiration.
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
interface AuthResult<T = UserProfile> {
|
|
156
|
+
/**
|
|
157
|
+
* Authenticated user.
|
|
158
|
+
*/
|
|
159
|
+
user: T
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Access token (for token-based auth).
|
|
163
|
+
*/
|
|
164
|
+
accessToken?: string
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Refresh token (for token-based auth).
|
|
168
|
+
*/
|
|
169
|
+
refreshToken?: string
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Token expiration time (Unix timestamp).
|
|
173
|
+
*/
|
|
174
|
+
expiresAt?: number
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Set (with HTTP 206) when the account has two-factor auth enabled and the
|
|
178
|
+
* login did not include a valid `twoFactorToken`. No tokens or user are
|
|
179
|
+
* issued until login is retried with the TOTP — callers must check this
|
|
180
|
+
* flag BEFORE treating the result as a successful authentication.
|
|
181
|
+
*/
|
|
182
|
+
twoFactorRequired?: boolean
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### `PasswordResetRequest`
|
|
187
|
+
|
|
188
|
+
Password reset request data.
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
interface PasswordResetRequest {
|
|
192
|
+
/**
|
|
193
|
+
* Email address.
|
|
194
|
+
*/
|
|
195
|
+
email: string
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
#### `PasswordResetConfirm`
|
|
200
|
+
|
|
201
|
+
Password reset confirmation data.
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
interface PasswordResetConfirm {
|
|
205
|
+
/**
|
|
206
|
+
* Reset token.
|
|
207
|
+
*/
|
|
208
|
+
token: string
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* New password.
|
|
212
|
+
*/
|
|
213
|
+
password: string
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
#### `AuthState`
|
|
218
|
+
|
|
219
|
+
Reactive authentication state snapshot (initialized, authenticated, user, loading, and error).
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
interface AuthState<T = UserProfile> {
|
|
223
|
+
/**
|
|
224
|
+
* Whether auth state has been initialized.
|
|
225
|
+
*/
|
|
226
|
+
initialized: boolean
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Whether the user is authenticated.
|
|
230
|
+
*/
|
|
231
|
+
authenticated: boolean
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Current user (if authenticated).
|
|
235
|
+
*/
|
|
236
|
+
user: T | null
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Whether an auth operation is in progress.
|
|
240
|
+
*/
|
|
241
|
+
loading: boolean
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Last auth error (if any).
|
|
245
|
+
*/
|
|
246
|
+
error: string | null
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
53
250
|
#### `AuthClient`
|
|
54
251
|
|
|
55
252
|
Auth client interface that all auth bond packages must implement.
|
|
@@ -145,6 +342,22 @@ interface AuthClient<T = UserProfile> {
|
|
|
145
342
|
*/
|
|
146
343
|
initialize(): Promise<void>
|
|
147
344
|
|
|
345
|
+
/**
|
|
346
|
+
* Resolves when the session restore started by `initialize()` has settled — the point
|
|
347
|
+
* after which the client knows whether this visitor is signed in.
|
|
348
|
+
*
|
|
349
|
+
* Resolves IMMEDIATELY when no restore is in flight: before `initialize()` is ever
|
|
350
|
+
* called, and after it has finished. A restore that failed resolves too (it settled the
|
|
351
|
+
* question), so an HTTP client can await this before every request without risking one
|
|
352
|
+
* held forever. That is what makes the fetch-before-restore race impossible: a page that
|
|
353
|
+
* fetches viewer-dependent data on mount waits here instead of going out anonymously
|
|
354
|
+
* (see `setAuthGate` in `@molecule/app-http`).
|
|
355
|
+
*
|
|
356
|
+
* Optional: a provider that restores no session has nothing to wait for. Without it, an
|
|
357
|
+
* HTTP client bonded to that provider sends first-paint requests unauthenticated.
|
|
358
|
+
*/
|
|
359
|
+
whenRestored?(): Promise<void>
|
|
360
|
+
|
|
148
361
|
/**
|
|
149
362
|
* Subscribes to auth state changes.
|
|
150
363
|
*/
|
|
@@ -172,6 +385,19 @@ interface AuthClient<T = UserProfile> {
|
|
|
172
385
|
}
|
|
173
386
|
```
|
|
174
387
|
|
|
388
|
+
#### `StorageAdapter`
|
|
389
|
+
|
|
390
|
+
Minimal key-value storage adapter used by the auth client for
|
|
391
|
+
persisting tokens and user data.
|
|
392
|
+
|
|
393
|
+
```typescript
|
|
394
|
+
interface StorageAdapter {
|
|
395
|
+
getItem(key: string): string | null
|
|
396
|
+
setItem(key: string, value: string): void
|
|
397
|
+
removeItem(key: string): void
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
|
|
175
401
|
#### `AuthClientConfig`
|
|
176
402
|
|
|
177
403
|
Configuration options for creating an auth client, including API
|
|
@@ -323,272 +549,93 @@ interface AuthClientConfig {
|
|
|
323
549
|
}
|
|
324
550
|
````
|
|
325
551
|
|
|
326
|
-
#### `
|
|
552
|
+
#### `TokenStorage`
|
|
327
553
|
|
|
328
|
-
|
|
554
|
+
Internal token storage interface for reading and writing access/refresh
|
|
555
|
+
tokens and user profile data.
|
|
329
556
|
|
|
330
557
|
```typescript
|
|
331
|
-
interface
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
558
|
+
interface TokenStorage {
|
|
559
|
+
getAccessToken(): string | null
|
|
560
|
+
setAccessToken(token: string | null): void
|
|
561
|
+
getRefreshToken(): string | null
|
|
562
|
+
setRefreshToken(token: string | null): void
|
|
563
|
+
getUser<T = UserProfile>(): T | null
|
|
564
|
+
setUser<T = UserProfile>(user: T | null): void
|
|
565
|
+
clear(): void
|
|
566
|
+
}
|
|
567
|
+
```
|
|
336
568
|
|
|
337
|
-
|
|
338
|
-
* Access token (for token-based auth).
|
|
339
|
-
*/
|
|
340
|
-
accessToken?: string
|
|
569
|
+
### Types
|
|
341
570
|
|
|
342
|
-
|
|
343
|
-
* Refresh token (for token-based auth).
|
|
344
|
-
*/
|
|
345
|
-
refreshToken?: string
|
|
571
|
+
#### `AuthEvent`
|
|
346
572
|
|
|
347
|
-
|
|
348
|
-
* Token expiration time (Unix timestamp).
|
|
349
|
-
*/
|
|
350
|
-
expiresAt?: number
|
|
351
|
-
|
|
352
|
-
/**
|
|
353
|
-
* Set (with HTTP 206) when the account has two-factor auth enabled and the
|
|
354
|
-
* login did not include a valid `twoFactorToken`. No tokens or user are
|
|
355
|
-
* issued until login is retried with the TOTP — callers must check this
|
|
356
|
-
* flag BEFORE treating the result as a successful authentication.
|
|
357
|
-
*/
|
|
358
|
-
twoFactorRequired?: boolean
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
#### `AuthState`
|
|
363
|
-
|
|
364
|
-
Reactive authentication state snapshot (initialized, authenticated, user, loading, and error).
|
|
365
|
-
|
|
366
|
-
```typescript
|
|
367
|
-
interface AuthState<T = UserProfile> {
|
|
368
|
-
/**
|
|
369
|
-
* Whether auth state has been initialized.
|
|
370
|
-
*/
|
|
371
|
-
initialized: boolean
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Whether the user is authenticated.
|
|
375
|
-
*/
|
|
376
|
-
authenticated: boolean
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* Current user (if authenticated).
|
|
380
|
-
*/
|
|
381
|
-
user: T | null
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* Whether an auth operation is in progress.
|
|
385
|
-
*/
|
|
386
|
-
loading: boolean
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Last auth error (if any).
|
|
390
|
-
*/
|
|
391
|
-
error: string | null
|
|
392
|
-
}
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
#### `LoginCredentials`
|
|
396
|
-
|
|
397
|
-
Email/password login credentials with optional "remember me" flag.
|
|
398
|
-
|
|
399
|
-
```typescript
|
|
400
|
-
interface LoginCredentials {
|
|
401
|
-
/**
|
|
402
|
-
* Email or username.
|
|
403
|
-
*/
|
|
404
|
-
email: string
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Password.
|
|
408
|
-
*/
|
|
409
|
-
password: string
|
|
410
|
-
|
|
411
|
-
/**
|
|
412
|
-
* Whether to remember the session.
|
|
413
|
-
*/
|
|
414
|
-
remember?: boolean
|
|
415
|
-
|
|
416
|
-
/**
|
|
417
|
-
* Time-based one-time password (TOTP) from the user's authenticator app.
|
|
418
|
-
* Required when the account has two-factor auth enabled — the server
|
|
419
|
-
* answers `{ twoFactorRequired: true }` (HTTP 206) until a valid token
|
|
420
|
-
* is supplied.
|
|
421
|
-
*/
|
|
422
|
-
twoFactorToken?: string
|
|
423
|
-
}
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
#### `PasswordResetConfirm`
|
|
427
|
-
|
|
428
|
-
Password reset confirmation data.
|
|
573
|
+
Auth event types.
|
|
429
574
|
|
|
430
575
|
```typescript
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
/**
|
|
438
|
-
* New password.
|
|
439
|
-
*/
|
|
440
|
-
password: string
|
|
441
|
-
}
|
|
576
|
+
type AuthEvent =
|
|
577
|
+
| { type: 'login'; user: UserProfile }
|
|
578
|
+
| { type: 'logout' }
|
|
579
|
+
| { type: 'register'; user: UserProfile }
|
|
580
|
+
| { type: 'refresh' }
|
|
581
|
+
| { type: 'error'; error: string }
|
|
442
582
|
```
|
|
443
583
|
|
|
444
|
-
#### `
|
|
584
|
+
#### `AuthEventListener`
|
|
445
585
|
|
|
446
|
-
|
|
586
|
+
Callback invoked when an authentication event occurs (login, logout, etc.).
|
|
447
587
|
|
|
448
588
|
```typescript
|
|
449
|
-
|
|
450
|
-
/**
|
|
451
|
-
* Email address.
|
|
452
|
-
*/
|
|
453
|
-
email: string
|
|
454
|
-
}
|
|
589
|
+
type AuthEventListener = (event: AuthEvent) => void
|
|
455
590
|
```
|
|
456
591
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
New user registration payload (email, password, optional name and metadata).
|
|
460
|
-
|
|
461
|
-
```typescript
|
|
462
|
-
interface RegisterData {
|
|
463
|
-
/**
|
|
464
|
-
* Email address.
|
|
465
|
-
*/
|
|
466
|
-
email: string
|
|
467
|
-
|
|
468
|
-
/**
|
|
469
|
-
* Password.
|
|
470
|
-
*/
|
|
471
|
-
password: string
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* Display name.
|
|
475
|
-
*/
|
|
476
|
-
name?: string
|
|
592
|
+
### Functions
|
|
477
593
|
|
|
478
|
-
|
|
479
|
-
* Additional registration fields.
|
|
480
|
-
*/
|
|
481
|
-
metadata?: Record<string, unknown>
|
|
482
|
-
}
|
|
483
|
-
```
|
|
594
|
+
#### `createJWTAuthClient(config)`
|
|
484
595
|
|
|
485
|
-
|
|
596
|
+
Creates a simple JWT-based auth client.
|
|
486
597
|
|
|
487
|
-
|
|
488
|
-
|
|
598
|
+
This is a basic implementation that can be extended or replaced
|
|
599
|
+
with more sophisticated auth providers.
|
|
489
600
|
|
|
490
601
|
```typescript
|
|
491
|
-
|
|
492
|
-
getItem(key: string): string | null
|
|
493
|
-
setItem(key: string, value: string): void
|
|
494
|
-
removeItem(key: string): void
|
|
495
|
-
}
|
|
602
|
+
function createJWTAuthClient(config?: AuthClientConfig): AuthClient<T>
|
|
496
603
|
```
|
|
497
604
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
Internal token storage interface for reading and writing access/refresh
|
|
501
|
-
tokens and user profile data.
|
|
605
|
+
- `config` — Auth client configuration including endpoints, storage, and refresh settings.
|
|
502
606
|
|
|
503
|
-
|
|
504
|
-
interface TokenStorage {
|
|
505
|
-
getAccessToken(): string | null
|
|
506
|
-
setAccessToken(token: string | null): void
|
|
507
|
-
getRefreshToken(): string | null
|
|
508
|
-
setRefreshToken(token: string | null): void
|
|
509
|
-
getUser<T = UserProfile>(): T | null
|
|
510
|
-
setUser<T = UserProfile>(user: T | null): void
|
|
511
|
-
clear(): void
|
|
512
|
-
}
|
|
513
|
-
```
|
|
607
|
+
**Returns:** A fully configured `AuthClient` instance.
|
|
514
608
|
|
|
515
|
-
#### `
|
|
609
|
+
#### `setClient(client)`
|
|
516
610
|
|
|
517
|
-
|
|
611
|
+
Registers an auth client as the active singleton. Called by bond
|
|
612
|
+
packages during application startup.
|
|
518
613
|
|
|
519
614
|
```typescript
|
|
520
|
-
|
|
521
|
-
/**
|
|
522
|
-
* Unique user identifier.
|
|
523
|
-
*/
|
|
524
|
-
id: string
|
|
525
|
-
|
|
526
|
-
/**
|
|
527
|
-
* User's email address.
|
|
528
|
-
*/
|
|
529
|
-
email?: string
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* User's display name.
|
|
533
|
-
*/
|
|
534
|
-
name?: string
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* User's avatar/profile image URL.
|
|
538
|
-
*/
|
|
539
|
-
avatar?: string
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* User's roles or permissions.
|
|
543
|
-
*/
|
|
544
|
-
roles?: string[]
|
|
545
|
-
|
|
546
|
-
/**
|
|
547
|
-
* Additional metadata.
|
|
548
|
-
*/
|
|
549
|
-
metadata?: Record<string, unknown>
|
|
550
|
-
}
|
|
615
|
+
function setClient(client: AuthClient<UserProfile>): void
|
|
551
616
|
```
|
|
552
617
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
#### `AuthEvent`
|
|
556
|
-
|
|
557
|
-
Auth event types.
|
|
558
|
-
|
|
559
|
-
```typescript
|
|
560
|
-
type AuthEvent =
|
|
561
|
-
| { type: 'login'; user: UserProfile }
|
|
562
|
-
| { type: 'logout' }
|
|
563
|
-
| { type: 'register'; user: UserProfile }
|
|
564
|
-
| { type: 'refresh' }
|
|
565
|
-
| { type: 'error'; error: string }
|
|
566
|
-
```
|
|
618
|
+
- `client` — The auth client implementation to bond.
|
|
567
619
|
|
|
568
|
-
#### `
|
|
620
|
+
#### `getClient()`
|
|
569
621
|
|
|
570
|
-
|
|
622
|
+
Retrieves the bonded auth client, throwing if none is configured.
|
|
571
623
|
|
|
572
624
|
```typescript
|
|
573
|
-
|
|
625
|
+
function getClient(): AuthClient<T>
|
|
574
626
|
```
|
|
575
627
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
#### `createJWTAuthClient(config)`
|
|
628
|
+
**Returns:** The bonded auth client.
|
|
579
629
|
|
|
580
|
-
|
|
630
|
+
#### `hasClient()`
|
|
581
631
|
|
|
582
|
-
|
|
583
|
-
with more sophisticated auth providers.
|
|
632
|
+
Checks whether an auth client is currently bonded.
|
|
584
633
|
|
|
585
634
|
```typescript
|
|
586
|
-
function
|
|
635
|
+
function hasClient(): boolean
|
|
587
636
|
```
|
|
588
637
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
**Returns:** A fully configured `AuthClient` instance.
|
|
638
|
+
**Returns:** `true` if an auth client is bonded.
|
|
592
639
|
|
|
593
640
|
#### `createTokenStorage(storage, prefix)`
|
|
594
641
|
|
|
@@ -604,47 +651,43 @@ function createTokenStorage(storage?: 'memory' | StorageAdapter, prefix?: string
|
|
|
604
651
|
|
|
605
652
|
**Returns:** A `TokenStorage` instance.
|
|
606
653
|
|
|
607
|
-
#### `
|
|
654
|
+
#### `parseJWT(token)`
|
|
608
655
|
|
|
609
|
-
|
|
656
|
+
Parses a JWT token payload without verification (base64-decodes
|
|
657
|
+
the payload segment).
|
|
610
658
|
|
|
611
659
|
```typescript
|
|
612
|
-
function
|
|
660
|
+
function parseJWT(token: string): T | null
|
|
613
661
|
```
|
|
614
662
|
|
|
615
|
-
|
|
663
|
+
- `token` — The raw JWT string (header.payload.signature).
|
|
616
664
|
|
|
617
|
-
|
|
665
|
+
**Returns:** The decoded payload object, or `null` if parsing fails.
|
|
618
666
|
|
|
619
|
-
|
|
667
|
+
#### `isTokenExpired(token, bufferSeconds)`
|
|
668
|
+
|
|
669
|
+
Checks if a JWT token is expired (or will expire within the buffer window).
|
|
620
670
|
|
|
621
671
|
```typescript
|
|
622
|
-
function
|
|
672
|
+
function isTokenExpired(token: string, bufferSeconds?: number): boolean
|
|
623
673
|
```
|
|
624
674
|
|
|
625
675
|
- `token` — The raw JWT string.
|
|
676
|
+
- `bufferSeconds` — Seconds before actual expiry to consider the token expired (default: 0).
|
|
626
677
|
|
|
627
|
-
**Returns:**
|
|
678
|
+
**Returns:** `true` if the token is expired or lacks an `exp` claim.
|
|
628
679
|
|
|
629
|
-
#### `
|
|
680
|
+
#### `getTokenExpiration(token)`
|
|
630
681
|
|
|
631
|
-
Returns the
|
|
682
|
+
Returns the expiration timestamp of a JWT token in milliseconds.
|
|
632
683
|
|
|
633
684
|
```typescript
|
|
634
|
-
function
|
|
685
|
+
function getTokenExpiration(token: string): number | null
|
|
635
686
|
```
|
|
636
687
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
#### `hasClient()`
|
|
640
|
-
|
|
641
|
-
Checks whether an auth client is currently bonded.
|
|
642
|
-
|
|
643
|
-
```typescript
|
|
644
|
-
function hasClient(): boolean
|
|
645
|
-
```
|
|
688
|
+
- `token` — The raw JWT string.
|
|
646
689
|
|
|
647
|
-
**Returns:** `
|
|
690
|
+
**Returns:** The expiration time in ms since epoch, or `null` if the token has no `exp` claim.
|
|
648
691
|
|
|
649
692
|
#### `isAuthenticated()`
|
|
650
693
|
|
|
@@ -656,18 +699,15 @@ function isAuthenticated(): boolean
|
|
|
656
699
|
|
|
657
700
|
**Returns:** `true` if the user has an active session.
|
|
658
701
|
|
|
659
|
-
#### `
|
|
702
|
+
#### `getUser()`
|
|
660
703
|
|
|
661
|
-
|
|
704
|
+
Returns the current user profile, or `null` if not authenticated.
|
|
662
705
|
|
|
663
706
|
```typescript
|
|
664
|
-
function
|
|
707
|
+
function getUser(): T | null
|
|
665
708
|
```
|
|
666
709
|
|
|
667
|
-
|
|
668
|
-
- `bufferSeconds` — Seconds before actual expiry to consider the token expired (default: 0).
|
|
669
|
-
|
|
670
|
-
**Returns:** `true` if the token is expired or lacks an `exp` claim.
|
|
710
|
+
**Returns:** The user profile, or `null` if not authenticated.
|
|
671
711
|
|
|
672
712
|
#### `login(credentials)`
|
|
673
713
|
|
|
@@ -691,19 +731,6 @@ function logout(): Promise<void>
|
|
|
691
731
|
|
|
692
732
|
**Returns:** A promise that resolves when logout completes.
|
|
693
733
|
|
|
694
|
-
#### `parseJWT(token)`
|
|
695
|
-
|
|
696
|
-
Parses a JWT token payload without verification (base64-decodes
|
|
697
|
-
the payload segment).
|
|
698
|
-
|
|
699
|
-
```typescript
|
|
700
|
-
function parseJWT(token: string): T | null
|
|
701
|
-
```
|
|
702
|
-
|
|
703
|
-
- `token` — The raw JWT string (header.payload.signature).
|
|
704
|
-
|
|
705
|
-
**Returns:** The decoded payload object, or `null` if parsing fails.
|
|
706
|
-
|
|
707
734
|
#### `register(data)`
|
|
708
735
|
|
|
709
736
|
Registers a new user account.
|
|
@@ -716,17 +743,6 @@ function register(data: RegisterData): Promise<AuthResult<UserProfile>>
|
|
|
716
743
|
|
|
717
744
|
**Returns:** The auth result containing tokens and user profile.
|
|
718
745
|
|
|
719
|
-
#### `setClient(client)`
|
|
720
|
-
|
|
721
|
-
Registers an auth client as the active singleton. Called by bond
|
|
722
|
-
packages during application startup.
|
|
723
|
-
|
|
724
|
-
```typescript
|
|
725
|
-
function setClient(client: AuthClient<UserProfile>): void
|
|
726
|
-
```
|
|
727
|
-
|
|
728
|
-
- `client` — The auth client implementation to bond.
|
|
729
|
-
|
|
730
746
|
## Injection Notes
|
|
731
747
|
|
|
732
748
|
### Requirements
|
|
@@ -759,6 +775,15 @@ Peer dependencies:
|
|
|
759
775
|
`/auth/register`, `/auth/refresh`, `/users/logout`, `/users/me`, …).
|
|
760
776
|
Align them via `createJWTAuthClient({ baseURL, ...endpoints })` — never by
|
|
761
777
|
hand-editing fetch calls in components.
|
|
778
|
+
- **Do not fetch viewer-dependent data before the restore settles.** A component
|
|
779
|
+
effect that runs on mount fires while `initialize()` is still restoring, so its
|
|
780
|
+
request leaves without the `Authorization` header and the server answers for an
|
|
781
|
+
anonymous viewer — a followed user renders "Follow", a saved item renders unsaved.
|
|
782
|
+
On localhost the restore usually wins this race; over the network it does not, so
|
|
783
|
+
the bug appears only on the deployed URL. Two ways out: gate the fetch on the auth
|
|
784
|
+
state being settled (`state.initialized`), or let the HTTP client do it — bond the
|
|
785
|
+
auth client through `@molecule/app-bonds-default-react`, which registers
|
|
786
|
+
`whenRestored()` as the http gate so every request waits for the restore.
|
|
762
787
|
- Client-side auth state is UX only — the server enforces authorization on
|
|
763
788
|
every request; hiding a screen is not protection.
|
|
764
789
|
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAShB,WAAW,EACZ,MAAM,YAAY,CAAA;AA4CnB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,WAAW,GAAG,WAAW,EACrE,SAAQ,gBAAqB,KAC5B,UAAU,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAShB,WAAW,EACZ,MAAM,YAAY,CAAA;AA4CnB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,WAAW,GAAG,WAAW,EACrE,SAAQ,gBAAqB,KAC5B,UAAU,CAAC,CAAC,CAudd,CAAA"}
|
package/dist/client.js
CHANGED
|
@@ -66,6 +66,11 @@ export const createJWTAuthClient = (config = {}) => {
|
|
|
66
66
|
const stateListeners = new Set();
|
|
67
67
|
const eventListeners = new Set();
|
|
68
68
|
let refreshTimer = null;
|
|
69
|
+
// [m95] The session restore `initialize()` started, or null when none is running.
|
|
70
|
+
// Assigned SYNCHRONOUSLY, before that call's first await, so a component effect
|
|
71
|
+
// running in the same tick (bootstrapApp calls initialize() and then renders)
|
|
72
|
+
// already sees the restore and its HTTP requests wait for it (`whenRestored`).
|
|
73
|
+
let restoreInFlight = null;
|
|
69
74
|
let state = {
|
|
70
75
|
initialized: false,
|
|
71
76
|
authenticated: false,
|
|
@@ -195,6 +200,41 @@ export const createJWTAuthClient = (config = {}) => {
|
|
|
195
200
|
}
|
|
196
201
|
return null;
|
|
197
202
|
};
|
|
203
|
+
// The body of `initialize()`, kept separate so the client can record the in-flight
|
|
204
|
+
// promise SYNCHRONOUSLY (see `restoreInFlight`): a caller that awaits `initialize()`
|
|
205
|
+
// still sees a rejection, while `whenRestored()` hands out a promise that resolves.
|
|
206
|
+
const initializeSession = async () => {
|
|
207
|
+
const token = tokenStorage.getAccessToken();
|
|
208
|
+
const user = tokenStorage.getUser();
|
|
209
|
+
if (token && user) {
|
|
210
|
+
if (!isTokenExpired(token)) {
|
|
211
|
+
setState({
|
|
212
|
+
initialized: true,
|
|
213
|
+
authenticated: true,
|
|
214
|
+
user,
|
|
215
|
+
});
|
|
216
|
+
scheduleRefresh();
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Token expired, try to refresh
|
|
220
|
+
const refreshToken = tokenStorage.getRefreshToken();
|
|
221
|
+
if (refreshToken) {
|
|
222
|
+
try {
|
|
223
|
+
await client.refresh();
|
|
224
|
+
setState({ initialized: true });
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
logger.warn('Initial token refresh failed', err);
|
|
229
|
+
tokenStorage.clear();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// [M1-1] Cookie-restore — this is what keeps a refresh / deep-link logged
|
|
234
|
+
// in under the in-memory-token model. See restoreFromSessionCookie above.
|
|
235
|
+
await restoreFromSessionCookie();
|
|
236
|
+
setState({ initialized: true });
|
|
237
|
+
};
|
|
198
238
|
const client = {
|
|
199
239
|
getState: () => state,
|
|
200
240
|
isAuthenticated: () => state.authenticated,
|
|
@@ -373,36 +413,18 @@ export const createJWTAuthClient = (config = {}) => {
|
|
|
373
413
|
});
|
|
374
414
|
},
|
|
375
415
|
async initialize() {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
// Token expired, try to refresh
|
|
389
|
-
const refreshToken = tokenStorage.getRefreshToken();
|
|
390
|
-
if (refreshToken) {
|
|
391
|
-
try {
|
|
392
|
-
await this.refresh();
|
|
393
|
-
setState({ initialized: true });
|
|
394
|
-
return;
|
|
395
|
-
}
|
|
396
|
-
catch (err) {
|
|
397
|
-
logger.warn('Initial token refresh failed', err);
|
|
398
|
-
tokenStorage.clear();
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
// [M1-1] Cookie-restore — this is what keeps a refresh / deep-link logged
|
|
403
|
-
// in under the in-memory-token model. See restoreFromSessionCookie above.
|
|
404
|
-
await restoreFromSessionCookie();
|
|
405
|
-
setState({ initialized: true });
|
|
416
|
+
// Record BEFORE awaiting, so a component effect that runs in the same tick as
|
|
417
|
+
// this call (bootstrapApp calls initialize() and then renders) already sees a
|
|
418
|
+
// restore in flight and holds its requests for it (see whenRestored below).
|
|
419
|
+
const inFlight = initializeSession();
|
|
420
|
+
restoreInFlight = inFlight;
|
|
421
|
+
await inFlight;
|
|
422
|
+
},
|
|
423
|
+
whenRestored() {
|
|
424
|
+
// Resolve, never reject: this is awaited before every authenticated request, so a
|
|
425
|
+
// restore that failed must not turn into a rejected request — the request goes out
|
|
426
|
+
// unauthenticated instead (the same outcome as not waiting at all).
|
|
427
|
+
return restoreInFlight ? restoreInFlight.catch(() => undefined) : Promise.resolve();
|
|
406
428
|
},
|
|
407
429
|
subscribe(callback) {
|
|
408
430
|
stateListeners.add(callback);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,6 +25,15 @@
|
|
|
25
25
|
* `/auth/register`, `/auth/refresh`, `/users/logout`, `/users/me`, …).
|
|
26
26
|
* Align them via `createJWTAuthClient({ baseURL, ...endpoints })` — never by
|
|
27
27
|
* hand-editing fetch calls in components.
|
|
28
|
+
* - **Do not fetch viewer-dependent data before the restore settles.** A component
|
|
29
|
+
* effect that runs on mount fires while `initialize()` is still restoring, so its
|
|
30
|
+
* request leaves without the `Authorization` header and the server answers for an
|
|
31
|
+
* anonymous viewer — a followed user renders "Follow", a saved item renders unsaved.
|
|
32
|
+
* On localhost the restore usually wins this race; over the network it does not, so
|
|
33
|
+
* the bug appears only on the deployed URL. Two ways out: gate the fetch on the auth
|
|
34
|
+
* state being settled (`state.initialized`), or let the HTTP client do it — bond the
|
|
35
|
+
* auth client through `@molecule/app-bonds-default-react`, which registers
|
|
36
|
+
* `whenRestored()` as the http gate so every request waits for the restore.
|
|
28
37
|
* - Client-side auth state is UX only — the server enforces authorization on
|
|
29
38
|
* every request; hiding a screen is not protection.
|
|
30
39
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,15 @@
|
|
|
25
25
|
* `/auth/register`, `/auth/refresh`, `/users/logout`, `/users/me`, …).
|
|
26
26
|
* Align them via `createJWTAuthClient({ baseURL, ...endpoints })` — never by
|
|
27
27
|
* hand-editing fetch calls in components.
|
|
28
|
+
* - **Do not fetch viewer-dependent data before the restore settles.** A component
|
|
29
|
+
* effect that runs on mount fires while `initialize()` is still restoring, so its
|
|
30
|
+
* request leaves without the `Authorization` header and the server answers for an
|
|
31
|
+
* anonymous viewer — a followed user renders "Follow", a saved item renders unsaved.
|
|
32
|
+
* On localhost the restore usually wins this race; over the network it does not, so
|
|
33
|
+
* the bug appears only on the deployed URL. Two ways out: gate the fetch on the auth
|
|
34
|
+
* state being settled (`state.initialized`), or let the HTTP client do it — bond the
|
|
35
|
+
* auth client through `@molecule/app-bonds-default-react`, which registers
|
|
36
|
+
* `whenRestored()` as the http gate so every request waits for the restore.
|
|
28
37
|
* - Client-side auth state is UX only — the server enforces authorization on
|
|
29
38
|
* every request; hiding a screen is not protection.
|
|
30
39
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -250,6 +250,21 @@ export interface AuthClient<T = UserProfile> {
|
|
|
250
250
|
* Initializes auth state (e.g., from stored tokens).
|
|
251
251
|
*/
|
|
252
252
|
initialize(): Promise<void>;
|
|
253
|
+
/**
|
|
254
|
+
* Resolves when the session restore started by `initialize()` has settled — the point
|
|
255
|
+
* after which the client knows whether this visitor is signed in.
|
|
256
|
+
*
|
|
257
|
+
* Resolves IMMEDIATELY when no restore is in flight: before `initialize()` is ever
|
|
258
|
+
* called, and after it has finished. A restore that failed resolves too (it settled the
|
|
259
|
+
* question), so an HTTP client can await this before every request without risking one
|
|
260
|
+
* held forever. That is what makes the fetch-before-restore race impossible: a page that
|
|
261
|
+
* fetches viewer-dependent data on mount waits here instead of going out anonymously
|
|
262
|
+
* (see `setAuthGate` in `@molecule/app-http`).
|
|
263
|
+
*
|
|
264
|
+
* Optional: a provider that restores no session has nothing to wait for. Without it, an
|
|
265
|
+
* HTTP client bonded to that provider sends first-paint requests unauthenticated.
|
|
266
|
+
*/
|
|
267
|
+
whenRestored?(): Promise<void>;
|
|
253
268
|
/**
|
|
254
269
|
* Subscribes to auth state changes.
|
|
255
270
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|