react-server-actions 1.0.0 → 1.0.3
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 +150 -4
- package/dist/client/helpers.d.ts.map +1 -1
- package/dist/client/helpers.js +3 -0
- package/dist/client/helpers.js.map +1 -1
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +5 -5
- package/dist/client/index.js.map +1 -1
- package/dist/server/actions.d.ts +8 -4
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/actions.js +2 -2
- package/dist/server/actions.js.map +1 -1
- package/dist/server/helpers.d.ts +21 -11
- package/dist/server/helpers.d.ts.map +1 -1
- package/dist/server/helpers.js +22 -17
- package/dist/server/helpers.js.map +1 -1
- package/dist/server/types.d.ts +8 -4
- package/dist/server/types.d.ts.map +1 -1
- package/package.json +10 -9
package/README.md
CHANGED
|
@@ -1,4 +1,150 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
# Next Native Actions
|
|
2
|
+
|
|
3
|
+
A lightweight library for handling form actions in Next.js applications using native browser capabilities and server actions.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### Server-Side Features
|
|
8
|
+
|
|
9
|
+
#### Direct React Server Actions Integration
|
|
10
|
+
|
|
11
|
+
- Seamlessly works with Next.js and React Server Actions
|
|
12
|
+
- No additional server-side middleware required
|
|
13
|
+
- Type-safe action handling
|
|
14
|
+
|
|
15
|
+
#### Structured Action Responses
|
|
16
|
+
|
|
17
|
+
- Standardized response shape for consistent error and success handling
|
|
18
|
+
- Type-safe responses with proper error typing
|
|
19
|
+
- Built-in support for validation errors and server errors
|
|
20
|
+
|
|
21
|
+
#### Form Data Processing
|
|
22
|
+
|
|
23
|
+
- Built-in form data decoder for easy access to form fields
|
|
24
|
+
- Support for complex form structures including nested objects and arrays
|
|
25
|
+
- Automatic type inference from your Zod schemas
|
|
26
|
+
|
|
27
|
+
#### Zod Schema Validation
|
|
28
|
+
|
|
29
|
+
- Server-side validation using Zod schemas
|
|
30
|
+
- Type inference for both client and server
|
|
31
|
+
- Detailed validation error messages
|
|
32
|
+
- Custom validation rules support
|
|
33
|
+
|
|
34
|
+
#### Form State Management
|
|
35
|
+
|
|
36
|
+
- Optional form data persistence between submissions
|
|
37
|
+
- Ability to reset form data after successful submission
|
|
38
|
+
- State management utilities for handling loading and error states
|
|
39
|
+
|
|
40
|
+
### Client-Side Features
|
|
41
|
+
|
|
42
|
+
#### Framework Agnostic
|
|
43
|
+
|
|
44
|
+
- Works with any form management library of your choice
|
|
45
|
+
- Native support for React Hook Form, Formik, or plain HTML forms
|
|
46
|
+
- Zero client-side dependencies required
|
|
47
|
+
|
|
48
|
+
#### Native HTML Validation
|
|
49
|
+
|
|
50
|
+
- Automatic HTML5 validation attributes from Zod schemas
|
|
51
|
+
- Client-side validation before server submission
|
|
52
|
+
- Improved user experience with instant feedback
|
|
53
|
+
- Accessibility-friendly validation messages
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
bash
|
|
58
|
+
npm install next-native-actions
|
|
59
|
+
|
|
60
|
+
## Basic Usage
|
|
61
|
+
|
|
62
|
+
### 1. Define your schema and action
|
|
63
|
+
|
|
64
|
+
typescript:next-native-actions/README.md
|
|
65
|
+
import { z } from 'zod';
|
|
66
|
+
import { createAction } from 'next-native-actions';
|
|
67
|
+
const userSchema = z.object({
|
|
68
|
+
name: z.string().min(2),
|
|
69
|
+
email: z.string().email(),
|
|
70
|
+
age: z.number().min(18)
|
|
71
|
+
});
|
|
72
|
+
export const createUser = createAction(userSchema, async (data) => {
|
|
73
|
+
// Your server logic here
|
|
74
|
+
return { success: true, data };
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
### 2. Use in your form component
|
|
78
|
+
|
|
79
|
+
typescript
|
|
80
|
+
'use client';
|
|
81
|
+
import { useAction } from 'next-native-actions/client';
|
|
82
|
+
export function UserForm() {
|
|
83
|
+
const { action, isLoading } = useAction(createUser);
|
|
84
|
+
return (
|
|
85
|
+
|
|
86
|
+
<form action={action}>
|
|
87
|
+
<input name="name" type="text" required minLength={2} />
|
|
88
|
+
<input name="email" type="email" required />
|
|
89
|
+
<input name="age" type="number" required min={18} />
|
|
90
|
+
<button disabled={isLoading}>Submit</button>
|
|
91
|
+
</form>
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
## Advanced Features
|
|
96
|
+
|
|
97
|
+
### Custom Form Libraries Integration
|
|
98
|
+
|
|
99
|
+
The library works seamlessly with popular form management libraries:
|
|
100
|
+
|
|
101
|
+
typescript
|
|
102
|
+
// With React Hook Form
|
|
103
|
+
import { useForm } from 'react-hook-form';
|
|
104
|
+
import { zodResolver } from '@hookform/resolvers/zod';
|
|
105
|
+
export function UserFormWithRHF() {
|
|
106
|
+
const form = useForm({
|
|
107
|
+
resolver: zodResolver(userSchema)
|
|
108
|
+
});
|
|
109
|
+
// ... rest of your form implementation
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
### Error Handling
|
|
113
|
+
|
|
114
|
+
typescript
|
|
115
|
+
'use client';
|
|
116
|
+
export function UserForm() {
|
|
117
|
+
const { action, isLoading, error } = useAction(createUser);
|
|
118
|
+
return (
|
|
119
|
+
|
|
120
|
+
<form action={action}>
|
|
121
|
+
{error && <div className="error">{error.message}</div>}
|
|
122
|
+
{/ form fields /}
|
|
123
|
+
</form>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
## Best Practices
|
|
128
|
+
|
|
129
|
+
1. Always define your schemas in a separate file for better reusability
|
|
130
|
+
2. Use type inference from your schemas for better type safety
|
|
131
|
+
3. Implement proper error handling both on client and server
|
|
132
|
+
4. Consider using progressive enhancement for better user experience
|
|
133
|
+
5. Follow accessibility guidelines when displaying validation messages
|
|
134
|
+
|
|
135
|
+
## TypeScript Support
|
|
136
|
+
|
|
137
|
+
The library is written in TypeScript and provides full type safety:
|
|
138
|
+
|
|
139
|
+
- Automatic type inference from Zod schemas
|
|
140
|
+
- Type-safe action responses
|
|
141
|
+
- Proper error typing
|
|
142
|
+
- IDE autocompletion support
|
|
143
|
+
|
|
144
|
+
## Contributing
|
|
145
|
+
|
|
146
|
+
Contributions are welcome! Please read our contributing guidelines before submitting a pull request.
|
|
147
|
+
|
|
148
|
+
## License
|
|
149
|
+
|
|
150
|
+
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/client/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,IAAI,EAAE,MAAM,EAAE,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/client/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,IAAI,EAAE,MAAM,EAAE,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAwF3C"}
|
package/dist/client/helpers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/client/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/client/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -11,13 +11,14 @@ export declare const useField: <Schema extends z.AnyZodObject>() => {
|
|
|
11
11
|
'aria-invalid': boolean;
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
|
-
export declare function Form<Schema extends z.AnyZodObject>({ children, action, state, schema, reset, onSuccess, onError, }: {
|
|
14
|
+
export declare function Form<Schema extends z.AnyZodObject>({ children, action, state, schema, className, reset, onSuccess, onError, }: {
|
|
15
15
|
children: React.ReactNode;
|
|
16
16
|
action: (payload: FormData) => void;
|
|
17
17
|
state: ActionResult<Schema>;
|
|
18
18
|
schema: Schema;
|
|
19
|
+
className?: string;
|
|
19
20
|
reset?: boolean;
|
|
20
|
-
onSuccess?: (
|
|
21
|
+
onSuccess?: (successData: any, formData: z.TypeOf<Schema> | undefined) => void;
|
|
21
22
|
onError?: (error: string) => void;
|
|
22
23
|
}): React.JSX.Element;
|
|
23
24
|
export declare function FormField<Schema extends z.AnyZodObject>({ render, name, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoBhD,eAAO,MAAM,QAAQ,GAAI,MAAM,SAAS,CAAC,CAAC,YAAY;;;;;cAkBlC,MAAM;;;;CAMzB,CAAC;AAEF,wBAAgB,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,EAAE,EAClD,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoBhD,eAAO,MAAM,QAAQ,GAAI,MAAM,SAAS,CAAC,CAAC,YAAY;;;;;cAkBlC,MAAM;;;;CAMzB,CAAC;AAEF,wBAAgB,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,EAAE,EAClD,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,CACV,WAAW,EAAE,GAAG,EAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,KACnC,IAAI,CAAC;IACV,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,qBAsBA;AAED,wBAAgB,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,EAAE,EACvD,MAAM,EACN,IAAI,GACL,EAAE;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC9B,qBAMA"}
|
package/dist/client/index.js
CHANGED
|
@@ -24,17 +24,17 @@ export const useField = () => {
|
|
|
24
24
|
const validationAttrs = getZodValidationAttributes(schema, [name]);
|
|
25
25
|
return {
|
|
26
26
|
invalid: state.invalid?.[name],
|
|
27
|
-
value: state.
|
|
27
|
+
value: state.formData?.[name],
|
|
28
28
|
input: {
|
|
29
29
|
id: id,
|
|
30
30
|
name: name,
|
|
31
|
-
defaultValue: state.
|
|
31
|
+
defaultValue: state.formData?.[name],
|
|
32
32
|
'aria-invalid': !!state.invalid?.[name],
|
|
33
33
|
...validationAttrs,
|
|
34
34
|
},
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
export function Form({ children, action, state, schema, reset, onSuccess, onError, }) {
|
|
37
|
+
export function Form({ children, action, state, schema, className, reset, onSuccess, onError, }) {
|
|
38
38
|
const formRef = useRef(null);
|
|
39
39
|
if (reset !== false) {
|
|
40
40
|
if (formRef.current && state.success) {
|
|
@@ -43,14 +43,14 @@ export function Form({ children, action, state, schema, reset, onSuccess, onErro
|
|
|
43
43
|
}
|
|
44
44
|
useEffect(() => {
|
|
45
45
|
if (state.success) {
|
|
46
|
-
onSuccess?.(state.
|
|
46
|
+
onSuccess?.(state.successData, state.formData);
|
|
47
47
|
}
|
|
48
48
|
else if (state.error) {
|
|
49
49
|
onError?.(state.error);
|
|
50
50
|
}
|
|
51
51
|
}, [state, onSuccess, onError]);
|
|
52
52
|
return (React.createElement(FormContext.Provider, { value: { state, schema } },
|
|
53
|
-
React.createElement("form", { action: action, ref: formRef }, children)));
|
|
53
|
+
React.createElement("form", { action: action, ref: formRef, className: className }, children)));
|
|
54
54
|
}
|
|
55
55
|
export function FormField({ render, name, }) {
|
|
56
56
|
return (React.createElement(FieldContext.Provider, { value: { name: name } },
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAGpC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAE5C,MAAM,OAAO,GAAG,GAAkC,EAAE;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;QACnC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAA6B;QAC5C,MAAM,EAAE,OAAO,CAAC,MAAgB;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAkC,EAAE;IAC1D,aAAa,CAAC,CAAC,yEAAyE;IACxF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAU,CAAC;IAE5C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;QACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAE9D,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAEzB,wCAAwC;IACxC,MAAM,eAAe,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC,IAAc,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
|
package/dist/server/actions.d.ts
CHANGED
|
@@ -2,22 +2,26 @@ import { z } from 'zod';
|
|
|
2
2
|
import { type InvalidActionResult } from './types.js';
|
|
3
3
|
export declare const action: <Schema extends z.ZodTypeAny>(schema: Schema, fn: (data: z.infer<Schema>) => unknown) => (_prevState: unknown, data: FormData) => Promise<InvalidActionResult<Schema> | {
|
|
4
4
|
success: true;
|
|
5
|
-
|
|
5
|
+
formData: z.TypeOf<Schema>;
|
|
6
|
+
successData: any;
|
|
6
7
|
invalid: undefined;
|
|
7
8
|
error: undefined;
|
|
8
9
|
} | {
|
|
9
|
-
|
|
10
|
+
formData: z.TypeOf<Schema>;
|
|
11
|
+
successData: undefined;
|
|
10
12
|
success: false;
|
|
11
13
|
invalid: undefined;
|
|
12
14
|
error: string;
|
|
13
15
|
}>;
|
|
14
16
|
export declare const actionWithParam: <Schema extends z.ZodTypeAny>(schema: Schema, fn: (param: string, data: z.infer<Schema>) => unknown) => (param: string, _prevState: unknown, data: FormData) => Promise<InvalidActionResult<Schema> | {
|
|
15
17
|
success: true;
|
|
16
|
-
|
|
18
|
+
formData: z.TypeOf<Schema>;
|
|
19
|
+
successData: any;
|
|
17
20
|
invalid: undefined;
|
|
18
21
|
error: undefined;
|
|
19
22
|
} | {
|
|
20
|
-
|
|
23
|
+
formData: z.TypeOf<Schema>;
|
|
24
|
+
successData: undefined;
|
|
21
25
|
success: false;
|
|
22
26
|
invalid: undefined;
|
|
23
27
|
error: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExE,eAAO,MAAM,MAAM,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,UACxC,MAAM,MACV,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,kBAEZ,OAAO,QAAQ,QAAQ
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExE,eAAO,MAAM,MAAM,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,UACxC,MAAM,MACV,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,kBAEZ,OAAO,QAAQ,QAAQ;;;;;;;;;;;;EA2BlD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,UACjD,MAAM,MACV,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,aAEhC,MAAM,cAAc,OAAO,QAAQ,QAAQ;;;;;;;;;;;;EA0BjE,CAAC"}
|
package/dist/server/actions.js
CHANGED
|
@@ -16,7 +16,7 @@ export const action = (schema, fn) => {
|
|
|
16
16
|
// Permit to return a FailureActionResult from the action for custom validations
|
|
17
17
|
return actionResponse;
|
|
18
18
|
}
|
|
19
|
-
return success(serialize(parsedData.data));
|
|
19
|
+
return success(serialize(parsedData.data), actionResponse);
|
|
20
20
|
}
|
|
21
21
|
catch (e) {
|
|
22
22
|
if (e instanceof Error &&
|
|
@@ -41,7 +41,7 @@ export const actionWithParam = (schema, fn) => {
|
|
|
41
41
|
if (actionResponse && isFailureActionResult(actionResponse)) {
|
|
42
42
|
return actionResponse;
|
|
43
43
|
}
|
|
44
|
-
return success(serialize(parsedData.data));
|
|
44
|
+
return success(serialize(parsedData.data), actionResponse);
|
|
45
45
|
}
|
|
46
46
|
catch (e) {
|
|
47
47
|
if (e instanceof Error &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAA8C,MAAM,YAAY,CAAC;AACxE,oBAAoB;AACpB,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,MAAc,EACd,EAAsC,EACtC,EAAE;IACF,OAAO,KAAK,EAAE,UAAmB,EAAE,IAAc,EAAE,EAAE;QACnD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,OAAO,CACZ,SAAS,CAAC,QAAQ,CAAC,EACnB,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAkC,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,cAAc,IAAI,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5D,gFAAgF;gBAChF,OAAO,cAA6C,CAAC;YACvD,CAAC;YACD,OAAO,OAAO,CAAS,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
|
package/dist/server/helpers.d.ts
CHANGED
|
@@ -1,29 +1,39 @@
|
|
|
1
1
|
import type { z } from 'zod';
|
|
2
|
-
import type { FieldErrors,
|
|
3
|
-
export declare const success: <Schema extends z.ZodTypeAny>(
|
|
2
|
+
import type { FieldErrors, InvalidActionResult } from './types.js';
|
|
3
|
+
export declare const success: <Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, successData: any) => {
|
|
4
4
|
success: true;
|
|
5
|
-
|
|
5
|
+
formData: z.TypeOf<Schema>;
|
|
6
|
+
successData: any;
|
|
6
7
|
invalid: undefined;
|
|
7
8
|
error: undefined;
|
|
8
9
|
};
|
|
9
|
-
export declare const failure: <Schema extends z.ZodTypeAny>(
|
|
10
|
+
export declare const failure: <Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, invalid: FieldErrors<Schema>) => {
|
|
10
11
|
success: false;
|
|
11
|
-
|
|
12
|
+
formData: z.TypeOf<Schema>;
|
|
13
|
+
successData: undefined;
|
|
12
14
|
invalid: FieldErrors<Schema>;
|
|
13
15
|
error: undefined;
|
|
14
16
|
};
|
|
15
|
-
export declare const error: <Schema extends z.ZodTypeAny>(
|
|
16
|
-
|
|
17
|
+
export declare const error: <Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, error: unknown) => {
|
|
18
|
+
formData: z.TypeOf<Schema>;
|
|
19
|
+
successData: undefined;
|
|
17
20
|
success: false;
|
|
18
21
|
invalid: undefined;
|
|
19
22
|
error: string;
|
|
20
23
|
};
|
|
21
|
-
export declare function setInvalid<Schema extends z.ZodTypeAny>(
|
|
24
|
+
export declare function setInvalid<Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, field: keyof z.TypeOf<Schema>, error: string): {
|
|
22
25
|
invalid: FieldErrors<Schema>;
|
|
23
26
|
success: false;
|
|
24
27
|
error: undefined;
|
|
25
|
-
|
|
28
|
+
formData: z.TypeOf<Schema>;
|
|
29
|
+
successData: undefined;
|
|
30
|
+
};
|
|
31
|
+
export declare const isFailureActionResult: <Schema extends z.ZodTypeAny>(actionResult: unknown) => actionResult is InvalidActionResult<Schema>;
|
|
32
|
+
export declare const initialState: <Schema extends z.ZodTypeAny>(formData: z.infer<Schema> | undefined) => {
|
|
33
|
+
success: false;
|
|
34
|
+
formData: z.TypeOf<Schema> | undefined;
|
|
35
|
+
successData: undefined;
|
|
36
|
+
invalid: undefined;
|
|
37
|
+
error: undefined;
|
|
26
38
|
};
|
|
27
|
-
export declare const isFailureActionResult: <Schema extends z.ZodTypeAny>(data: unknown) => data is InvalidActionResult<Schema>;
|
|
28
|
-
export declare const initialState: <Schema extends z.ZodTypeAny>(data: z.infer<Schema> | undefined) => IdleActionResult<Schema>;
|
|
29
39
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/server/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAEV,WAAW,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/server/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAEV,WAAW,EAEX,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,YACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,eACZ,GAAG;;;;;;CAQwB,CAAC;AAE3C,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,YACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAChB,WAAW,CAAC,MAAM,CAAC;;;;;;CAQY,CAAC;AAE3C,eAAO,MAAM,KAAK,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,YACrC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAClB,OAAO;;;;;;CAQwB,CAAC;AAEzC,wBAAgB,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EACpD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EACzB,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,KAAK,EAAE,MAAM;aAKK,WAAW,CAAC,MAAM,CAAC;;;;;EAMtC;AAGD,eAAO,MAAM,qBAAqB,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,gBACjD,OAAO,KACpB,YAAY,IAAI,mBAAmB,CAAC,MAAM,CAS5C,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,YAC5C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS;;;;;;CAQA,CAAC"}
|
package/dist/server/helpers.js
CHANGED
|
@@ -1,45 +1,50 @@
|
|
|
1
1
|
// ** Action result constructors helpers
|
|
2
|
-
export const success = (
|
|
2
|
+
export const success = (formData, successData) => ({
|
|
3
3
|
success: true,
|
|
4
|
-
|
|
4
|
+
formData,
|
|
5
|
+
successData,
|
|
5
6
|
invalid: undefined,
|
|
6
7
|
error: undefined,
|
|
7
8
|
});
|
|
8
|
-
export const failure = (
|
|
9
|
+
export const failure = (formData, invalid) => ({
|
|
9
10
|
success: false,
|
|
10
|
-
|
|
11
|
+
formData, // pass down the data even if there are errors to leave the form filled
|
|
12
|
+
successData: undefined,
|
|
11
13
|
invalid,
|
|
12
14
|
error: undefined,
|
|
13
15
|
});
|
|
14
|
-
export const error = (
|
|
15
|
-
|
|
16
|
+
export const error = (formData, error) => ({
|
|
17
|
+
formData, // pass down the data even if there are errors to leave the form filled
|
|
18
|
+
successData: undefined,
|
|
16
19
|
success: false,
|
|
17
20
|
invalid: undefined,
|
|
18
21
|
error: error instanceof Error ? error.message : JSON.stringify(error),
|
|
19
22
|
});
|
|
20
|
-
export function setInvalid(
|
|
23
|
+
export function setInvalid(formData, field, error) {
|
|
21
24
|
return {
|
|
22
25
|
invalid: {
|
|
23
26
|
[field]: error,
|
|
24
27
|
},
|
|
25
28
|
success: false,
|
|
26
29
|
error: undefined,
|
|
27
|
-
|
|
30
|
+
formData, // pass down the data even if there are errors to leave the form filled
|
|
31
|
+
successData: undefined,
|
|
28
32
|
};
|
|
29
33
|
}
|
|
30
34
|
// ** Action result typeguards
|
|
31
|
-
export const isFailureActionResult = (
|
|
32
|
-
return (typeof
|
|
33
|
-
|
|
34
|
-
'success' in
|
|
35
|
-
|
|
36
|
-
'invalid' in
|
|
37
|
-
|
|
35
|
+
export const isFailureActionResult = (actionResult) => {
|
|
36
|
+
return (typeof actionResult === 'object' &&
|
|
37
|
+
actionResult !== null &&
|
|
38
|
+
'success' in actionResult &&
|
|
39
|
+
actionResult.success === false &&
|
|
40
|
+
'invalid' in actionResult &&
|
|
41
|
+
actionResult.invalid !== undefined);
|
|
38
42
|
};
|
|
39
43
|
// ** Initial state helper
|
|
40
|
-
export const initialState = (
|
|
44
|
+
export const initialState = (formData) => ({
|
|
41
45
|
success: false,
|
|
42
|
-
|
|
46
|
+
formData,
|
|
47
|
+
successData: undefined,
|
|
43
48
|
invalid: undefined,
|
|
44
49
|
error: undefined,
|
|
45
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/server/helpers.ts"],"names":[],"mappings":"AASA,wCAAwC;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/server/helpers.ts"],"names":[],"mappings":"AASA,wCAAwC;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,QAAyB,EACzB,WAAgB,EAChB,EAAE,CACF,CAAC;IACC,OAAO,EAAE,IAAI;IACb,QAAQ;IACR,WAAW;IACX,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;CACjB,CAAuC,CAAC;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,QAAyB,EACzB,OAA4B,EAC5B,EAAE,CACF,CAAC;IACC,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,uEAAuE;IACjF,WAAW,EAAE,SAAS;IACtB,OAAO;IACP,KAAK,EAAE,SAAS;CACjB,CAAuC,CAAC;AAE3C,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,QAAyB,EACzB,KAAc,EACd,EAAE,CACF,CAAC;IACC,QAAQ,EAAE,uEAAuE;IACjF,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;CACtE,CAAqC,CAAC;AAEzC,MAAM,UAAU,UAAU,CACxB,QAAyB,EACzB,KAA6B,EAC7B,KAAa;IAEb,OAAO;QACL,OAAO,EAAE;YACP,CAAC,KAAK,CAAC,EAAE,KAAK;SACmB;QACnC,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,uEAAuE;QACjF,WAAW,EAAE,SAAS;KACe,CAAC;AAC1C,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,YAAqB,EACwB,EAAE;IAC/C,OAAO,CACL,OAAO,YAAY,KAAK,QAAQ;QAChC,YAAY,KAAK,IAAI;QACrB,SAAS,IAAI,YAAY;QACzB,YAAY,CAAC,OAAO,KAAK,KAAK;QAC9B,SAAS,IAAI,YAAY;QACzB,YAAY,CAAC,OAAO,KAAK,SAAS,CACnC,CAAC;AACJ,CAAC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAqC,EACrC,EAAE,CACF,CAAC;IACC,OAAO,EAAE,KAAK;IACd,QAAQ;IACR,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;CACjB,CAAoC,CAAC"}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export type IdleActionResult<Schema extends z.ZodTypeAny> = {
|
|
3
3
|
success: false;
|
|
4
|
-
|
|
4
|
+
formData: z.infer<Schema> | undefined;
|
|
5
|
+
successData: undefined;
|
|
5
6
|
invalid: undefined;
|
|
6
7
|
error: undefined;
|
|
7
8
|
};
|
|
8
9
|
export type SuccessActionResult<Schema extends z.ZodTypeAny> = {
|
|
9
10
|
success: true;
|
|
10
|
-
|
|
11
|
+
formData: z.infer<Schema> | undefined;
|
|
12
|
+
successData: any;
|
|
11
13
|
invalid: undefined;
|
|
12
14
|
error: undefined;
|
|
13
15
|
};
|
|
14
16
|
export type InvalidActionResult<Schema extends z.ZodTypeAny> = {
|
|
15
17
|
success: false;
|
|
16
|
-
|
|
18
|
+
formData: z.infer<Schema> | undefined;
|
|
19
|
+
successData: undefined;
|
|
17
20
|
invalid: FieldErrors<Schema> | undefined;
|
|
18
21
|
error: undefined;
|
|
19
22
|
};
|
|
20
23
|
export type ErrorActionResult<Schema extends z.ZodTypeAny> = {
|
|
21
24
|
success: false;
|
|
22
|
-
|
|
25
|
+
formData: z.infer<Schema> | undefined;
|
|
26
|
+
successData: undefined;
|
|
23
27
|
invalid: undefined;
|
|
24
28
|
error: string;
|
|
25
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAAI;IAC1D,OAAO,EAAE,KAAK,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAAI;IAC1D,OAAO,EAAE,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAAI;IAC7D,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAAI;IAC7D,OAAO,EAAE,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAAI;IAC3D,OAAO,EAAE,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAChD,gBAAgB,CAAC,MAAM,CAAC,GACxB,mBAAmB,CAAC,MAAM,CAAC,GAC3B,mBAAmB,CAAC,MAAM,CAAC,GAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE9B,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,IAAI;KACpD,GAAG,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS;CAC/D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-server-actions",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "A package for working with actions in React and Next.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"next",
|
|
@@ -24,6 +24,14 @@
|
|
|
24
24
|
"files": [
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm",
|
|
30
|
+
"check-format": "prettier --check .",
|
|
31
|
+
"ci": "npm run build && npm run check-format && npm run check-exports",
|
|
32
|
+
"format": "prettier --write .",
|
|
33
|
+
"prepublishOnly": "npm run ci"
|
|
34
|
+
},
|
|
27
35
|
"devDependencies": {
|
|
28
36
|
"@arethetypeswrong/cli": "^0.17.4",
|
|
29
37
|
"prettier": "^3.3.3",
|
|
@@ -33,12 +41,5 @@
|
|
|
33
41
|
"@types/react": ">=18.0.0",
|
|
34
42
|
"react": ">=18.0.0",
|
|
35
43
|
"zod": ">=3.22.4"
|
|
36
|
-
},
|
|
37
|
-
"scripts": {
|
|
38
|
-
"build": "tsc",
|
|
39
|
-
"check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm",
|
|
40
|
-
"check-format": "prettier --check .",
|
|
41
|
-
"ci": "npm run build && npm run check-format && npm run check-exports",
|
|
42
|
-
"format": "prettier --write ."
|
|
43
44
|
}
|
|
44
|
-
}
|
|
45
|
+
}
|