From f0e0cf60f01b6ceb513d5ebb8726737dd580c248 Mon Sep 17 00:00:00 2001 From: Aryan Deora Date: Fri, 16 Feb 2024 14:20:18 -0500 Subject: [PATCH] fix(solid-query): Fix Infinite Query SSR payload --- packages/solid-query/src/createBaseQuery.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/solid-query/src/createBaseQuery.ts b/packages/solid-query/src/createBaseQuery.ts index 8cb9df199a..7d4fbb4b5b 100644 --- a/packages/solid-query/src/createBaseQuery.ts +++ b/packages/solid-query/src/createBaseQuery.ts @@ -22,6 +22,7 @@ import type { CreateBaseQueryOptions } from './types' import type { Accessor } from 'solid-js' import type { QueryClient } from './QueryClient' import type { + InfiniteQueryObserverResult, Query, QueryKey, QueryObserver, @@ -47,7 +48,8 @@ function reconcileFn( } type HydratableQueryState = QueryObserverResult & - QueryState + QueryState & + InfiniteQueryObserverResult /** * Solid's `onHydrated` functionality will silently "fail" (hydrate with an empty object) @@ -62,7 +64,7 @@ const hydratableObserverResult = < >( query: Query, result: QueryObserverResult, -): HydratableQueryState => { +) => { // Including the extra properties is only relevant on the server if (!isServer) return result as HydratableQueryState @@ -76,6 +78,18 @@ const hydratableObserverResult = < TError >['refetch'], + // cast to fetchNextPage function should be safe, since we only remove it on the server, + fetchNextPage: undefined as unknown as HydratableQueryState< + TDataHydratable, + TError + >['fetchNextPage'], + + // cast to fetchPreviousPage function should be safe, since we only remove it on the server, + fetchPreviousPage: undefined as unknown as HydratableQueryState< + TDataHydratable, + TError + >['fetchPreviousPage'], + // hydrate() expects a QueryState object, which is similar but not // quite the same as a QueryObserverResult object. Thus, for now, we're // copying over the missing properties from state in order to support hydration @@ -86,7 +100,7 @@ const hydratableObserverResult = < // Unsetting these properties on the server since they might not be serializable fetchFailureReason: null, fetchMeta: null, - } + } as HydratableQueryState } // Base Query Function that is used to create the query.