Skip to content

Commit 75a2b2c

Browse files
Andrei FedosjeenkoAndrei Fedosjeenko
authored andcommitted
fix: TS types
1 parent 42e348c commit 75a2b2c

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

src/middleware/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ export function unstable_extractFormDataMiddleware({
3636
export const getFormData = (context: unstable_RouterContextProvider) =>
3737
context.get(formDataContext);
3838

39-
export const getValidatedFormData = async <T extends FieldValues>(
39+
export const getValidatedFormData = async <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(
4040
context: unstable_RouterContextProvider,
41-
resolver: Resolver<T>,
41+
resolver: Resolver<TFieldValues, TContext, TTransformedValues>,
4242
) => {
4343
const formData = context.get(formDataContext);
4444
const data = await validateFormData(formData, resolver);

src/utilities/index.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,23 +90,23 @@ export const getFormDataFromSearchParams = <T extends FieldValues>(
9090
export const isGet = (request: Pick<Request, "method">) =>
9191
request.method === "GET" || request.method === "get";
9292

93-
type ReturnData<T extends FieldValues> =
94-
| { data: T; errors: undefined; receivedValues: Partial<T> }
95-
| { data: undefined; errors: FieldErrors<T>; receivedValues: Partial<T> };
93+
type ReturnData<TFieldValues extends FieldValues, TTransformedValues = TFieldValues> =
94+
| { data: TTransformedValues; errors: undefined; receivedValues: Partial<TFieldValues> }
95+
| { data: undefined; errors: FieldErrors<TFieldValues>; receivedValues: Partial<TFieldValues> };
9696
/**
9797
* Parses the data from an HTTP request and validates it against a schema. Works in both loaders and actions, in loaders it extracts the data from the search params.
9898
* In actions it extracts it from request formData.
9999
*
100100
* @returns A Promise that resolves to an object containing the validated data or any errors that occurred during validation.
101101
*/
102-
export const getValidatedFormData = async <T extends FieldValues>(
102+
export const getValidatedFormData = async <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(
103103
request: Request | FormData,
104-
resolver: Resolver<T>,
104+
resolver: Resolver<TFieldValues, TContext, TTransformedValues>,
105105
preserveStringified = false,
106-
): Promise<ReturnData<T>> => {
107-
const { receivedValues } = await getFormData<T>(request, preserveStringified);
106+
): Promise<ReturnData<TFieldValues, TTransformedValues>> => {
107+
const { receivedValues } = await getFormData<TFieldValues>(request, preserveStringified);
108108

109-
const data = await validateFormData<T>(receivedValues, resolver);
109+
const data = await validateFormData(receivedValues, resolver);
110110

111111
return { ...data, receivedValues };
112112
};
@@ -134,24 +134,24 @@ export const getFormData = async <T extends FieldValues>(
134134
* @param resolver Schema to validate and cast the data with
135135
* @returns Returns the validated data if successful, otherwise returns the error object
136136
*/
137-
export const validateFormData = async <T extends FieldValues>(
137+
export const validateFormData = async <TFieldValues extends FieldValues, TContext extends any, TTransformedValues = TFieldValues>(
138138
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
139139
data: any,
140-
resolver: Resolver<T>,
140+
resolver: Resolver<TFieldValues, TContext, TTransformedValues>,
141141
) => {
142142
const dataToValidate =
143143
data instanceof FormData ? Object.fromEntries(data) : data;
144144
const { errors, values } = await resolver(
145145
dataToValidate,
146-
{},
146+
{} as TContext,
147147
{ shouldUseNativeValidation: false, fields: {} },
148148
);
149149

150150
if (Object.keys(errors).length > 0) {
151-
return { errors: errors as FieldErrors<T>, data: undefined };
151+
return { errors: errors as FieldErrors<TFieldValues>, data: undefined };
152152
}
153153

154-
return { errors: undefined, data: values as T };
154+
return { errors: undefined, data: values as TTransformedValues };
155155
};
156156
/**
157157
Creates a new instance of FormData with the specified data and key.

0 commit comments

Comments
 (0)