@molecule/app-react 1.7.0 → 1.7.1
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 +29 -10
- package/dist/hooks/useAuth.d.ts +15 -3
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +12 -0
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useForm.d.ts +3 -1
- package/dist/hooks/useForm.d.ts.map +1 -1
- package/dist/hooks/useForm.js +35 -39
- package/dist/hooks/useForm.js.map +1 -1
- package/dist/hooks/useSignup.d.ts +9 -4
- package/dist/hooks/useSignup.d.ts.map +1 -1
- package/dist/hooks/useSignup.js.map +1 -1
- package/dist/types.d.ts +10 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
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-21T17:02:37.827Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-react
|
|
@@ -121,7 +121,7 @@ Provides login/logout/register flows, token management, profile
|
|
|
121
121
|
updates, and auth state subscription.
|
|
122
122
|
|
|
123
123
|
```typescript
|
|
124
|
-
interface AuthClient<T = UserProfile, TRegister extends
|
|
124
|
+
interface AuthClient<T = UserProfile, TRegister extends RegisterExtraShape<TRegister> = Record<never, never>> {
|
|
125
125
|
/**
|
|
126
126
|
* Returns the current authentication state snapshot.
|
|
127
127
|
*
|
|
@@ -787,7 +787,10 @@ interface UseFormResult<T extends Record<string, unknown>> {
|
|
|
787
787
|
isSubmitting: boolean
|
|
788
788
|
|
|
789
789
|
// Field methods
|
|
790
|
-
register: (
|
|
790
|
+
register: (
|
|
791
|
+
name: keyof T,
|
|
792
|
+
options?: Omit<RegisterOptions, 'name'> & { name?: string },
|
|
793
|
+
) => FieldRegistration
|
|
791
794
|
getValue: <K extends keyof T>(name: K) => T[K]
|
|
792
795
|
setValue: <K extends keyof T>(name: K, value: T[K]) => void
|
|
793
796
|
getError: (name: keyof T) => string | undefined
|
|
@@ -964,11 +967,14 @@ interface UsePushOptions {
|
|
|
964
967
|
Return type for useSignup hook.
|
|
965
968
|
|
|
966
969
|
```typescript
|
|
967
|
-
interface UseSignupReturn<
|
|
970
|
+
interface UseSignupReturn<
|
|
971
|
+
T = unknown,
|
|
972
|
+
TRegister extends RegisterExtraShape<TRegister> = Record<never, never>,
|
|
973
|
+
> {
|
|
968
974
|
status: UsePromiseState<AuthResult<T>>['status']
|
|
969
975
|
value: UsePromiseState<AuthResult<T>>['value']
|
|
970
976
|
error: UsePromiseState<AuthResult<T>>['error']
|
|
971
|
-
signup: (data: RegisterData) => Promise<AuthResult<T>>
|
|
977
|
+
signup: (data: RegisterData<TRegister>) => Promise<AuthResult<T>>
|
|
972
978
|
reset: () => void
|
|
973
979
|
}
|
|
974
980
|
```
|
|
@@ -1264,7 +1270,10 @@ interface UseAuthOptions {
|
|
|
1264
1270
|
Hook result for useAuth.
|
|
1265
1271
|
|
|
1266
1272
|
```typescript
|
|
1267
|
-
interface UseAuthResult<
|
|
1273
|
+
interface UseAuthResult<
|
|
1274
|
+
T = unknown,
|
|
1275
|
+
TRegister extends RegisterExtraShape<TRegister> = Record<never, never>,
|
|
1276
|
+
> {
|
|
1268
1277
|
/**
|
|
1269
1278
|
* The session state as one value — render from this instead of combining
|
|
1270
1279
|
* `initialized`/`authenticated`/`loading`. A stored token AND user make it
|
|
@@ -1275,7 +1284,7 @@ interface UseAuthResult<T = unknown> {
|
|
|
1275
1284
|
state: AuthState<T>
|
|
1276
1285
|
login: AuthClient<T>['login']
|
|
1277
1286
|
logout: AuthClient<T>['logout']
|
|
1278
|
-
register: AuthClient<T>['register']
|
|
1287
|
+
register: AuthClient<T, TRegister>['register']
|
|
1279
1288
|
refresh: AuthClient<T>['refresh']
|
|
1280
1289
|
setUser: AuthClient<T>['setUser']
|
|
1281
1290
|
/**
|
|
@@ -1725,8 +1734,12 @@ function useAsyncState(initialState: T): [T, AsyncSetState<T>, AsyncExtendState<
|
|
|
1725
1734
|
|
|
1726
1735
|
Hook to access the auth client from context.
|
|
1727
1736
|
|
|
1737
|
+
Pass the same generics the client was created with —
|
|
1738
|
+
`useAuthClient<MyUser, { username: string }>()` — so `register()` accepts
|
|
1739
|
+
the app's own fields.
|
|
1740
|
+
|
|
1728
1741
|
```typescript
|
|
1729
|
-
function useAuthClient(): AuthClient<T,
|
|
1742
|
+
function useAuthClient(): AuthClient<T, TRegister>
|
|
1730
1743
|
```
|
|
1731
1744
|
|
|
1732
1745
|
**Returns:** The auth client from context
|
|
@@ -1749,8 +1762,14 @@ To create an account, use `const { register } = useAuth<MyUser>()` and
|
|
|
1749
1762
|
`await register({ email, password, name })`. Registration returns the auth
|
|
1750
1763
|
client's `AuthResult<MyUser>`; there is no separate `useRegister` hook.
|
|
1751
1764
|
|
|
1765
|
+
An app whose API takes its OWN registration fields passes the client's
|
|
1766
|
+
second generic here too — `useAuth<MyUser, { username: string }>()` — so
|
|
1767
|
+
`register({ email, password, username })` is typed exactly like the client
|
|
1768
|
+
call (and `requestBody` receives the same payload). Without it, `register`
|
|
1769
|
+
accepts only the base fields.
|
|
1770
|
+
|
|
1752
1771
|
```typescript
|
|
1753
|
-
function useAuth(options?: UseAuthOptions): UseAuthResult<T>
|
|
1772
|
+
function useAuth(options?: UseAuthOptions): UseAuthResult<T, TRegister>
|
|
1754
1773
|
```
|
|
1755
1774
|
|
|
1756
1775
|
- `options` — Hook options
|
|
@@ -2291,7 +2310,7 @@ function useIsActive(path: string, exact?: boolean): boolean
|
|
|
2291
2310
|
Hook for user registration with async state tracking.
|
|
2292
2311
|
|
|
2293
2312
|
```typescript
|
|
2294
|
-
function useSignup(): UseSignupReturn<T>
|
|
2313
|
+
function useSignup(): UseSignupReturn<T, TRegister>
|
|
2295
2314
|
```
|
|
2296
2315
|
|
|
2297
2316
|
**Returns:** Signup state and action
|
package/dist/hooks/useAuth.d.ts
CHANGED
|
@@ -3,15 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import type { AuthClient } from '@molecule/app-auth';
|
|
6
|
+
import type { AuthClient, RegisterExtraShape } from '@molecule/app-auth';
|
|
7
7
|
import type { UseAuthOptions, UseAuthResult } from '../types.js';
|
|
8
8
|
/**
|
|
9
9
|
* Hook to access the auth client from context.
|
|
10
10
|
*
|
|
11
|
+
* Pass the same generics the client was created with —
|
|
12
|
+
* `useAuthClient<MyUser, { username: string }>()` — so `register()` accepts
|
|
13
|
+
* the app's own fields.
|
|
14
|
+
*
|
|
11
15
|
* @returns The auth client from context
|
|
12
16
|
* @throws {Error} Error if used outside of AuthProvider
|
|
13
17
|
*/
|
|
14
|
-
export declare function useAuthClient<T = unknown>(): AuthClient<T>;
|
|
18
|
+
export declare function useAuthClient<T = unknown, TRegister extends RegisterExtraShape<TRegister> = Record<never, never>>(): AuthClient<T, TRegister>;
|
|
15
19
|
/**
|
|
16
20
|
* Hook for authentication state and actions.
|
|
17
21
|
*
|
|
@@ -29,19 +33,27 @@ export declare function useAuthClient<T = unknown>(): AuthClient<T>;
|
|
|
29
33
|
* `await register({ email, password, name })`. Registration returns the auth
|
|
30
34
|
* client's `AuthResult<MyUser>`; there is no separate `useRegister` hook.
|
|
31
35
|
*
|
|
36
|
+
* An app whose API takes its OWN registration fields passes the client's
|
|
37
|
+
* second generic here too — `useAuth<MyUser, { username: string }>()` — so
|
|
38
|
+
* `register({ email, password, username })` is typed exactly like the client
|
|
39
|
+
* call (and `requestBody` receives the same payload). Without it, `register`
|
|
40
|
+
* accepts only the base fields.
|
|
41
|
+
*
|
|
32
42
|
* @param options - Hook options
|
|
33
43
|
* @returns Auth state and action methods
|
|
34
44
|
*
|
|
35
45
|
* @example
|
|
36
46
|
* ```tsx
|
|
37
47
|
* const { user, isAuthenticated, login, logout } = useAuth<{ id: string; name?: string }>()
|
|
48
|
+
* const { register } = useAuth<MyUser, { username: string }>()
|
|
49
|
+
* await register({ email, password, username }) // `username` is typed
|
|
38
50
|
*
|
|
39
51
|
* if (isAuthenticated) {
|
|
40
52
|
* return <div>Welcome, {user?.name}!</div>
|
|
41
53
|
* }
|
|
42
54
|
* ```
|
|
43
55
|
*/
|
|
44
|
-
export declare function useAuth<T = unknown>(options?: UseAuthOptions): UseAuthResult<T>;
|
|
56
|
+
export declare function useAuth<T = unknown, TRegister extends RegisterExtraShape<TRegister> = Record<never, never>>(options?: UseAuthOptions): UseAuthResult<T, TRegister>;
|
|
45
57
|
/**
|
|
46
58
|
* Hook to get just the authenticated user.
|
|
47
59
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,UAAU,
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,UAAU,EAKV,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhE;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,CAAC,GAAG,OAAO,EACX,SAAS,SAAS,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KACnE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAU5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,OAAO,CACrB,CAAC,GAAG,OAAO,EACX,SAAS,SAAS,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACtE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CA2EvD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,IAAI,CAG/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C"}
|
package/dist/hooks/useAuth.js
CHANGED
|
@@ -9,6 +9,10 @@ import { AuthContext } from '../contexts.js';
|
|
|
9
9
|
/**
|
|
10
10
|
* Hook to access the auth client from context.
|
|
11
11
|
*
|
|
12
|
+
* Pass the same generics the client was created with —
|
|
13
|
+
* `useAuthClient<MyUser, { username: string }>()` — so `register()` accepts
|
|
14
|
+
* the app's own fields.
|
|
15
|
+
*
|
|
12
16
|
* @returns The auth client from context
|
|
13
17
|
* @throws {Error} Error if used outside of AuthProvider
|
|
14
18
|
*/
|
|
@@ -38,12 +42,20 @@ export function useAuthClient() {
|
|
|
38
42
|
* `await register({ email, password, name })`. Registration returns the auth
|
|
39
43
|
* client's `AuthResult<MyUser>`; there is no separate `useRegister` hook.
|
|
40
44
|
*
|
|
45
|
+
* An app whose API takes its OWN registration fields passes the client's
|
|
46
|
+
* second generic here too — `useAuth<MyUser, { username: string }>()` — so
|
|
47
|
+
* `register({ email, password, username })` is typed exactly like the client
|
|
48
|
+
* call (and `requestBody` receives the same payload). Without it, `register`
|
|
49
|
+
* accepts only the base fields.
|
|
50
|
+
*
|
|
41
51
|
* @param options - Hook options
|
|
42
52
|
* @returns Auth state and action methods
|
|
43
53
|
*
|
|
44
54
|
* @example
|
|
45
55
|
* ```tsx
|
|
46
56
|
* const { user, isAuthenticated, login, logout } = useAuth<{ id: string; name?: string }>()
|
|
57
|
+
* const { register } = useAuth<MyUser, { username: string }>()
|
|
58
|
+
* await register({ email, password, username }) // `username` is typed
|
|
47
59
|
*
|
|
48
60
|
* if (isAuthenticated) {
|
|
49
61
|
* return <div>Welcome, {user?.name}!</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/useForm.d.ts
CHANGED
|
@@ -21,7 +21,9 @@ export interface UseFormResult<T extends Record<string, unknown>> {
|
|
|
21
21
|
isValid: boolean;
|
|
22
22
|
isDirty: boolean;
|
|
23
23
|
isSubmitting: boolean;
|
|
24
|
-
register: (name: keyof T, options?: RegisterOptions
|
|
24
|
+
register: (name: keyof T, options?: Omit<RegisterOptions, 'name'> & {
|
|
25
|
+
name?: string;
|
|
26
|
+
}) => FieldRegistration;
|
|
25
27
|
getValue: <K extends keyof T>(name: K) => T[K];
|
|
26
28
|
setValue: <K extends keyof T>(name: K, value: T[K]) => void;
|
|
27
29
|
getError: (name: keyof T) => string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,eAAe,EAChB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAkC5B;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACvF;;OAEG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAA;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE9D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IAGrB,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,CAAC,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KACxD,iBAAiB,CAAA;IACtB,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC3D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;IAC/C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5D,WAAW,EAAE,MAAM,IAAI,CAAA;IAGvB,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAA;IAClG,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,aAAa,CAAC,CAAC,CAAC,CAwElB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAC3E,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EACvB,IAAI,EAAE,CAAC,GACN,CAAC,CAAC,CAAC,CAAC,CAGN;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,CAAC,GACZ,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAGxB"}
|
package/dist/hooks/useForm.js
CHANGED
|
@@ -3,7 +3,35 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import { useCallback, useRef, useSyncExternalStore } from 'react';
|
|
6
|
+
import { useCallback, useMemo, useRef, useSyncExternalStore } from 'react';
|
|
7
|
+
/**
|
|
8
|
+
* Adapt controller notifications to React's stable snapshot contract. Providers
|
|
9
|
+
* may return fresh objects from their getters; reads between notifications must
|
|
10
|
+
* still return the same snapshot to useSyncExternalStore.
|
|
11
|
+
*
|
|
12
|
+
* @param form - Controller that owns the subscription.
|
|
13
|
+
* @param read - Reads the form state or a selected field.
|
|
14
|
+
* @returns The current subscribed snapshot.
|
|
15
|
+
*/
|
|
16
|
+
function useFormSnapshot(form, read) {
|
|
17
|
+
const store = useMemo(() => {
|
|
18
|
+
let snapshot = read();
|
|
19
|
+
return {
|
|
20
|
+
getSnapshot: () => snapshot,
|
|
21
|
+
subscribe: (onChange) => {
|
|
22
|
+
const refresh = () => {
|
|
23
|
+
snapshot = read();
|
|
24
|
+
onChange();
|
|
25
|
+
};
|
|
26
|
+
const unsubscribe = form.subscribe(refresh);
|
|
27
|
+
// A controller can change after render but before React subscribes.
|
|
28
|
+
refresh();
|
|
29
|
+
return unsubscribe;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}, [form, read]);
|
|
33
|
+
return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
|
|
34
|
+
}
|
|
7
35
|
/**
|
|
8
36
|
* Hook for form state management.
|
|
9
37
|
*
|
|
@@ -48,18 +76,8 @@ export function useForm(options) {
|
|
|
48
76
|
formRef.current = createForm(formOptions);
|
|
49
77
|
}
|
|
50
78
|
const form = formRef.current;
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
const subscribe = useCallback((onChange) => {
|
|
54
|
-
// The form controller should have a subscribe method
|
|
55
|
-
// If not available, we'll use a polling approach
|
|
56
|
-
if ('subscribe' in form && typeof form.subscribe === 'function') {
|
|
57
|
-
return form.subscribe(onChange);
|
|
58
|
-
}
|
|
59
|
-
// Fallback: no-op unsubscribe (state won't auto-update)
|
|
60
|
-
return () => { };
|
|
61
|
-
}, [form]);
|
|
62
|
-
const formState = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
79
|
+
const readState = useCallback(() => form.getState(), [form]);
|
|
80
|
+
const formState = useFormSnapshot(form, readState);
|
|
63
81
|
// Memoized methods
|
|
64
82
|
const register = useCallback((name, registerOptions) => {
|
|
65
83
|
return form.register({ ...registerOptions, name: name });
|
|
@@ -109,14 +127,8 @@ export function useForm(options) {
|
|
|
109
127
|
* @returns Current field value
|
|
110
128
|
*/
|
|
111
129
|
export function useWatch(form, name) {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
if ('subscribe' in form && typeof form.subscribe === 'function') {
|
|
115
|
-
return form.subscribe(onChange);
|
|
116
|
-
}
|
|
117
|
-
return () => { };
|
|
118
|
-
}, [form]);
|
|
119
|
-
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
130
|
+
const readValue = useCallback(() => form.getValue(name), [form, name]);
|
|
131
|
+
return useFormSnapshot(form, readValue);
|
|
120
132
|
}
|
|
121
133
|
/**
|
|
122
134
|
* Hook to get field-level state.
|
|
@@ -126,23 +138,7 @@ export function useWatch(form, name) {
|
|
|
126
138
|
* @returns Field state (value, error, touched, dirty, valid)
|
|
127
139
|
*/
|
|
128
140
|
export function useFieldState(form, name) {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
value: state.values[name],
|
|
133
|
-
error: state.errors[name],
|
|
134
|
-
touched: state.touched[name] ?? false,
|
|
135
|
-
dirty: state.values[name] !== undefined,
|
|
136
|
-
valid: !state.errors[name],
|
|
137
|
-
validating: false,
|
|
138
|
-
};
|
|
139
|
-
}, [form, name]);
|
|
140
|
-
const subscribe = useCallback((onChange) => {
|
|
141
|
-
if ('subscribe' in form && typeof form.subscribe === 'function') {
|
|
142
|
-
return form.subscribe(onChange);
|
|
143
|
-
}
|
|
144
|
-
return () => { };
|
|
145
|
-
}, [form]);
|
|
146
|
-
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
141
|
+
const readField = useCallback(() => form.getFieldState(name), [form, name]);
|
|
142
|
+
return useFormSnapshot(form, readField);
|
|
147
143
|
}
|
|
148
144
|
//# sourceMappingURL=useForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.js","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useForm.js","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,16 +3,21 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import type { AuthResult, RegisterData } from '@molecule/app-auth';
|
|
6
|
+
import type { AuthResult, RegisterData, RegisterExtraShape } from '@molecule/app-auth';
|
|
7
7
|
import { type UsePromiseState } from './usePromise.js';
|
|
8
8
|
/**
|
|
9
9
|
* Return type for useSignup hook.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The user profile the API returns.
|
|
12
|
+
* @template TRegister - The app's own registration fields (the second generic
|
|
13
|
+
* of `createJWTAuthClient<T, TRegister>`), so `signup()` is typed like the
|
|
14
|
+
* client's `register()`.
|
|
10
15
|
*/
|
|
11
|
-
export interface UseSignupReturn<T = unknown> {
|
|
16
|
+
export interface UseSignupReturn<T = unknown, TRegister extends RegisterExtraShape<TRegister> = Record<never, never>> {
|
|
12
17
|
status: UsePromiseState<AuthResult<T>>['status'];
|
|
13
18
|
value: UsePromiseState<AuthResult<T>>['value'];
|
|
14
19
|
error: UsePromiseState<AuthResult<T>>['error'];
|
|
15
|
-
signup: (data: RegisterData) => Promise<AuthResult<T>>;
|
|
20
|
+
signup: (data: RegisterData<TRegister>) => Promise<AuthResult<T>>;
|
|
16
21
|
reset: () => void;
|
|
17
22
|
}
|
|
18
23
|
/**
|
|
@@ -31,5 +36,5 @@ export interface UseSignupReturn<T = unknown> {
|
|
|
31
36
|
* )
|
|
32
37
|
* ```
|
|
33
38
|
*/
|
|
34
|
-
export declare function useSignup<T = unknown>(): UseSignupReturn<T>;
|
|
39
|
+
export declare function useSignup<T = unknown, TRegister extends RegisterExtraShape<TRegister> = Record<never, never>>(): UseSignupReturn<T, TRegister>;
|
|
35
40
|
//# sourceMappingURL=useSignup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSignup.d.ts","sourceRoot":"","sources":["../../src/hooks/useSignup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSignup.d.ts","sourceRoot":"","sources":["../../src/hooks/useSignup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAGtF,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe,CAC9B,CAAC,GAAG,OAAO,EACX,SAAS,SAAS,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtE,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAChD,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC9C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,CAAC,GAAG,OAAO,EACX,SAAS,SAAS,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KACnE,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAcjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSignup.js","sourceRoot":"","sources":["../../src/hooks/useSignup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSignup.js","sourceRoot":"","sources":["../../src/hooks/useSignup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAqBlE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,SAAS;IAIvB,MAAM,MAAM,GAAG,aAAa,EAAgB,CAAA;IAE5C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,IAA6B,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAElG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IAE5C,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAA;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { ReactNode } from 'react';
|
|
7
7
|
import type { BackgroundTaskState, ChatAttachment, ChatMessage, ChatProvider, ChatStreamEvent } from '@molecule/app-ai-chat';
|
|
8
|
-
import type { AuthClient, AuthState } from '@molecule/app-auth';
|
|
8
|
+
import type { AuthClient, AuthState, RegisterExtraShape } from '@molecule/app-auth';
|
|
9
9
|
import type { DiffFile, EditorFile, EditorProvider, EditorTab, FixWithAIRequest } from '@molecule/app-code-editor';
|
|
10
10
|
import type { FormController, FormOptions } from '@molecule/app-forms';
|
|
11
11
|
import type { HttpClient } from '@molecule/app-http';
|
|
@@ -131,8 +131,15 @@ export interface UseAuthOptions {
|
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
133
133
|
* Hook result for useAuth.
|
|
134
|
+
*
|
|
135
|
+
* @template T - The user profile the API returns (the same type passed to
|
|
136
|
+
* `createJWTAuthClient<T>` and `AuthClientConfig<T>`).
|
|
137
|
+
* @template TRegister - The app's own registration fields, at the top level of
|
|
138
|
+
* `register()` — the second generic of `createJWTAuthClient<T, TRegister>`,
|
|
139
|
+
* so `useAuth<T, TRegister>().register({ email, password, username })` is
|
|
140
|
+
* typed exactly like the client call.
|
|
134
141
|
*/
|
|
135
|
-
export interface UseAuthResult<T = unknown> {
|
|
142
|
+
export interface UseAuthResult<T = unknown, TRegister extends RegisterExtraShape<TRegister> = Record<never, never>> {
|
|
136
143
|
/**
|
|
137
144
|
* The session state as one value — render from this instead of combining
|
|
138
145
|
* `initialized`/`authenticated`/`loading`. A stored token AND user make it
|
|
@@ -143,7 +150,7 @@ export interface UseAuthResult<T = unknown> {
|
|
|
143
150
|
state: AuthState<T>;
|
|
144
151
|
login: AuthClient<T>['login'];
|
|
145
152
|
logout: AuthClient<T>['logout'];
|
|
146
|
-
register: AuthClient<T>['register'];
|
|
153
|
+
register: AuthClient<T, TRegister>['register'];
|
|
147
154
|
refresh: AuthClient<T>['refresh'];
|
|
148
155
|
setUser: AuthClient<T>['setUser'];
|
|
149
156
|
/**
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@molecule/app-react",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "React framework bindings for molecule.dev",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@molecule/app-ai-models": "1.4.0",
|
|
62
|
-
"@molecule/app-bonds-default-react": "1.1.
|
|
62
|
+
"@molecule/app-bonds-default-react": "1.1.5",
|
|
63
63
|
"@molecule/app-i18n": "1.0.3",
|
|
64
64
|
"@testing-library/dom": "10.4.1",
|
|
65
65
|
"@testing-library/react": "16.3.2",
|