react-server-actions 1.0.13 → 1.0.14

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/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { dateToInputDefaultValue, datetimeToInputDefaultValue } from './client/helpers.js';
2
2
  import { Form, FormField, useField, useForm } from './client/index.js';
3
- import { action, actionWithParam } from './server/actions.js';
4
- import { initialState, setInvalid } from './server/helpers.js';
3
+ import { ActionClient } from './server/actions.js';
4
+ import { actionError, actionInvalid, initialState } from './server/helpers.js';
5
5
  import { type ActionResult, type ErrorActionResult, type FieldErrors, type IdleActionResult, type InvalidActionResult, type SuccessActionResult } from './server/types.js';
6
- export { Form, FormField, action, actionWithParam, dateToInputDefaultValue, datetimeToInputDefaultValue, initialState, setInvalid, useField, useForm, };
6
+ export { ActionClient, Form, FormField, actionError, actionInvalid, dateToInputDefaultValue, datetimeToInputDefaultValue, initialState, useField, useForm, };
7
7
  export type { ActionResult, ErrorActionResult, FieldErrors, IdleActionResult, InvalidActionResult, SuccessActionResult, };
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,IAAI,EACJ,SAAS,EACT,MAAM,EACN,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,GACR,CAAC;AACF,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,2BAA2B,EAC3B,YAAY,EACZ,QAAQ,EACR,OAAO,GACR,CAAC;AACF,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { dateToInputDefaultValue, datetimeToInputDefaultValue, } from './client/helpers.js';
2
2
  import { Form, FormField, useField, useForm } from './client/index.js';
3
- import { action, actionWithParam } from './server/actions.js';
4
- import { initialState, setInvalid } from './server/helpers.js';
3
+ import { ActionClient } from './server/actions.js';
4
+ import { actionError, actionInvalid, initialState } from './server/helpers.js';
5
5
  import {} from './server/types.js';
6
- export { Form, FormField, action, actionWithParam, dateToInputDefaultValue, datetimeToInputDefaultValue, initialState, setInvalid, useField, useForm, };
6
+ export { ActionClient, Form, FormField, actionError, actionInvalid, dateToInputDefaultValue, datetimeToInputDefaultValue, initialState, useField, useForm, };
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAON,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,IAAI,EACJ,SAAS,EACT,MAAM,EACN,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,GACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAON,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,2BAA2B,EAC3B,YAAY,EACZ,QAAQ,EACR,OAAO,GACR,CAAC"}
@@ -1,29 +1,30 @@
1
1
  import { z } from 'zod';
2
- import { type InvalidActionResult } from './types.js';
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
- success: true;
5
- formData: z.TypeOf<Schema>;
6
- successData: any;
7
- invalid: undefined;
8
- error: undefined;
9
- } | {
10
- formData: z.TypeOf<Schema>;
11
- successData: undefined;
12
- success: false;
13
- invalid: undefined;
14
- error: string;
15
- }>;
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> | {
17
- success: true;
18
- formData: z.TypeOf<Schema>;
19
- successData: any;
20
- invalid: undefined;
21
- error: undefined;
22
- } | {
23
- formData: z.TypeOf<Schema>;
24
- successData: undefined;
25
- success: false;
26
- invalid: undefined;
27
- error: string;
28
- }>;
2
+ import { type ErrorActionResult, type InvalidActionResult } from './types.js';
3
+ export declare class ActionClient {
4
+ handleError: boolean;
5
+ constructor(options?: {
6
+ handleError: boolean;
7
+ });
8
+ action: <Schema extends z.ZodTypeAny>(schema: Schema, fn: ({ data, formData, }: {
9
+ data: z.infer<Schema>;
10
+ formData: FormData;
11
+ }) => unknown) => (_prevState: unknown, data: FormData) => Promise<InvalidActionResult<Schema> | ErrorActionResult<Schema> | {
12
+ success: true;
13
+ formData: z.TypeOf<Schema>;
14
+ successData: any;
15
+ invalid: undefined;
16
+ error: undefined;
17
+ }>;
18
+ actionWithParam: <Schema extends z.ZodTypeAny>(schema: Schema, fn: ({ param, data, formData, }: {
19
+ param: string;
20
+ data: z.infer<Schema>;
21
+ formData: FormData;
22
+ }) => unknown) => (param: string, _prevState: unknown, data: FormData) => Promise<InvalidActionResult<Schema> | ErrorActionResult<Schema> | {
23
+ success: true;
24
+ formData: z.TypeOf<Schema>;
25
+ successData: any;
26
+ invalid: undefined;
27
+ error: undefined;
28
+ }>;
29
+ }
29
30
  //# sourceMappingURL=actions.d.ts.map
@@ -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;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB,WAAW,EAAE,OAAO,CAAC;gBAET,OAAO,GAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAA0B;IAKrE,MAAM,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,UAC3B,MAAM,MACV,CAAC,EACH,IAAI,EACJ,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,QAAQ,CAAC;KACpB,KAAK,OAAO,kBAEa,OAAO,QAAQ,QAAQ;;;;;;OAsCjD;IAEF,eAAe,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,UACpC,MAAM,MACV,CAAC,EACH,KAAK,EACL,IAAI,EACJ,QAAQ,GACT,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,QAAQ,CAAC;KACpB,KAAK,OAAO,aAEQ,MAAM,cAAc,OAAO,QAAQ,QAAQ;;;;;;OAqChE;CACH"}
@@ -1,57 +1,87 @@
1
1
  import { z } from 'zod';
2
2
  import { decodeFormData, serialize } from './decode_form.js';
3
- import { error, failure, isFailureActionResult, success } from './helpers.js';
3
+ import { error, failure, isErrorActionResult, isFailureActionResult, success, } from './helpers.js';
4
4
  import {} from './types.js';
5
- // ** Action wrapper
6
- export const action = (schema, fn) => {
7
- return async (_prevState, data) => {
8
- const formData = decodeFormData(data);
9
- const parsedData = await schema.safeParseAsync(formData);
10
- if (!parsedData.success) {
11
- return failure(serialize(formData), parsedData.error.flatten().fieldErrors);
12
- }
13
- try {
14
- const actionResponse = await fn(parsedData.data);
15
- if (actionResponse && isFailureActionResult(actionResponse)) {
16
- // Permit to return a FailureActionResult from the action for custom validations
17
- return actionResponse;
5
+ export class ActionClient {
6
+ handleError;
7
+ constructor(options = { handleError: true }) {
8
+ this.handleError = options.handleError;
9
+ }
10
+ // ** Action wrapper
11
+ action = (schema, fn) => {
12
+ return async (_prevState, data) => {
13
+ const formData = decodeFormData(data);
14
+ const parsedData = await schema.safeParseAsync(formData);
15
+ if (!parsedData.success) {
16
+ return failure(serialize(formData), parsedData.error.flatten().fieldErrors);
18
17
  }
19
- return success(serialize(parsedData.data), actionResponse);
20
- }
21
- catch (e) {
22
- if (e instanceof Error &&
23
- (e.message === 'NEXT_REDIRECT' || e.message === 'NEXT_NOT_FOUND')) {
24
- throw e;
18
+ try {
19
+ const actionResponse = await fn({
20
+ data: parsedData.data,
21
+ formData: data,
22
+ });
23
+ if (actionResponse && isFailureActionResult(actionResponse)) {
24
+ // Permit to return a FailureActionResult from the action for custom validations
25
+ return actionResponse;
26
+ }
27
+ if (actionResponse && isErrorActionResult(actionResponse)) {
28
+ // Permit to return a ErrorActionResult from the action for custom errors
29
+ return actionResponse;
30
+ }
31
+ return success(serialize(parsedData.data), actionResponse);
25
32
  }
26
- else {
27
- return error(serialize(parsedData.data), e);
33
+ catch (e) {
34
+ if (this.handleError) {
35
+ if (e instanceof Error &&
36
+ (e.message === 'NEXT_REDIRECT' || e.message === 'NEXT_NOT_FOUND')) {
37
+ throw e;
38
+ }
39
+ else {
40
+ return error(serialize(parsedData.data), e);
41
+ }
42
+ }
43
+ else {
44
+ throw e;
45
+ }
28
46
  }
29
- }
47
+ };
30
48
  };
31
- };
32
- export const actionWithParam = (schema, fn) => {
33
- return async (param, _prevState, data) => {
34
- const formData = decodeFormData(data);
35
- const parsedData = await schema.safeParseAsync(formData);
36
- if (!parsedData.success) {
37
- return failure(serialize(formData), parsedData.error.flatten().fieldErrors);
38
- }
39
- try {
40
- const actionResponse = await fn(param, parsedData.data);
41
- if (actionResponse && isFailureActionResult(actionResponse)) {
42
- return actionResponse;
49
+ actionWithParam = (schema, fn) => {
50
+ return async (param, _prevState, data) => {
51
+ const formData = decodeFormData(data);
52
+ const parsedData = await schema.safeParseAsync(formData);
53
+ if (!parsedData.success) {
54
+ return failure(serialize(formData), parsedData.error.flatten().fieldErrors);
43
55
  }
44
- return success(serialize(parsedData.data), actionResponse);
45
- }
46
- catch (e) {
47
- if (e instanceof Error &&
48
- (e.message === 'NEXT_REDIRECT' || e.message === 'NEXT_NOT_FOUND')) {
49
- throw e;
56
+ try {
57
+ const actionResponse = await fn({
58
+ param,
59
+ data: parsedData.data,
60
+ formData: data,
61
+ });
62
+ if (actionResponse && isFailureActionResult(actionResponse)) {
63
+ return actionResponse;
64
+ }
65
+ if (actionResponse && isErrorActionResult(actionResponse)) {
66
+ return actionResponse;
67
+ }
68
+ return success(serialize(parsedData.data), actionResponse);
50
69
  }
51
- else {
52
- return error(serialize(parsedData.data), e);
70
+ catch (e) {
71
+ if (this.handleError) {
72
+ if (e instanceof Error &&
73
+ (e.message === 'NEXT_REDIRECT' || e.message === 'NEXT_NOT_FOUND')) {
74
+ throw e;
75
+ }
76
+ else {
77
+ return error(serialize(parsedData.data), e);
78
+ }
79
+ }
80
+ else {
81
+ throw e;
82
+ }
53
83
  }
54
- }
84
+ };
55
85
  };
56
- };
86
+ }
57
87
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { z } from 'zod';
2
- import type { FieldErrors, InvalidActionResult } from './types.js';
2
+ import type { ErrorActionResult, FieldErrors, InvalidActionResult } from './types.js';
3
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>;
@@ -21,14 +21,22 @@ export declare const error: <Schema extends z.ZodTypeAny>(formData: z.infer<Sche
21
21
  invalid: undefined;
22
22
  error: string;
23
23
  };
24
- export declare function setInvalid<Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, field: keyof z.TypeOf<Schema>, error: string): {
24
+ export declare function actionInvalid<Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, field: keyof z.TypeOf<Schema>, error: string): {
25
25
  invalid: FieldErrors<Schema>;
26
26
  success: false;
27
27
  error: undefined;
28
28
  formData: z.TypeOf<Schema>;
29
29
  successData: undefined;
30
30
  };
31
+ export declare function actionError<Schema extends z.ZodTypeAny>(formData: z.infer<Schema>, error: string): {
32
+ invalid: undefined;
33
+ success: false;
34
+ error: string;
35
+ formData: z.TypeOf<Schema>;
36
+ successData: undefined;
37
+ };
31
38
  export declare const isFailureActionResult: <Schema extends z.ZodTypeAny>(actionResult: unknown) => actionResult is InvalidActionResult<Schema>;
39
+ export declare const isErrorActionResult: <Schema extends z.ZodTypeAny>(actionResult: unknown) => actionResult is ErrorActionResult<Schema>;
32
40
  export declare const initialState: <Schema extends z.ZodTypeAny>(formData: z.infer<Schema> | undefined) => {
33
41
  success: false;
34
42
  formData: z.TypeOf<Schema> | undefined;
@@ -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,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"}
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,EACV,iBAAiB,EACjB,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,aAAa,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EACvD,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;AAED,wBAAgB,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EACrD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EACzB,KAAK,EAAE,MAAM;;;;;;EASd;AAGD,eAAO,MAAM,qBAAqB,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,gBACjD,OAAO,KACpB,YAAY,IAAI,mBAAmB,CAAC,MAAM,CAS5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,gBAC/C,OAAO,KACpB,YAAY,IAAI,iBAAiB,CAAC,MAAM,CAS1C,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,YAC5C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS;;;;;;CAQA,CAAC"}
@@ -20,7 +20,7 @@ export const error = (formData, error) => ({
20
20
  invalid: undefined,
21
21
  error: error instanceof Error ? error.message : JSON.stringify(error),
22
22
  });
23
- export function setInvalid(formData, field, error) {
23
+ export function actionInvalid(formData, field, error) {
24
24
  return {
25
25
  invalid: {
26
26
  [field]: error,
@@ -31,6 +31,15 @@ export function setInvalid(formData, field, error) {
31
31
  successData: undefined,
32
32
  };
33
33
  }
34
+ export function actionError(formData, error) {
35
+ return {
36
+ invalid: undefined,
37
+ success: false,
38
+ error: error,
39
+ formData, // pass down the data even if there are errors to leave the form filled
40
+ successData: undefined,
41
+ };
42
+ }
34
43
  // ** Action result typeguards
35
44
  export const isFailureActionResult = (actionResult) => {
36
45
  return (typeof actionResult === 'object' &&
@@ -40,6 +49,14 @@ export const isFailureActionResult = (actionResult) => {
40
49
  'invalid' in actionResult &&
41
50
  actionResult.invalid !== undefined);
42
51
  };
52
+ export const isErrorActionResult = (actionResult) => {
53
+ return (typeof actionResult === 'object' &&
54
+ actionResult !== null &&
55
+ 'success' in actionResult &&
56
+ actionResult.success === false &&
57
+ 'error' in actionResult &&
58
+ actionResult.error !== undefined);
59
+ };
43
60
  // ** Initial state helper
44
61
  export const initialState = (formData) => ({
45
62
  success: false,
@@ -1 +1 @@
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"}
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,aAAa,CAC3B,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,MAAM,UAAU,WAAW,CACzB,QAAyB,EACzB,KAAa;IAEb,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,uEAAuE;QACjF,WAAW,EAAE,SAAS;KACa,CAAC;AACxC,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,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,YAAqB,EACsB,EAAE;IAC7C,OAAO,CACL,OAAO,YAAY,KAAK,QAAQ;QAChC,YAAY,KAAK,IAAI;QACrB,SAAS,IAAI,YAAY;QACzB,YAAY,CAAC,OAAO,KAAK,KAAK;QAC9B,OAAO,IAAI,YAAY;QACvB,YAAY,CAAC,KAAK,KAAK,SAAS,CACjC,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-server-actions",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "A package for working with actions in React and Next.js",
5
5
  "keywords": [
6
6
  "next",