From 12c70751a6bc87c9dee0df6000ebd6e5fece8172 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sat, 10 Jun 2023 10:29:07 +0200 Subject: [PATCH] fix(dev): only apply pretty types for objects --- packages/remix-server-runtime/serialize.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/remix-server-runtime/serialize.ts b/packages/remix-server-runtime/serialize.ts index 7e2f9c98f71..b9514f87073 100644 --- a/packages/remix-server-runtime/serialize.ts +++ b/packages/remix-server-runtime/serialize.ts @@ -3,6 +3,7 @@ import type { TypedDeferredData, TypedResponse } from "./responses"; // force Typescript to simplify the type type Pretty = { [K in keyof T]: T[K] } & {}; +type PrettyTransform = [T] extends [U] ? T : Pretty; type JsonPrimitive = | string @@ -21,7 +22,7 @@ type NonJsonPrimitive = undefined | Function | symbol; type IsAny = 0 extends 1 & T ? true : false; // prettier-ignore -type Serialize = Pretty< +type Serialize = IsAny extends true ? any : T extends TypedDeferredData ? SerializeDeferred : T extends JsonPrimitive ? T : @@ -30,9 +31,9 @@ type Serialize = Pretty< T extends [] ? [] : T extends [unknown, ...unknown[]] ? SerializeTuple : T extends ReadonlyArray ? (U extends NonJsonPrimitive ? null : Serialize)[] : - T extends object ? SerializeObject> : + T extends object ? PrettyTransform>> : never ->; +; /** JSON serialize [tuples](https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types) */ type SerializeTuple = {