diff --git a/packages/router-core/src/serializer.ts b/packages/router-core/src/serializer.ts index 438be56e72..aaa2163cee 100644 --- a/packages/router-core/src/serializer.ts +++ b/packages/router-core/src/serializer.ts @@ -5,17 +5,23 @@ export interface StartSerializer { decode: (value: T) => T } +type JSONLiteral = string | boolean | null | number + export type SerializerStringifyBy = T extends TSerializable ? T - : T extends (...args: Array) => any - ? 'Function is not serializable' - : { [K in keyof T]: SerializerStringifyBy } + : T extends JSONLiteral + ? T + : T extends (...args: Array) => any + ? 'Function is not serializable' + : { [K in keyof T]: SerializerStringifyBy } export type SerializerParseBy = T extends TSerializable ? T - : T extends React.JSX.Element - ? ReadableStream - : { [K in keyof T]: SerializerParseBy } + : T extends JSONLiteral + ? T + : T extends React.JSX.Element + ? ReadableStream + : { [K in keyof T]: SerializerParseBy } export type Serializable = Date | undefined | Error | FormData | bigint diff --git a/packages/start-client-core/src/tests/createServerMiddleware.test-d.ts b/packages/start-client-core/src/tests/createServerMiddleware.test-d.ts index 22caa76e3d..f8dfe7d788 100644 --- a/packages/start-client-core/src/tests/createServerMiddleware.test-d.ts +++ b/packages/start-client-core/src/tests/createServerMiddleware.test-d.ts @@ -201,7 +201,7 @@ test('createMiddleware merges client context and sends to the server', () => { expectTypeOf(result).toEqualTypeOf<{ 'use functions must return the result of next()': true context: { a: boolean; b: string; c: number } - sendContext: { a: boolean; b: string; c: number; d: number } + sendContext: { a: boolean; b: string; c: number; d: 5 } headers: HeadersInit }>() @@ -215,7 +215,7 @@ test('createMiddleware merges client context and sends to the server', () => { a: boolean b: string c: number - d: number + d: 5 }>() const result = await options.next({ @@ -232,7 +232,7 @@ test('createMiddleware merges client context and sends to the server', () => { } sendContext: undefined } - context: { a: boolean; b: string; c: number; d: number; e: string } + context: { a: boolean; b: string; c: number; d: 5; e: string } sendContext: undefined }>()