Skip to content

Commit 6ae12bf

Browse files
committed
allow reponse/formdata
1 parent 581f1e5 commit 6ae12bf

File tree

2 files changed

+28
-25
lines changed

2 files changed

+28
-25
lines changed

packages/router-core/src/ssr/serializer/transformer.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,19 @@ export type ValidateSerializable<T, TSerializable> = T extends TSerializable
3434
? T
3535
: T extends (...args: Array<any>) => any
3636
? 'Function is not serializable'
37-
: T extends Promise<any>
38-
? ValidateSerializablePromise<T, TSerializable>
39-
: T extends ReadableStream<any>
40-
? ValidateReadableStream<T, TSerializable>
41-
: T extends Set<any>
42-
? ValidateSerializableSet<T, TSerializable>
43-
: T extends Map<any, any>
44-
? ValidateSerializableMap<T, TSerializable>
45-
: {
46-
[K in keyof T]: ValidateSerializable<T[K], TSerializable>
47-
}
37+
: unknown extends T
38+
? 'Unknown might not be serializable'
39+
: T extends Promise<any>
40+
? ValidateSerializablePromise<T, TSerializable>
41+
: T extends ReadableStream<any>
42+
? ValidateReadableStream<T, TSerializable>
43+
: T extends Set<any>
44+
? ValidateSerializableSet<T, TSerializable>
45+
: T extends Map<any, any>
46+
? ValidateSerializableMap<T, TSerializable>
47+
: {
48+
[K in keyof T]: ValidateSerializable<T[K], TSerializable>
49+
}
4850

4951
export type ValidateSerializablePromise<T, TSerializable> =
5052
T extends Promise<infer TAwaited>

packages/start-client-core/src/createServerFn.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ import type {
99
Constrain,
1010
Expand,
1111
Register,
12-
RegisteredSerializableInput,
1312
ResolveValidatorInput,
14-
ValidateSerializable,
1513
ValidateSerializableInput,
1614
ValidateSerializableInputResult,
1715
Validator,
@@ -330,8 +328,12 @@ export interface FullFetcherData<
330328
context: AssignAllClientSendContext<TMiddlewares>
331329
}
332330

333-
export type FetcherData<TRegister extends Register, TResponse> =
334-
TResponse extends JsonResponse<any>
331+
export type FetcherData<
332+
TRegister extends Register,
333+
TResponse,
334+
> = TResponse extends Response
335+
? Response
336+
: TResponse extends JsonResponse<any>
335337
? ValidateSerializableInputResult<TRegister, ReturnType<TResponse['json']>>
336338
: ValidateSerializableInputResult<TRegister, TResponse>
337339

@@ -351,9 +353,11 @@ export type ServerFnReturnType<
351353
TResponse,
352354
> = TServerFnResponseType extends 'raw'
353355
? RawResponse | Promise<RawResponse>
354-
:
355-
| Promise<ValidateSerializableInput<TRegister, TResponse>>
356-
| ValidateSerializableInput<TRegister, TResponse>
356+
: TResponse extends Response
357+
? TResponse
358+
:
359+
| Promise<ValidateSerializableInput<TRegister, TResponse>>
360+
| ValidateSerializableInput<TRegister, TResponse>
357361

358362
export type ServerFn<
359363
TRegister extends Register,
@@ -416,13 +420,10 @@ export type ServerFnBaseOptions<
416420
functionId: string
417421
}
418422

419-
export type ValidateValidatorInput<
420-
TRegister extends Register,
421-
TValidator,
422-
> = ValidateSerializable<
423-
ResolveValidatorInput<TValidator>,
424-
RegisteredSerializableInput<TRegister> | FormData
425-
>
423+
export type ValidateValidatorInput<TRegister extends Register, TValidator> =
424+
ResolveValidatorInput<TValidator> extends FormData
425+
? ResolveValidatorInput<TValidator>
426+
: ValidateSerializableInput<TRegister, ResolveValidatorInput<TValidator>>
426427

427428
export type ValidateValidator<TRegister extends Register, TValidator> =
428429
ValidateValidatorInput<TRegister, TValidator> extends infer TInput

0 commit comments

Comments
 (0)