Skip to content

Commit 8896514

Browse files
committed
ok i mean it's deduplicated but needs a leaf sentinel so whatevs
1 parent 4232826 commit 8896514

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

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

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,29 @@ export type ValidateSerializableMap<T, TSerializable> =
7171
>
7272
: never
7373

74-
type ValidateSerializableArray<T extends ReadonlyArray<any>, TSerializable> =
74+
type ApplyArrayValidation<
75+
TValue,
76+
TSerializable,
77+
TKind extends 'input' | 'result',
78+
> = TKind extends 'input'
79+
? ValidateSerializable<TValue, TSerializable>
80+
: ValidateSerializableResult<TValue, TSerializable>
81+
82+
type ValidateSerializableArrayCore<
83+
T extends ReadonlyArray<any>,
84+
TSerializable,
85+
TKind extends 'input' | 'result',
86+
> =
7587
IsTuple<T> extends true
76-
? { [K in keyof T]: ValidateSerializable<T[K], TSerializable> }
88+
? { [K in keyof T]: ApplyArrayValidation<T[K], TSerializable, TKind> }
7789
: T extends Array<infer U>
78-
? Array<ValidateSerializable<U, TSerializable>>
79-
: ReadonlyArray<ValidateSerializable<T[number], TSerializable>>
90+
? Array<ApplyArrayValidation<U, TSerializable, TKind>>
91+
: ReadonlyArray<ApplyArrayValidation<T[number], TSerializable, TKind>>
92+
93+
type ValidateSerializableArray<
94+
T extends ReadonlyArray<any>,
95+
TSerializable,
96+
> = ValidateSerializableArrayCore<T, TSerializable, 'input'>
8097

8198
type IsTuple<T extends ReadonlyArray<any>> = T extends readonly []
8299
? true
@@ -202,12 +219,7 @@ export type ValidateSerializableResult<T, TSerializable> = T extends unknown
202219
type ValidateSerializableResultArray<
203220
T extends ReadonlyArray<any>,
204221
TSerializable,
205-
> =
206-
IsTuple<T> extends true
207-
? { [K in keyof T]: ValidateSerializableResult<T[K], TSerializable> }
208-
: T extends Array<infer U>
209-
? Array<ValidateSerializableResult<U, TSerializable>>
210-
: ReadonlyArray<ValidateSerializableResult<T[number], TSerializable>>
222+
> = ValidateSerializableArrayCore<T, TSerializable, 'result'>
211223

212224
export type RegisteredSSROption<TRegister> =
213225
unknown extends RegisteredConfigType<TRegister, 'defaultSsr'>

0 commit comments

Comments
 (0)