From 729c199f66e97700ac88a9f287b902266848cc9d Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Thu, 15 Jun 2023 16:09:56 -0400 Subject: [PATCH 1/2] fix(types): better tuple serialization types --- packages/remix-server-runtime/serialize.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/remix-server-runtime/serialize.ts b/packages/remix-server-runtime/serialize.ts index b9514f87073..a7ecbf1e4fb 100644 --- a/packages/remix-server-runtime/serialize.ts +++ b/packages/remix-server-runtime/serialize.ts @@ -29,16 +29,16 @@ type Serialize = T extends NonJsonPrimitive ? never : T extends { toJSON(): infer U } ? U : T extends [] ? [] : - T extends [unknown, ...unknown[]] ? SerializeTuple : + T extends [unknown, ...unknown[]] ? PrettyTransform> : T extends ReadonlyArray ? (U extends NonJsonPrimitive ? null : Serialize)[] : T extends object ? PrettyTransform>> : never ; /** JSON serialize [tuples](https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types) */ -type SerializeTuple = { - [k in keyof T]: T[k] extends NonJsonPrimitive ? null : Serialize; -}; +type SerializeTuple = T extends [infer F, ...infer R] + ? [Serialize, ...SerializeTuple] + : []; /** JSON serialize objects (not including arrays) and classes */ type SerializeObject = { From 2d41862598763a12bbcc795eea58b1c72468c231 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Fri, 16 Jun 2023 11:03:12 -0400 Subject: [PATCH 2/2] Create neat-poets-scream.md --- .changeset/neat-poets-scream.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/neat-poets-scream.md diff --git a/.changeset/neat-poets-scream.md b/.changeset/neat-poets-scream.md new file mode 100644 index 00000000000..282498d5a26 --- /dev/null +++ b/.changeset/neat-poets-scream.md @@ -0,0 +1,7 @@ +--- +"remix": patch +"@remix-run/serve": patch +"@remix-run/server-runtime": patch +--- + +fix(types): better tuple serialization types