Skip to content

Commit 7e77aa3

Browse files
committed
Array-level errors couldn't be added with setError.
1 parent a84df0b commit 7e77aa3

File tree

4 files changed

+11
-6
lines changed

4 files changed

+11
-6
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ Headlines: Added, Changed, Deprecated, Removed, Fixed, Security
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [1.1.3] - 2023-06-29
99

1010
### Fixed
1111

12+
- Array-level errors couldn't be added with `setError`.
1213
- Native string enums weren't working when posting the actual string value.
1314

1415
## [1.1.2] - 2023-06-24

src/errors.test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,21 @@ describe('Errors', async () => {
2222
expect(output.data.name).toBeNull();
2323

2424
const err = {
25+
_errors: ['Form-level error'],
2526
scopeId: ['This is an error'],
2627
enumber: ['This should be ok', 'Still ok'],
27-
arr: { 3: ['Array error'] },
28+
arr: { _errors: ['Array-level error'], 3: ['Array item error'] },
2829
object: { name: ['Object error'] }
2930
};
3031

3132
setError(output, 'scopeId', 'This should not be displayed.');
3233
setError(output, 'scopeId', 'This is an error', { overwrite: true });
3334
setError(output, 'object.name', 'Object error');
34-
setError(output, 'arr[3]', 'Array error');
35+
setError(output, 'arr[3]', 'Array item error');
3536
setError(output, 'enumber', 'This should be ok');
3637
setError(output, 'enumber', 'Still ok');
38+
setError(output, 'arr._errors', 'Array-level error');
39+
setError(output, '', 'Form-level error');
3740

3841
assert(!output.valid);
3942
expect(output.errors).toStrictEqual(err);

src/lib/stringPath.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ export type StringPathLeaves<
7171
> = NonNullable<T> extends (infer U)[]
7272
? NonNullable<U> extends object
7373
?
74-
| `[${number}].${Arr}`
7574
| `[${number}]${NonNullable<U> extends unknown[]
7675
? ''
7776
: '.'}${StringPathLeaves<NonNullable<U>, Arr> & string}`
@@ -90,7 +89,9 @@ export type StringPathLeaves<
9089
[K in keyof T]-?: K extends string
9190
? NonNullable<T[K]> extends object
9291
?
93-
| ArrField<Arr, K>
92+
| (NonNullable<T[K]> extends unknown[]
93+
? ArrField<Arr, K>
94+
: never)
9495
| `${K}${NonNullable<T[K]> extends unknown[]
9596
? ''
9697
: '.'}${StringPathLeaves<NonNullable<T[K]>, Arr> &

src/lib/superValidate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export const setMessage = message;
6161
*/
6262
export function setError<T extends ZodValidation<AnyZodObject>>(
6363
form: SuperValidated<T, unknown>,
64-
path: '' | StringPathLeaves<z.infer<UnwrapEffects<T>>>,
64+
path: '' | StringPathLeaves<z.infer<UnwrapEffects<T>>, '_errors'>,
6565
error: string | string[],
6666
options: { overwrite?: boolean; status?: NumericRange<400, 599> } = {
6767
overwrite: false,

0 commit comments

Comments
 (0)