@bb-labs/next-router 0.0.3 → 0.0.5
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 -5
- package/dist/client/z-page/index.d.ts +3 -7
- package/dist/client/z-page/index.js +2 -2
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/server/z-page/fns/z-page.d.ts +6 -6
- package/dist/server/z-page/fns/z-page.js +3 -3
- package/dist/server/z-server-action/fns/z-server-action.d.ts +5 -0
- package/dist/server/z-server-action/fns/z-server-action.js +8 -0
- package/dist/server/z-server-action/index.d.ts +1 -0
- package/dist/server/z-server-action/index.js +1 -0
- package/dist/utils/types.d.ts +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -145,7 +145,7 @@ const searchParamsSchema = {
|
|
|
145
145
|
};
|
|
146
146
|
|
|
147
147
|
export function MyComponent() {
|
|
148
|
-
const { data } = useSearchParams(searchParamsSchema, {
|
|
148
|
+
const { data, error } = useSearchParams(searchParamsSchema, {
|
|
149
149
|
onSuccess: (data) => {
|
|
150
150
|
console.log("Valid params:", data.email);
|
|
151
151
|
},
|
|
@@ -155,7 +155,7 @@ export function MyComponent() {
|
|
|
155
155
|
},
|
|
156
156
|
});
|
|
157
157
|
|
|
158
|
-
if (
|
|
158
|
+
if (error) return <div>Error: {error}</div>;
|
|
159
159
|
|
|
160
160
|
return <div>Email: {data.email}</div>;
|
|
161
161
|
}
|
|
@@ -164,18 +164,19 @@ export function MyComponent() {
|
|
|
164
164
|
### Hook API
|
|
165
165
|
|
|
166
166
|
```tsx
|
|
167
|
-
const { data } = useRouteParams(schema, options?);
|
|
168
|
-
const { data } = useSearchParams(schema, options?);
|
|
167
|
+
const { data, error } = useRouteParams(schema, options?);
|
|
168
|
+
const { data, error } = useSearchParams(schema, options?);
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
**Options:**
|
|
172
172
|
|
|
173
173
|
- `onSuccess?: (data: T) => void` — Called when params are successfully validated
|
|
174
|
-
- `onError?: (error:
|
|
174
|
+
- `onError?: (error: z.ZodError) => void` — Called when validation fails (defaults to redirecting to "/404")
|
|
175
175
|
|
|
176
176
|
**Returns:**
|
|
177
177
|
|
|
178
178
|
- `data` — The validated params, or `null` if validation failed
|
|
179
|
+
- `error` — The error message string, or `null` if validation succeeded
|
|
179
180
|
|
|
180
181
|
---
|
|
181
182
|
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import type { InferZodObjectShapeOutput, ZodObjectShape } from "../../utils/types";
|
|
1
|
+
import type { InferZodObjectShapeOutput, T_DataError, ZodObjectShape } from "../../utils/types";
|
|
2
2
|
import type { OnZodError } from "../../server/z-page/utils/types";
|
|
3
3
|
type HookOptions<T> = {
|
|
4
4
|
onSuccess?: (data: T) => void;
|
|
5
5
|
onError?: OnZodError;
|
|
6
6
|
};
|
|
7
|
-
export declare function useRouteParams<T extends ZodObjectShape>(schema: T, options?: HookOptions<InferZodObjectShapeOutput<T>>):
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
export declare function useSearchParams<T extends ZodObjectShape>(schema: T, options?: HookOptions<InferZodObjectShapeOutput<T>>): {
|
|
11
|
-
data: InferZodObjectShapeOutput<T> | null;
|
|
12
|
-
};
|
|
7
|
+
export declare function useRouteParams<T extends ZodObjectShape>(schema: T, options?: HookOptions<InferZodObjectShapeOutput<T>>): T_DataError<InferZodObjectShapeOutput<T>>;
|
|
8
|
+
export declare function useSearchParams<T extends ZodObjectShape>(schema: T, options?: HookOptions<InferZodObjectShapeOutput<T>>): T_DataError<InferZodObjectShapeOutput<T>>;
|
|
13
9
|
export {};
|
|
@@ -26,7 +26,7 @@ export function useRouteParams(schema, options) {
|
|
|
26
26
|
options?.onSuccess?.(result.data);
|
|
27
27
|
}
|
|
28
28
|
}, [result, options, router]);
|
|
29
|
-
return { data: result.data };
|
|
29
|
+
return result.error ? { data: null, error: result.error.message } : { data: result.data, error: null };
|
|
30
30
|
}
|
|
31
31
|
export function useSearchParams(schema, options) {
|
|
32
32
|
const nextSearchParams = useNextSearchParams();
|
|
@@ -53,5 +53,5 @@ export function useSearchParams(schema, options) {
|
|
|
53
53
|
options?.onSuccess?.(result.data);
|
|
54
54
|
}
|
|
55
55
|
}, [result, options, router]);
|
|
56
|
-
return { data: result.data };
|
|
56
|
+
return result.error ? { data: null, error: result.error.message } : { data: result.data, error: null };
|
|
57
57
|
}
|
package/dist/server/index.d.ts
CHANGED
package/dist/server/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export declare function zPage<RP extends ZodObjectShape, SP extends ZodObjectSha
|
|
|
12
12
|
resolve?: true;
|
|
13
13
|
onError?: OnZodError;
|
|
14
14
|
loadingHandler?: React.ReactNode;
|
|
15
|
-
handler: (
|
|
15
|
+
handler: (inputs: {
|
|
16
16
|
routeParams: InferOutput<RP>;
|
|
17
17
|
searchParams: InferOutput<SP>;
|
|
18
18
|
}) => React.ReactNode | Promise<React.ReactNode>;
|
|
@@ -25,7 +25,7 @@ export declare function zPage<RP extends ZodObjectShape>(cfg: {
|
|
|
25
25
|
resolve?: true;
|
|
26
26
|
onError?: OnZodError;
|
|
27
27
|
loadingHandler?: React.ReactNode;
|
|
28
|
-
handler: (
|
|
28
|
+
handler: (inputs: {
|
|
29
29
|
routeParams: InferOutput<RP>;
|
|
30
30
|
}) => React.ReactNode | Promise<React.ReactNode>;
|
|
31
31
|
}): ZPageReturn;
|
|
@@ -37,7 +37,7 @@ export declare function zPage<SP extends ZodObjectShape>(cfg: {
|
|
|
37
37
|
resolve?: true;
|
|
38
38
|
onError?: OnZodError;
|
|
39
39
|
loadingHandler?: React.ReactNode;
|
|
40
|
-
handler: (
|
|
40
|
+
handler: (inputs: {
|
|
41
41
|
searchParams: InferOutput<SP>;
|
|
42
42
|
}) => React.ReactNode | Promise<React.ReactNode>;
|
|
43
43
|
}): ZPageReturn;
|
|
@@ -49,7 +49,7 @@ export declare function zPage<RP extends ZodObjectShape, SP extends ZodObjectSha
|
|
|
49
49
|
resolve: false;
|
|
50
50
|
onError?: never;
|
|
51
51
|
loadingHandler?: never;
|
|
52
|
-
handler: (
|
|
52
|
+
handler: (inputs: {
|
|
53
53
|
routeParams: Promise<InferOutput<RP>>;
|
|
54
54
|
searchParams: Promise<InferOutput<SP>>;
|
|
55
55
|
}) => React.ReactNode | Promise<React.ReactNode>;
|
|
@@ -62,7 +62,7 @@ export declare function zPage<RP extends ZodObjectShape>(cfg: {
|
|
|
62
62
|
resolve: false;
|
|
63
63
|
onError?: never;
|
|
64
64
|
loadingHandler?: never;
|
|
65
|
-
handler: (
|
|
65
|
+
handler: (inputs: {
|
|
66
66
|
routeParams: Promise<InferOutput<RP>>;
|
|
67
67
|
}) => React.ReactNode | Promise<React.ReactNode>;
|
|
68
68
|
}): ZPageReturn;
|
|
@@ -74,7 +74,7 @@ export declare function zPage<SP extends ZodObjectShape>(cfg: {
|
|
|
74
74
|
resolve: false;
|
|
75
75
|
onError?: never;
|
|
76
76
|
loadingHandler?: never;
|
|
77
|
-
handler: (
|
|
77
|
+
handler: (inputs: {
|
|
78
78
|
searchParams: Promise<InferOutput<SP>>;
|
|
79
79
|
}) => React.ReactNode | Promise<React.ReactNode>;
|
|
80
80
|
}): ZPageReturn;
|
|
@@ -9,10 +9,10 @@ export function zPage(cfg) {
|
|
|
9
9
|
return async (props) => cfg.handler(createValidatedPromises(props));
|
|
10
10
|
}
|
|
11
11
|
async function Inner({ promises }) {
|
|
12
|
-
const
|
|
13
|
-
if (!Object.keys(
|
|
12
|
+
const inputs = await resolveParams(promises);
|
|
13
|
+
if (!Object.keys(inputs).length)
|
|
14
14
|
return null;
|
|
15
|
-
return cfg.handler(
|
|
15
|
+
return cfg.handler(inputs);
|
|
16
16
|
}
|
|
17
17
|
return (props) => (_jsx(Suspense, { fallback: cfg.loadingHandler ?? null, children: _jsx(Inner, { promises: createValidatedPromises(props) }) }));
|
|
18
18
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ZodObjectShape, InferZodObjectShapeOutput } from "../../../utils/types";
|
|
2
|
+
export declare function zServerAction<P extends ZodObjectShape, R>(cfg: {
|
|
3
|
+
params: P;
|
|
4
|
+
handler: (inputs: InferZodObjectShapeOutput<P>) => Promise<R>;
|
|
5
|
+
}): (inputs: InferZodObjectShapeOutput<P>) => Promise<R>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./fns/z-server-action";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./fns/z-server-action";
|
package/dist/utils/types.d.ts
CHANGED
|
@@ -5,3 +5,10 @@ export type ZodObject<T extends ZodRawShape = ZodRawShape> = z.ZodObject<T>;
|
|
|
5
5
|
export type ZodObjectShape = ZodRawShape | ZodObject;
|
|
6
6
|
/** Infer output type from either raw shape or ZodObject */
|
|
7
7
|
export type InferZodObjectShapeOutput<T extends ZodObjectShape> = T extends ZodObject<infer S> ? z.output<z.ZodObject<S>> : T extends ZodRawShape ? z.output<z.ZodObject<T>> : never;
|
|
8
|
+
export type T_DataError<T> = {
|
|
9
|
+
data: T;
|
|
10
|
+
error: null;
|
|
11
|
+
} | {
|
|
12
|
+
data: null;
|
|
13
|
+
error: string;
|
|
14
|
+
};
|