|
1 | 1 | import { isClerkAPIResponseError } from '@clerk/shared/error'; |
| 2 | +import { snakeToCamel } from '@clerk/shared/underscore'; |
2 | 3 | import type { Errors, SignInSignal, SignUpSignal } from '@clerk/types'; |
3 | 4 | import { computed, signal } from 'alien-signals'; |
4 | 5 |
|
@@ -69,44 +70,12 @@ function errorsToParsedErrors(error: unknown): Errors { |
69 | 70 |
|
70 | 71 | error.errors.forEach(error => { |
71 | 72 | if ('meta' in error && error.meta && 'paramName' in error.meta) { |
72 | | - switch (error.meta.paramName) { |
73 | | - case 'first_name': |
74 | | - parsedErrors.fields.firstName = error; |
75 | | - break; |
76 | | - case 'last_name': |
77 | | - parsedErrors.fields.lastName = error; |
78 | | - break; |
79 | | - case 'email_address': |
80 | | - parsedErrors.fields.emailAddress = error; |
81 | | - break; |
82 | | - case 'identifier': |
83 | | - parsedErrors.fields.identifier = error; |
84 | | - break; |
85 | | - case 'phone_number': |
86 | | - parsedErrors.fields.phoneNumber = error; |
87 | | - break; |
88 | | - case 'password': |
89 | | - parsedErrors.fields.password = error; |
90 | | - break; |
91 | | - case 'username': |
92 | | - parsedErrors.fields.username = error; |
93 | | - break; |
94 | | - case 'code': |
95 | | - parsedErrors.fields.code = error; |
96 | | - break; |
97 | | - case 'captcha': |
98 | | - parsedErrors.fields.captcha = error; |
99 | | - break; |
100 | | - case 'legal_accepted': |
101 | | - parsedErrors.fields.legalAccepted = error; |
102 | | - break; |
103 | | - default: |
104 | | - parsedErrors.global.push(error); |
105 | | - break; |
106 | | - } |
107 | | - } else { |
108 | | - parsedErrors.global.push(error); |
| 73 | + const name = snakeToCamel(error.meta.paramName); |
| 74 | + parsedErrors.fields[name as keyof typeof parsedErrors.fields] = error; |
| 75 | + return; |
109 | 76 | } |
| 77 | + |
| 78 | + parsedErrors.global.push(error); |
110 | 79 | }); |
111 | 80 |
|
112 | 81 | return parsedErrors; |
|
0 commit comments