diff --git a/packages/solid-query/src/__tests__/createInfiniteQuery.test-d.tsx b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx similarity index 93% rename from packages/solid-query/src/__tests__/createInfiniteQuery.test-d.tsx rename to packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx index eea81df7c1..664d979a02 100644 --- a/packages/solid-query/src/__tests__/createInfiniteQuery.test-d.tsx +++ b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -1,14 +1,12 @@ import { describe } from 'node:test' import { expectTypeOf, it } from 'vitest' import { type InfiniteData, dataTagSymbol } from '@tanstack/query-core' -import { - createInfiniteQuery, - infiniteQueryOptions, -} from '../createInfiniteQuery' +import { createInfiniteQuery } from '../createInfiniteQuery' +import { infiniteQueryOptions } from '../infiniteQueryOptions' import type { DefinedInitialDataInfiniteOptions, UndefinedInitialDataInfiniteOptions, -} from '../createInfiniteQuery' +} from '../infiniteQueryOptions' const doNotRun = (_callback: () => void) => {} diff --git a/packages/solid-query/src/__tests__/queryOptions.test-d.tsx b/packages/solid-query/src/__tests__/queryOptions.test-d.tsx index 080b23e5c3..b4657b9135 100644 --- a/packages/solid-query/src/__tests__/queryOptions.test-d.tsx +++ b/packages/solid-query/src/__tests__/queryOptions.test-d.tsx @@ -1,6 +1,7 @@ import { describe, expect, expectTypeOf, it } from 'vitest' import { QueryClient, dataTagSymbol, skipToken } from '@tanstack/query-core' -import { createQuery, queryOptions } from '../createQuery' +import { createQuery } from '../createQuery' +import { queryOptions } from '../queryOptions' describe('queryOptions', () => { it('should not allow excess properties', () => { diff --git a/packages/solid-query/src/createInfiniteQuery.ts b/packages/solid-query/src/createInfiniteQuery.ts index 10e08b96ac..dade59f357 100644 --- a/packages/solid-query/src/createInfiniteQuery.ts +++ b/packages/solid-query/src/createInfiniteQuery.ts @@ -2,7 +2,6 @@ import { InfiniteQueryObserver } from '@tanstack/query-core' import { createMemo } from 'solid-js' import { createBaseQuery } from './createBaseQuery' import type { - DataTag, DefaultError, InfiniteData, QueryKey, @@ -13,111 +12,12 @@ import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult, DefinedCreateInfiniteQueryResult, - FunctionedParams, - SolidInfiniteQueryOptions, } from './types' import type { Accessor } from 'solid-js' - -export type UndefinedInitialDataInfiniteOptions< - TQueryFnData, - TError = DefaultError, - TData = InfiniteData, - TQueryKey extends QueryKey = QueryKey, - TPageParam = unknown, -> = FunctionedParams< - SolidInfiniteQueryOptions< - TQueryFnData, - TError, - TData, - TQueryFnData, - TQueryKey, - TPageParam - > & { - initialData?: undefined - } -> -type NonUndefinedGuard = T extends undefined ? never : T -export type DefinedInitialDataInfiniteOptions< - TQueryFnData, - TError = DefaultError, - // should we handle page param correctly - TData = InfiniteData, - TQueryKey extends QueryKey = QueryKey, - TPageParam = unknown, -> = FunctionedParams< - SolidInfiniteQueryOptions< - TQueryFnData, - TError, - TData, - TQueryFnData, - TQueryKey, - TPageParam - > & { - initialData: - | NonUndefinedGuard> - | (() => NonUndefinedGuard>) - } -> -function infiniteQueryOptions< - TQueryFnData, - TError = DefaultError, - TData = InfiniteData, - TQueryKey extends QueryKey = QueryKey, - TPageParam = unknown, ->( - options: ReturnType< - DefinedInitialDataInfiniteOptions< - TQueryFnData, - TError, - TData, - TQueryKey, - TPageParam - > - >, -): ReturnType< - DefinedInitialDataInfiniteOptions< - TQueryFnData, - TError, - TData, - TQueryKey, - TPageParam - > -> & { - queryKey: DataTag> -} -function infiniteQueryOptions< - TQueryFnData, - TError = DefaultError, - TData = InfiniteData, - TQueryKey extends QueryKey = QueryKey, - TPageParam = unknown, ->( - options: ReturnType< - UndefinedInitialDataInfiniteOptions< - TQueryFnData, - TError, - TData, - TQueryKey, - TPageParam - > - >, -): ReturnType< - UndefinedInitialDataInfiniteOptions< - TQueryFnData, - TError, - TData, - TQueryKey, - TPageParam - > -> & { - queryKey: DataTag> -} - -function infiniteQueryOptions(options: unknown) { - return options -} - -export { infiniteQueryOptions } +import type { + DefinedInitialDataInfiniteOptions, + UndefinedInitialDataInfiniteOptions, +} from './infiniteQueryOptions' export function createInfiniteQuery< TQueryFnData, diff --git a/packages/solid-query/src/createQuery.ts b/packages/solid-query/src/createQuery.ts index 9fa9bf30ad..46609cbffb 100644 --- a/packages/solid-query/src/createQuery.ts +++ b/packages/solid-query/src/createQuery.ts @@ -1,82 +1,18 @@ import { QueryObserver } from '@tanstack/query-core' import { createMemo } from 'solid-js' import { createBaseQuery } from './createBaseQuery' -import type { DataTag, DefaultError, QueryKey } from '@tanstack/query-core' +import type { DefaultError, QueryKey } from '@tanstack/query-core' import type { QueryClient } from './QueryClient' import type { Accessor } from 'solid-js' import type { CreateQueryOptions, CreateQueryResult, DefinedCreateQueryResult, - FunctionedParams, - SolidQueryOptions, } from './types' - -export type UndefinedInitialDataOptions< - TQueryFnData = unknown, - TError = DefaultError, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, -> = FunctionedParams< - SolidQueryOptions & { - initialData?: undefined - } -> - -export type DefinedInitialDataOptions< - TQueryFnData = unknown, - TError = DefaultError, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, -> = FunctionedParams< - SolidQueryOptions & { - initialData: TQueryFnData | (() => TQueryFnData) - } -> - -export function queryOptions< - TQueryFnData = unknown, - TError = unknown, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, - TOptions extends ReturnType< - UndefinedInitialDataOptions - > = ReturnType< - UndefinedInitialDataOptions - >, ->( - options: ReturnType< - UndefinedInitialDataOptions - >, -): ReturnType< - UndefinedInitialDataOptions -> & { - queryKey: DataTag -} - -export function queryOptions< - TQueryFnData = unknown, - TError = unknown, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, - TOptions extends ReturnType< - DefinedInitialDataOptions - > = ReturnType< - DefinedInitialDataOptions - >, ->( - options: ReturnType< - DefinedInitialDataOptions - >, -): ReturnType< - DefinedInitialDataOptions -> & { - queryKey: DataTag -} - -export function queryOptions(options: unknown) { - return options -} +import type { + DefinedInitialDataOptions, + UndefinedInitialDataOptions, +} from './queryOptions' export function createQuery< TQueryFnData = unknown, diff --git a/packages/solid-query/src/index.ts b/packages/solid-query/src/index.ts index eb7df5893b..5a1a6cce9a 100644 --- a/packages/solid-query/src/index.ts +++ b/packages/solid-query/src/index.ts @@ -12,11 +12,12 @@ export type { QueryClientConfig, InfiniteQueryObserverOptions, } from './QueryClient' -export { createQuery, queryOptions } from './createQuery' +export { createQuery } from './createQuery' +export { queryOptions } from './queryOptions' export type { DefinedInitialDataOptions, UndefinedInitialDataOptions, -} from './createQuery' +} from './queryOptions' export { QueryClientContext, QueryClientProvider, @@ -24,14 +25,12 @@ export { } from './QueryClientProvider' export type { QueryClientProviderProps } from './QueryClientProvider' export { useIsFetching } from './useIsFetching' -export { - createInfiniteQuery, - infiniteQueryOptions, -} from './createInfiniteQuery' +export { createInfiniteQuery } from './createInfiniteQuery' +export { infiniteQueryOptions } from './infiniteQueryOptions' export type { DefinedInitialDataInfiniteOptions, UndefinedInitialDataInfiniteOptions, -} from './createInfiniteQuery' +} from './infiniteQueryOptions' export { createMutation } from './createMutation' export { useIsMutating } from './useIsMutating' export { useMutationState } from './useMutationState' diff --git a/packages/solid-query/src/infiniteQueryOptions.ts b/packages/solid-query/src/infiniteQueryOptions.ts new file mode 100644 index 0000000000..95d28d516a --- /dev/null +++ b/packages/solid-query/src/infiniteQueryOptions.ts @@ -0,0 +1,108 @@ +import type { + DataTag, + DefaultError, + InfiniteData, + QueryKey, +} from '@tanstack/query-core' +import type { FunctionedParams, SolidInfiniteQueryOptions } from './types' + +export type UndefinedInitialDataInfiniteOptions< + TQueryFnData, + TError = DefaultError, + TData = InfiniteData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +> = FunctionedParams< + SolidInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey, + TPageParam + > & { + initialData?: undefined + } +> + +type NonUndefinedGuard = T extends undefined ? never : T + +export type DefinedInitialDataInfiniteOptions< + TQueryFnData, + TError = DefaultError, + // should we handle page param correctly + TData = InfiniteData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +> = FunctionedParams< + SolidInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey, + TPageParam + > & { + initialData: + | NonUndefinedGuard> + | (() => NonUndefinedGuard>) + } +> +export function infiniteQueryOptions< + TQueryFnData, + TError = DefaultError, + TData = InfiniteData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +>( + options: ReturnType< + DefinedInitialDataInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + > + >, +): ReturnType< + DefinedInitialDataInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + > +> & { + queryKey: DataTag> +} +export function infiniteQueryOptions< + TQueryFnData, + TError = DefaultError, + TData = InfiniteData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +>( + options: ReturnType< + UndefinedInitialDataInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + > + >, +): ReturnType< + UndefinedInitialDataInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + > +> & { + queryKey: DataTag> +} + +export function infiniteQueryOptions(options: unknown) { + return options +} diff --git a/packages/solid-query/src/queryOptions.ts b/packages/solid-query/src/queryOptions.ts new file mode 100644 index 0000000000..50c7d81151 --- /dev/null +++ b/packages/solid-query/src/queryOptions.ts @@ -0,0 +1,68 @@ +import type { DataTag, DefaultError, QueryKey } from '@tanstack/query-core' +import type { FunctionedParams, SolidQueryOptions } from './types' + +export type UndefinedInitialDataOptions< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = FunctionedParams< + SolidQueryOptions & { + initialData?: undefined + } +> + +export type DefinedInitialDataOptions< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = FunctionedParams< + SolidQueryOptions & { + initialData: TQueryFnData | (() => TQueryFnData) + } +> + +export function queryOptions< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, + TOptions extends ReturnType< + UndefinedInitialDataOptions + > = ReturnType< + UndefinedInitialDataOptions + >, +>( + options: ReturnType< + UndefinedInitialDataOptions + >, +): ReturnType< + UndefinedInitialDataOptions +> & { + queryKey: DataTag +} + +export function queryOptions< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, + TOptions extends ReturnType< + DefinedInitialDataOptions + > = ReturnType< + DefinedInitialDataOptions + >, +>( + options: ReturnType< + DefinedInitialDataOptions + >, +): ReturnType< + DefinedInitialDataOptions +> & { + queryKey: DataTag +} + +export function queryOptions(options: unknown) { + return options +}