@tanstack/solid-query 5.0.0-alpha.4 → 5.0.0-alpha.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/index.js +90 -30
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +91 -33
- package/build/esm/index.js.map +1 -1
- package/build/source/QueryClient.js +6 -0
- package/build/source/__tests__/QueryClientProvider.test.jsx +4 -4
- package/build/source/__tests__/createInfiniteQuery.test.jsx +69 -23
- package/build/source/__tests__/createMutation.test.jsx +24 -23
- package/build/source/__tests__/createQueries.test.jsx +6 -92
- package/build/source/__tests__/createQuery.test.jsx +69 -278
- package/build/source/__tests__/createQuery.types.test.jsx +19 -1
- package/build/source/__tests__/suspense.test.jsx +10 -71
- package/build/source/__tests__/transition.test.jsx +1 -1
- package/build/source/__tests__/useIsFetching.test.jsx +1 -1
- package/build/source/__tests__/useIsMutating.test.jsx +25 -26
- package/build/source/__tests__/utils.jsx +4 -3
- package/build/source/createBaseQuery.js +49 -23
- package/build/source/createMutation.js +1 -1
- package/build/source/createQueries.js +13 -7
- package/build/source/createQuery.js +3 -0
- package/build/source/index.js +2 -1
- package/build/types/QueryClient.d.ts +30 -0
- package/build/types/QueryClient.d.ts.map +1 -0
- package/build/types/QueryClientProvider.d.ts +3 -2
- package/build/types/QueryClientProvider.d.ts.map +1 -0
- package/build/types/__tests__/QueryClientProvider.test.d.ts +1 -0
- package/build/types/__tests__/QueryClientProvider.test.d.ts.map +1 -0
- package/build/types/__tests__/createInfiniteQuery.test.d.ts +1 -0
- package/build/types/__tests__/createInfiniteQuery.test.d.ts.map +1 -0
- package/build/types/__tests__/createMutation.test.d.ts +1 -0
- package/build/types/__tests__/createMutation.test.d.ts.map +1 -0
- package/build/types/__tests__/createQueries.test.d.ts +1 -0
- package/build/types/__tests__/createQueries.test.d.ts.map +1 -0
- package/build/types/__tests__/createQuery.test.d.ts +1 -0
- package/build/types/__tests__/createQuery.test.d.ts.map +1 -0
- package/build/types/__tests__/createQuery.types.test.d.ts +3 -2
- package/build/types/__tests__/createQuery.types.test.d.ts.map +1 -0
- package/build/types/__tests__/suspense.test.d.ts +1 -0
- package/build/types/__tests__/suspense.test.d.ts.map +1 -0
- package/build/types/__tests__/transition.test.d.ts +1 -0
- package/build/types/__tests__/transition.test.d.ts.map +1 -0
- package/build/types/__tests__/useIsFetching.test.d.ts +1 -0
- package/build/types/__tests__/useIsFetching.test.d.ts.map +1 -0
- package/build/types/__tests__/useIsMutating.test.d.ts +1 -0
- package/build/types/__tests__/useIsMutating.test.d.ts.map +1 -0
- package/build/types/__tests__/utils.d.ts +4 -4
- package/build/types/__tests__/utils.d.ts.map +1 -0
- package/build/types/createBaseQuery.d.ts +3 -1
- package/build/types/createBaseQuery.d.ts.map +1 -0
- package/build/types/createInfiniteQuery.d.ts +3 -1
- package/build/types/createInfiniteQuery.d.ts.map +1 -0
- package/build/types/createMutation.d.ts +3 -1
- package/build/types/createMutation.d.ts.map +1 -0
- package/build/types/createQueries.d.ts +12 -9
- package/build/types/createQueries.d.ts.map +1 -0
- package/build/types/createQuery.d.ts +7 -3
- package/build/types/createQuery.d.ts.map +1 -0
- package/build/types/index.d.ts +4 -1
- package/build/types/index.d.ts.map +1 -0
- package/build/types/setBatchUpdatesFn.d.ts +1 -0
- package/build/types/setBatchUpdatesFn.d.ts.map +1 -0
- package/build/types/types.d.ts +17 -15
- package/build/types/types.d.ts.map +1 -0
- package/build/types/useIsFetching.d.ts +3 -1
- package/build/types/useIsFetching.d.ts.map +1 -0
- package/build/types/useIsMutating.d.ts +3 -1
- package/build/types/useIsMutating.d.ts.map +1 -0
- package/build/types/utils.d.ts +1 -0
- package/build/types/utils.d.ts.map +1 -0
- package/build/umd/index.js +1 -1
- package/build/umd/index.js.map +1 -1
- package/package.json +9 -7
- package/src/QueryClient.ts +84 -0
- package/src/QueryClientProvider.tsx +1 -1
- package/src/__tests__/QueryClientProvider.test.tsx +4 -4
- package/src/__tests__/createInfiniteQuery.test.tsx +103 -37
- package/src/__tests__/createMutation.test.tsx +24 -23
- package/src/__tests__/createQueries.test.tsx +6 -101
- package/src/__tests__/createQuery.test.tsx +85 -351
- package/src/__tests__/createQuery.types.test.tsx +21 -1
- package/src/__tests__/suspense.test.tsx +10 -92
- package/src/__tests__/transition.test.tsx +1 -1
- package/src/__tests__/useIsFetching.test.tsx +1 -1
- package/src/__tests__/useIsMutating.test.tsx +31 -37
- package/src/__tests__/utils.tsx +4 -3
- package/src/createBaseQuery.ts +73 -28
- package/src/createInfiniteQuery.ts +1 -1
- package/src/createMutation.ts +3 -2
- package/src/createQueries.ts +32 -14
- package/src/createQuery.ts +24 -1
- package/src/index.ts +8 -1
- package/src/types.ts +4 -2
- package/src/useIsFetching.ts +2 -1
- package/src/useIsMutating.ts +2 -1
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/setBatchUpdatesFn.ts","../../src/QueryClientProvider.tsx","../../src/utils.ts","../../src/createBaseQuery.ts","../../src/createQuery.ts","../../src/useIsFetching.ts","../../src/createInfiniteQuery.ts","../../src/createMutation.ts","../../src/useIsMutating.ts","../../src/createQueries.ts"],"sourcesContent":["import { notifyManager } from '@tanstack/query-core'\nimport { batch } from 'solid-js'\n\nnotifyManager.setBatchNotifyFunction(batch)\n","import type { QueryClient } from '@tanstack/query-core'\nimport type { JSX } from 'solid-js'\nimport { createContext, useContext, onMount, onCleanup } from 'solid-js'\n\nexport const QueryClientContext = createContext<QueryClient | undefined>(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: JSX.Element\n}\n\nexport const QueryClientProvider = (\n props: QueryClientProviderProps,\n): JSX.Element => {\n onMount(() => {\n props.client.mount()\n })\n onCleanup(() => props.client.unmount())\n\n return (\n <QueryClientContext.Provider value={props.client}>\n {props.children}\n </QueryClientContext.Provider>\n )\n}\n","export function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n// Had to disable the lint rule because isServer type is defined as false\n// in solid-js/web package. I'll create a GitHub issue with them to see\n// why that happens.\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { hydrate } from '@tanstack/query-core'\nimport { notifyManager } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport {\n createComputed,\n createMemo,\n createResource,\n on,\n onCleanup,\n onMount,\n} from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateBaseQueryOptions } from './types'\nimport { shouldThrowError } from './utils'\n\n// Base Query Function that is used to create the query.\nexport function createBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: Accessor<\n CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >,\n Observer: typeof QueryObserver,\n queryClient?: Accessor<QueryClient>,\n) {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n\n const defaultedOptions = client().defaultQueryOptions(options())\n defaultedOptions._optimisticResults = 'optimistic'\n if (isServer) {\n defaultedOptions.retry = false\n defaultedOptions.throwErrors = true\n }\n const observer = new Observer(client(), defaultedOptions)\n\n const [state, setState] = createStore<QueryObserverResult<TData, TError>>(\n observer.getOptimisticResult(defaultedOptions),\n )\n\n const createServerSubscriber = (\n resolve: (\n data:\n | QueryObserverResult<TData, TError>\n | PromiseLike<QueryObserverResult<TData, TError> | undefined>\n | undefined,\n ) => void,\n reject: (reason?: any) => void,\n ) => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const unwrappedResult = { ...unwrap(result) }\n if (unwrappedResult.isError) {\n if (process.env['NODE_ENV'] === 'development') {\n console.error(unwrappedResult.error)\n }\n reject(unwrappedResult.error)\n }\n if (unwrappedResult.isSuccess) {\n resolve(unwrappedResult)\n }\n })()\n })\n }\n\n const createClientSubscriber = () => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const unwrappedResult = { ...unwrap(result) }\n // If the query has data we dont suspend but instead mutate the resource\n // This could happen when placeholderData/initialData is defined\n if (\n queryResource()?.data &&\n unwrappedResult.data &&\n !queryResource.loading\n ) {\n setState(unwrappedResult)\n mutate(state)\n } else {\n setState(unwrappedResult)\n refetch()\n }\n })()\n })\n }\n\n /**\n * Unsubscribe is set lazily, so that we can subscribe after hydration when needed.\n */\n let unsubscribe: (() => void) | null = null\n\n const [queryResource, { refetch, mutate }] = createResource<\n QueryObserverResult<TData, TError> | undefined\n >(\n () => {\n return new Promise((resolve, reject) => {\n if (isServer) {\n unsubscribe = createServerSubscriber(resolve, reject)\n } else {\n if (!unsubscribe) {\n unsubscribe = createClientSubscriber()\n }\n }\n if (!state.isLoading) {\n resolve(state)\n }\n })\n },\n {\n initialValue: state,\n\n // If initialData is provided, we resolve the resource immediately\n ssrLoadFrom: options().initialData ? 'initial' : 'server',\n\n get deferStream() {\n return options().deferStream\n },\n\n /**\n * If this resource was populated on the server (either sync render, or streamed in over time), onHydrated\n * will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.\n *\n * Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.\n *\n * Note that this is only invoked on the client, for queries that were originally run on the server.\n */\n onHydrated(_k, info) {\n if (info.value) {\n hydrate(client(), {\n queries: [\n {\n queryKey: defaultedOptions.queryKey,\n queryHash: defaultedOptions.queryHash,\n state: info.value,\n },\n ],\n })\n }\n\n if (!unsubscribe) {\n /**\n * Do not refetch query on mount if query was fetched on server,\n * even if `staleTime` is not set.\n */\n const newOptions = { ...defaultedOptions }\n if (defaultedOptions.staleTime || !defaultedOptions.initialData) {\n newOptions.refetchOnMount = false\n }\n // Setting the options as an immutable object to prevent\n // wonky behavior with observer subscriptions\n observer.setOptions(newOptions)\n setState(observer.getOptimisticResult(newOptions))\n unsubscribe = createClientSubscriber()\n }\n },\n },\n )\n\n onCleanup(() => {\n if (unsubscribe) {\n unsubscribe()\n unsubscribe = null\n }\n })\n\n onMount(() => {\n observer.setOptions(defaultedOptions, { listeners: false })\n })\n\n createComputed(() => {\n observer.setOptions(client().defaultQueryOptions(options()))\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n !state.isFetching &&\n shouldThrowError(observer.options.throwErrors, [\n state.error,\n observer.getCurrentQuery(),\n ])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const handler = {\n get(\n target: QueryObserverResult<TData, TError>,\n prop: keyof QueryObserverResult<TData, TError>,\n ): any {\n if (prop === 'data') {\n return queryResource()?.data\n }\n return Reflect.get(target, prop)\n },\n }\n\n return new Proxy(state, handler)\n}\n","import type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createMemo } from 'solid-js'\nimport { createBaseQuery } from './createBaseQuery'\nimport type {\n CreateQueryOptions,\n CreateQueryResult,\n DefinedCreateQueryResult,\n FunctionedParams,\n SolidQueryOptions,\n} from './types'\n\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n }\n>\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n }\n>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): CreateQueryResult<TData, TError>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): DefinedCreateQueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: Accessor<QueryClient>,\n) {\n return createBaseQuery(\n createMemo(() => options()),\n QueryObserver,\n queryClient,\n )\n}\n","import type { QueryClient, QueryFilters } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createMemo, createSignal, onCleanup } from 'solid-js'\nimport { useQueryClient } from './QueryClientProvider'\n\nexport function useIsFetching(\n filters?: Accessor<QueryFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const queryCache = createMemo(() => client().getQueryCache())\n\n const [fetches, setFetches] = createSignal(client().isFetching(filters?.()))\n\n const unsubscribe = queryCache().subscribe(() => {\n setFetches(client().isFetching(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return fetches\n}\n","import type {\n QueryObserver,\n QueryKey,\n QueryClient,\n DefaultError,\n InfiniteData,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n CreateInfiniteQueryOptions,\n CreateInfiniteQueryResult,\n} from './types'\nimport { createBaseQuery } from './createBaseQuery'\nimport { createMemo } from 'solid-js'\nimport type { Accessor } from 'solid-js'\n\nexport function createInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: Accessor<QueryClient>,\n): CreateInfiniteQueryResult<TData, TError> {\n return createBaseQuery(\n createMemo(() => options()),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as CreateInfiniteQueryResult<TData, TError>\n}\n","import type { QueryClient, DefaultError } from '@tanstack/query-core'\nimport { MutationObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type {\n CreateMutateFunction,\n CreateMutationOptions,\n CreateMutationResult,\n} from './types'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, on } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { shouldThrowError } from './utils'\n\n// HOOK\nexport function createMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: CreateMutationOptions<TData, TError, TVariables, TContext>,\n queryClient?: Accessor<QueryClient>,\n): CreateMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient(queryClient?.())\n\n const observer = new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options(),\n )\n\n const mutate: CreateMutateFunction<TData, TError, TVariables, TContext> = (\n variables,\n mutateOptions,\n ) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n }\n\n const [state, setState] = createStore<\n CreateMutationResult<TData, TError, TVariables, TContext>\n >({\n ...observer.getCurrentResult(),\n mutate,\n mutateAsync: observer.getCurrentResult().mutate,\n })\n\n createComputed(() => {\n observer.setOptions(options())\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n shouldThrowError(observer.options.throwErrors, [state.error])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n setState({\n ...result,\n mutate,\n mutateAsync: result.mutate,\n })\n })\n\n onCleanup(unsubscribe)\n\n return state\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n","import type { MutationFilters, QueryClient } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { Accessor } from 'solid-js'\nimport { createSignal, onCleanup, createMemo } from 'solid-js'\n\nexport function useIsMutating(\n filters?: Accessor<MutationFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const mutationCache = createMemo(() => client().getMutationCache())\n\n const [mutations, setMutations] = createSignal(\n client().isMutating(filters?.()),\n )\n\n const unsubscribe = mutationCache().subscribe((_result) => {\n setMutations(client().isMutating(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return mutations\n}\n","import type {\n QueriesPlaceholderDataFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n DefaultError,\n} from '@tanstack/query-core'\nimport { notifyManager, QueriesObserver } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, onMount } from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateQueryResult, SolidQueryOptions } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype CreateQueryOptionsForCreateQueries<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = Omit<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\ntype GetOptions<T> =\n // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<unknown, TError, TData>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData>\n : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>\n select: (data: any) => infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }\n ? CreateQueryOptionsForCreateQueries<\n TQueryFnData,\n Error,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n CreateQueryOptionsForCreateQueries\n\ntype GetResults<T> =\n // Part 1: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? CreateQueryResult<TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryResult<TData, TError>\n : // Part 2: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? CreateQueryResult<TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryResult<TQueryFnData>\n : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<unknown, any>\n select: (data: any) => infer TData\n }\n ? CreateQueryResult<TData>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, any> }\n ? CreateQueryResult<TQueryFnData>\n : // Fallback\n CreateQueryResult\n\n/**\n * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type QueriesOptions<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryOptionsForCreateQueries[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>\n : unknown[] extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >[]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[]\n : // Fallback\n CreateQueryOptionsForCreateQueries[]\n\n/**\n * QueriesResults reducer recursively maps type param to results\n */\nexport type QueriesResults<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryResult[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>\n : T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >[]\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n CreateQueryResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >[]\n : // Fallback\n CreateQueryResult[]\n\nexport function createQueries<T extends any[]>(\n queriesOptions: Accessor<{\n queries: readonly [...QueriesOptions<T>]\n }>,\n queryClient?: Accessor<QueryClient>,\n): QueriesResults<T> {\n const client = useQueryClient(queryClient?.())\n\n const defaultedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n\n const observer = new QueriesObserver(client, defaultedQueries)\n\n const [state, setState] = createStore(\n observer.getOptimisticResult(defaultedQueries),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n setState(unwrap(result))\n })()\n })\n\n onCleanup(unsubscribe)\n\n onMount(() => {\n observer.setQueries(defaultedQueries, { listeners: false })\n })\n\n createComputed(() => {\n const updatedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n observer.setQueries(updatedQueries)\n })\n\n return state as QueriesResults<T>\n}\n"],"names":["notifyManager","setBatchNotifyFunction","batch","QueryClientContext","createContext","undefined","useQueryClient","queryClient","client","useContext","Error","QueryClientProvider","props","onMount","mount","onCleanup","unmount","_$createComponent","children","shouldThrowError","throwError","params","createBaseQuery","options","Observer","createMemo","defaultedOptions","defaultQueryOptions","_optimisticResults","isServer","retry","throwErrors","observer","state","setState","createStore","getOptimisticResult","createServerSubscriber","resolve","reject","subscribe","result","batchCalls","unwrappedResult","unwrap","isError","process","env","console","error","isSuccess","createClientSubscriber","queryResource","data","loading","mutate","refetch","unsubscribe","createResource","Promise","isLoading","initialValue","ssrLoadFrom","initialData","deferStream","onHydrated","_k","info","value","hydrate","queries","queryKey","queryHash","newOptions","staleTime","refetchOnMount","setOptions","listeners","createComputed","on","status","isFetching","getCurrentQuery","handler","get","target","prop","Reflect","Proxy","createQuery","QueryObserver","useIsFetching","filters","queryCache","getQueryCache","fetches","setFetches","createSignal","createInfiniteQuery","InfiniteQueryObserver","createMutation","MutationObserver","variables","mutateOptions","catch","noop","getCurrentResult","mutateAsync","useIsMutating","mutationCache","getMutationCache","mutations","setMutations","isMutating","_result","createQueries","queriesOptions","defaultedQueries","map","QueriesObserver","setQueries","updatedQueries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/setBatchUpdatesFn.ts","../../src/QueryClient.ts","../../src/QueryClientProvider.tsx","../../src/utils.ts","../../src/createBaseQuery.ts","../../src/createQuery.ts","../../src/useIsFetching.ts","../../src/createInfiniteQuery.ts","../../src/createMutation.ts","../../src/useIsMutating.ts","../../src/createQueries.ts"],"sourcesContent":["import { notifyManager } from '@tanstack/query-core'\nimport { batch } from 'solid-js'\n\nnotifyManager.setBatchNotifyFunction(batch)\n","import type {\n QueryClientConfig as QueryCoreClientConfig,\n DefaultOptions as CoreDefaultOptions,\n QueryObserverOptions as QueryCoreObserverOptions,\n InfiniteQueryObserverOptions as QueryCoreInfiniteQueryObserverOptions,\n DefaultError,\n QueryKey,\n} from '@tanstack/query-core'\nimport { QueryClient as QueryCoreClient } from '@tanstack/query-core'\n\nexport interface QueryObserverOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n> extends Omit<\n QueryCoreObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'structuralSharing'\n > {\n /**\n * Set this to a reconciliation key to enable reconciliation between query results.\n * Set this to `false` to disable reconciliation between query results.\n * Set this to a function which accepts the old and new data and returns resolved data of the same type to implement custom reconciliation logic.\n * Defaults reconciliation key to `id`.\n */\n reconcile?:\n | string\n | false\n | ((oldData: TData | undefined, newData: TData) => TData)\n}\n\nexport interface InfiniteQueryObserverOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n> extends Omit<\n QueryCoreInfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'structuralSharing'\n > {\n /**\n * Set this to a reconciliation key to enable reconciliation between query results.\n * Set this to `false` to disable reconciliation between query results.\n * Set this to a function which accepts the old and new data and returns resolved data of the same type to implement custom reconciliation logic.\n * Defaults reconciliation key to `id`.\n */\n reconcile?:\n | string\n | false\n | ((oldData: TData | undefined, newData: TData) => TData)\n}\n\nexport interface DefaultOptions<TError = DefaultError>\n extends CoreDefaultOptions<TError> {\n queries?: QueryObserverOptions<unknown, TError>\n}\n\nexport interface QueryClientConfig extends QueryCoreClientConfig {\n defaultOptions?: DefaultOptions\n}\n\nexport class QueryClient extends QueryCoreClient {\n constructor(config: QueryClientConfig = {}) {\n super(config)\n }\n}\n","import type { QueryClient } from './QueryClient'\nimport type { JSX } from 'solid-js'\nimport { createContext, useContext, onMount, onCleanup } from 'solid-js'\n\nexport const QueryClientContext = createContext<QueryClient | undefined>(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: JSX.Element\n}\n\nexport const QueryClientProvider = (\n props: QueryClientProviderProps,\n): JSX.Element => {\n onMount(() => {\n props.client.mount()\n })\n onCleanup(() => props.client.unmount())\n\n return (\n <QueryClientContext.Provider value={props.client}>\n {props.children}\n </QueryClientContext.Provider>\n )\n}\n","export function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n// Had to disable the lint rule because isServer type is defined as false\n// in solid-js/web package. I'll create a GitHub issue with them to see\n// why that happens.\nimport type {\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport { hydrate, notifyManager } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport {\n createComputed,\n createMemo,\n createResource,\n on,\n onCleanup,\n} from 'solid-js'\nimport { createStore, reconcile, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateBaseQueryOptions } from './types'\nimport { shouldThrowError } from './utils'\n\nfunction reconcileFn<TData, TError>(\n store: QueryObserverResult<TData, TError>,\n result: QueryObserverResult<TData, TError>,\n reconcileOption:\n | string\n | false\n | ((oldData: TData | undefined, newData: TData) => TData),\n): QueryObserverResult<TData, TError> {\n if (reconcileOption === false) return result\n if (typeof reconcileOption === 'function') {\n const newData = reconcileOption(store.data, result.data as TData)\n return { ...result, data: newData } as typeof result\n }\n const newData = reconcile(result.data, { key: reconcileOption })(store.data)\n return { ...result, data: newData } as typeof result\n}\n\n// Base Query Function that is used to create the query.\nexport function createBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: Accessor<\n CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >,\n Observer: typeof QueryObserver,\n queryClient?: Accessor<QueryClient>,\n) {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n\n const defaultedOptions = client().defaultQueryOptions(options())\n defaultedOptions._optimisticResults = 'optimistic'\n defaultedOptions.structuralSharing = false\n if (isServer) {\n defaultedOptions.retry = false\n defaultedOptions.throwOnError = true\n }\n const observer = new Observer(client(), defaultedOptions)\n\n const [state, setState] = createStore<QueryObserverResult<TData, TError>>(\n observer.getOptimisticResult(defaultedOptions),\n )\n\n const createServerSubscriber = (\n resolve: (\n data:\n | QueryObserverResult<TData, TError>\n | PromiseLike<QueryObserverResult<TData, TError> | undefined>\n | undefined,\n ) => void,\n reject: (reason?: any) => void,\n ) => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const query = observer.getCurrentQuery()\n const { refetch, ...rest } = unwrap(result)\n const unwrappedResult = {\n ...rest,\n\n // hydrate() expects a QueryState object, which is similar but not\n // quite the same as a QueryObserverResult object. Thus, for now, we're\n // copying over the missing properties from state in order to support hydration\n dataUpdateCount: query.state.dataUpdateCount,\n fetchFailureCount: query.state.fetchFailureCount,\n // Removing these properties since they might not be serializable\n // fetchFailureReason: query.state.fetchFailureReason,\n // fetchMeta: query.state.fetchMeta,\n isInvalidated: query.state.isInvalidated,\n }\n\n if (unwrappedResult.isError) {\n if (process.env['NODE_ENV'] === 'development') {\n console.error(unwrappedResult.error)\n }\n reject(unwrappedResult.error)\n }\n if (unwrappedResult.isSuccess) {\n // Use of any here is fine\n // We cannot include refetch since it is not serializable\n resolve(unwrappedResult as any)\n }\n })()\n })\n }\n\n const createClientSubscriber = () => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n // @ts-expect-error - This will error because the reconcile option does not\n // exist on the query-core QueryObserverResult type\n const reconcileOptions = observer.options.reconcile\n // If the query has data we dont suspend but instead mutate the resource\n // This could happen when placeholderData/initialData is defined\n if (queryResource()?.data && result.data && !queryResource.loading) {\n setState((store) => {\n return reconcileFn(\n store,\n result,\n reconcileOptions === undefined ? 'id' : reconcileOptions,\n )\n })\n mutate(state)\n } else {\n setState((store) => {\n return reconcileFn(\n store,\n result,\n reconcileOptions === undefined ? 'id' : reconcileOptions,\n )\n })\n refetch()\n }\n })()\n })\n }\n\n /**\n * Unsubscribe is set lazily, so that we can subscribe after hydration when needed.\n */\n let unsubscribe: (() => void) | null = null\n\n const [queryResource, { refetch, mutate }] = createResource<\n QueryObserverResult<TData, TError> | undefined\n >(\n () => {\n return new Promise((resolve, reject) => {\n if (isServer) {\n unsubscribe = createServerSubscriber(resolve, reject)\n } else {\n if (!unsubscribe) {\n unsubscribe = createClientSubscriber()\n }\n }\n if (!state.isLoading) {\n resolve(state)\n }\n })\n },\n {\n initialValue: state,\n\n // If initialData is provided, we resolve the resource immediately\n ssrLoadFrom: options().initialData ? 'initial' : 'server',\n\n get deferStream() {\n return options().deferStream\n },\n\n /**\n * If this resource was populated on the server (either sync render, or streamed in over time), onHydrated\n * will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.\n *\n * Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.\n *\n * Note that this is only invoked on the client, for queries that were originally run on the server.\n */\n onHydrated(_k, info) {\n if (info.value) {\n hydrate(client(), {\n queries: [\n {\n queryKey: defaultedOptions.queryKey,\n queryHash: defaultedOptions.queryHash,\n state: info.value,\n },\n ],\n })\n }\n\n if (!unsubscribe) {\n /**\n * Do not refetch query on mount if query was fetched on server,\n * even if `staleTime` is not set.\n */\n const newOptions = { ...defaultedOptions }\n if (defaultedOptions.staleTime || !defaultedOptions.initialData) {\n newOptions.refetchOnMount = false\n }\n // Setting the options as an immutable object to prevent\n // wonky behavior with observer subscriptions\n observer.setOptions(newOptions)\n setState(observer.getOptimisticResult(newOptions))\n unsubscribe = createClientSubscriber()\n }\n },\n },\n )\n\n onCleanup(() => {\n if (unsubscribe) {\n unsubscribe()\n unsubscribe = null\n }\n })\n\n createComputed(\n on(\n () => client().defaultQueryOptions(options()),\n () => observer.setOptions(client().defaultQueryOptions(options())),\n {\n // Defer because we don't need to trigger on first render\n // This only cares about changes to options after the observer is created\n defer: true,\n },\n ),\n )\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n !state.isFetching &&\n shouldThrowError(observer.options.throwOnError, [\n state.error,\n observer.getCurrentQuery(),\n ])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const handler = {\n get(\n target: QueryObserverResult<TData, TError>,\n prop: keyof QueryObserverResult<TData, TError>,\n ): any {\n const val = queryResource()?.[prop]\n return val !== undefined ? val : Reflect.get(target, prop)\n },\n }\n\n return new Proxy(state, handler)\n}\n","import type { QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport type { Accessor } from 'solid-js'\nimport { createMemo } from 'solid-js'\nimport { createBaseQuery } from './createBaseQuery'\nimport type {\n CreateQueryOptions,\n CreateQueryResult,\n DefinedCreateQueryResult,\n FunctionedParams,\n SolidQueryOptions,\n} from './types'\n\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n }\n>\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n }\n>\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function queryOptions(options: unknown) {\n return options\n}\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): CreateQueryResult<TData, TError>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): DefinedCreateQueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: Accessor<QueryClient>,\n) {\n return createBaseQuery(\n createMemo(() => options()),\n QueryObserver,\n queryClient,\n )\n}\n","import type { QueryFilters } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport type { Accessor } from 'solid-js'\nimport { createMemo, createSignal, onCleanup } from 'solid-js'\nimport { useQueryClient } from './QueryClientProvider'\n\nexport function useIsFetching(\n filters?: Accessor<QueryFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const queryCache = createMemo(() => client().getQueryCache())\n\n const [fetches, setFetches] = createSignal(client().isFetching(filters?.()))\n\n const unsubscribe = queryCache().subscribe(() => {\n setFetches(client().isFetching(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return fetches\n}\n","import type {\n QueryObserver,\n QueryKey,\n DefaultError,\n InfiniteData,\n} from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n CreateInfiniteQueryOptions,\n CreateInfiniteQueryResult,\n} from './types'\nimport { createBaseQuery } from './createBaseQuery'\nimport { createMemo } from 'solid-js'\nimport type { Accessor } from 'solid-js'\n\nexport function createInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: Accessor<QueryClient>,\n): CreateInfiniteQueryResult<TData, TError> {\n return createBaseQuery(\n createMemo(() => options()),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as CreateInfiniteQueryResult<TData, TError>\n}\n","import type { DefaultError } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport { MutationObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type {\n CreateMutateFunction,\n CreateMutationOptions,\n CreateMutationResult,\n} from './types'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, on } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { shouldThrowError } from './utils'\n\n// HOOK\nexport function createMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: CreateMutationOptions<TData, TError, TVariables, TContext>,\n queryClient?: Accessor<QueryClient>,\n): CreateMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient(queryClient?.())\n\n const observer = new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options(),\n )\n\n const mutate: CreateMutateFunction<TData, TError, TVariables, TContext> = (\n variables,\n mutateOptions,\n ) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n }\n\n const [state, setState] = createStore<\n CreateMutationResult<TData, TError, TVariables, TContext>\n >({\n ...observer.getCurrentResult(),\n mutate,\n mutateAsync: observer.getCurrentResult().mutate,\n })\n\n createComputed(() => {\n observer.setOptions(options())\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n shouldThrowError(observer.options.throwOnError, [state.error])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n setState({\n ...result,\n mutate,\n mutateAsync: result.mutate,\n })\n })\n\n onCleanup(unsubscribe)\n\n return state\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n","import type { MutationFilters } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { Accessor } from 'solid-js'\nimport { createSignal, onCleanup, createMemo } from 'solid-js'\n\nexport function useIsMutating(\n filters?: Accessor<MutationFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const mutationCache = createMemo(() => client().getMutationCache())\n\n const [mutations, setMutations] = createSignal(\n client().isMutating(filters?.()),\n )\n\n const unsubscribe = mutationCache().subscribe((_result) => {\n setMutations(client().isMutating(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return mutations\n}\n","import type {\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n DefaultError,\n QueriesObserverOptions,\n} from '@tanstack/query-core'\nimport { notifyManager, QueriesObserver } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup } from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateQueryResult, SolidQueryOptions } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype CreateQueryOptionsForCreateQueries<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = Omit<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\ntype GetOptions<T> =\n // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<unknown, TError, TData>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData>\n : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>\n select: (data: any) => infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }\n ? CreateQueryOptionsForCreateQueries<\n TQueryFnData,\n Error,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n CreateQueryOptionsForCreateQueries\n\ntype GetResults<T> =\n // Part 1: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? CreateQueryResult<TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryResult<TData, TError>\n : // Part 2: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? CreateQueryResult<TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryResult<TQueryFnData>\n : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<unknown, any>\n select: (data: any) => infer TData\n }\n ? CreateQueryResult<TData>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, any> }\n ? CreateQueryResult<TQueryFnData>\n : // Fallback\n CreateQueryResult\n\n/**\n * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type QueriesOptions<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryOptionsForCreateQueries[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>\n : unknown[] extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >[]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[]\n : // Fallback\n CreateQueryOptionsForCreateQueries[]\n\n/**\n * QueriesResults reducer recursively maps type param to results\n */\nexport type QueriesResults<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryResult[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>\n : T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >[]\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n CreateQueryResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >[]\n : // Fallback\n CreateQueryResult[]\n\nexport function createQueries<\n T extends any[],\n TCombinedResult = QueriesResults<T>,\n>(\n queriesOptions: Accessor<{\n queries: readonly [...QueriesOptions<T>]\n combine?: (result: QueriesResults<T>) => TCombinedResult\n }>,\n queryClient?: Accessor<QueryClient>,\n): TCombinedResult {\n const client = useQueryClient(queryClient?.())\n\n const defaultedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n\n const observer = new QueriesObserver(\n client,\n defaultedQueries,\n queriesOptions().combine\n ? ({\n combine: queriesOptions().combine,\n } as QueriesObserverOptions<TCombinedResult>)\n : undefined,\n )\n\n // @ts-expect-error - Types issue with solid-js createStore\n const [state, setState] = createStore<TCombinedResult>(\n observer.getOptimisticResult(defaultedQueries)[1](),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n setState(unwrap(result) as unknown as TCombinedResult)\n })()\n })\n\n onCleanup(unsubscribe)\n\n createComputed(() => {\n const updatedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n observer.setQueries(\n updatedQueries,\n queriesOptions().combine\n ? ({\n combine: queriesOptions().combine,\n } as QueriesObserverOptions<TCombinedResult>)\n : undefined,\n { listeners: false },\n )\n })\n\n return state\n}\n"],"names":["notifyManager","setBatchNotifyFunction","batch","QueryClient","QueryCoreClient","constructor","config","QueryClientContext","createContext","undefined","useQueryClient","queryClient","client","useContext","Error","QueryClientProvider","props","onMount","mount","onCleanup","unmount","_$createComponent","Provider","value","children","shouldThrowError","throwError","params","reconcileFn","store","result","reconcileOption","newData","data","reconcile","key","createBaseQuery","options","Observer","createMemo","defaultedOptions","defaultQueryOptions","_optimisticResults","structuralSharing","isServer","retry","throwOnError","observer","state","setState","createStore","getOptimisticResult","createServerSubscriber","resolve","reject","subscribe","batchCalls","query","getCurrentQuery","refetch","rest","unwrap","unwrappedResult","dataUpdateCount","fetchFailureCount","isInvalidated","isError","process","env","console","error","isSuccess","createClientSubscriber","reconcileOptions","queryResource","loading","mutate","unsubscribe","createResource","Promise","isLoading","initialValue","ssrLoadFrom","initialData","deferStream","onHydrated","_k","info","hydrate","queries","queryKey","queryHash","newOptions","staleTime","refetchOnMount","setOptions","createComputed","on","defer","status","isFetching","handler","get","target","prop","val","Reflect","Proxy","queryOptions","createQuery","QueryObserver","useIsFetching","filters","queryCache","getQueryCache","fetches","setFetches","createSignal","createInfiniteQuery","InfiniteQueryObserver","createMutation","MutationObserver","variables","mutateOptions","catch","noop","getCurrentResult","mutateAsync","useIsMutating","mutationCache","getMutationCache","mutations","setMutations","isMutating","_result","createQueries","queriesOptions","defaultedQueries","map","QueriesObserver","combine","updatedQueries","setQueries","listeners"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { render, screen, waitFor } from '
|
|
2
|
-
import { queryKey } from './utils';
|
|
1
|
+
import { render, screen, waitFor } from '@solidjs/testing-library';
|
|
2
|
+
import { createQueryClient, sleep, queryKey } from './utils';
|
|
3
3
|
import { QueryCache } from '@tanstack/query-core';
|
|
4
4
|
import { createQuery, QueryClientProvider, useQueryClient } from '..';
|
|
5
|
-
import {
|
|
5
|
+
import { vi } from 'vitest';
|
|
6
6
|
describe('QueryClientProvider', () => {
|
|
7
7
|
it('sets a specific cache for all queries to use', async () => {
|
|
8
8
|
const key = queryKey();
|
|
@@ -106,7 +106,7 @@ describe('QueryClientProvider', () => {
|
|
|
106
106
|
});
|
|
107
107
|
describe('useQueryClient', () => {
|
|
108
108
|
it('should throw an error if no query client has been set', () => {
|
|
109
|
-
const consoleMock =
|
|
109
|
+
const consoleMock = vi
|
|
110
110
|
.spyOn(console, 'error')
|
|
111
111
|
.mockImplementation(() => undefined);
|
|
112
112
|
function Page() {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { fireEvent, render, screen, waitFor } from '
|
|
2
|
-
import { createQueryClient, sleep } from './utils';
|
|
3
|
-
import { createEffect, createRenderEffect, createSignal, For, Index, Match, Switch, } from 'solid-js';
|
|
1
|
+
import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library';
|
|
2
|
+
import { createQueryClient, sleep, Blink, queryKey, setActTimeout, } from './utils';
|
|
3
|
+
import { createEffect, createRenderEffect, createSignal, For, Index, Match, Switch, on, } from 'solid-js';
|
|
4
4
|
import { createInfiniteQuery, QueryCache, QueryClientProvider, keepPreviousData, } from '..';
|
|
5
|
-
import {
|
|
5
|
+
import { vi } from 'vitest';
|
|
6
6
|
const pageSize = 10;
|
|
7
7
|
const fetchItems = async (page, ts, noNext, noPrev) => {
|
|
8
8
|
await sleep(10);
|
|
@@ -153,7 +153,16 @@ describe('useInfiniteQuery', () => {
|
|
|
153
153
|
notifyOnChangeProps: 'all',
|
|
154
154
|
}));
|
|
155
155
|
createRenderEffect(() => {
|
|
156
|
-
states.push({
|
|
156
|
+
states.push({
|
|
157
|
+
data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
|
|
158
|
+
hasNextPage: state.hasNextPage,
|
|
159
|
+
hasPreviousPage: state.hasPreviousPage,
|
|
160
|
+
isFetching: state.isFetching,
|
|
161
|
+
isFetchingNextPage: state.isFetchingNextPage,
|
|
162
|
+
isFetchingPreviousPage: state.isFetchingPreviousPage,
|
|
163
|
+
isSuccess: state.isSuccess,
|
|
164
|
+
isPlaceholderData: state.isPlaceholderData,
|
|
165
|
+
});
|
|
157
166
|
});
|
|
158
167
|
return (<div>
|
|
159
168
|
<button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
|
|
@@ -305,9 +314,14 @@ describe('useInfiniteQuery', () => {
|
|
|
305
314
|
getNextPageParam: () => 1,
|
|
306
315
|
defaultPageParam: 0,
|
|
307
316
|
}));
|
|
308
|
-
createRenderEffect(() => {
|
|
309
|
-
states.push({
|
|
310
|
-
|
|
317
|
+
createRenderEffect(on(() => ({ ...state }), () => {
|
|
318
|
+
states.push({
|
|
319
|
+
data: state.data
|
|
320
|
+
? JSON.parse(JSON.stringify(state.data))
|
|
321
|
+
: undefined,
|
|
322
|
+
isSuccess: state.isSuccess,
|
|
323
|
+
});
|
|
324
|
+
}));
|
|
311
325
|
return (<div>
|
|
312
326
|
<button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
|
|
313
327
|
<div>data: {state.data?.pages.join(',') ?? 'null'}</div>
|
|
@@ -355,7 +369,15 @@ describe('useInfiniteQuery', () => {
|
|
|
355
369
|
notifyOnChangeProps: 'all',
|
|
356
370
|
}));
|
|
357
371
|
createRenderEffect(() => {
|
|
358
|
-
states.push({
|
|
372
|
+
states.push({
|
|
373
|
+
data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
|
|
374
|
+
hasNextPage: state.hasNextPage,
|
|
375
|
+
hasPreviousPage: state.hasPreviousPage,
|
|
376
|
+
isFetching: state.isFetching,
|
|
377
|
+
isFetchingNextPage: state.isFetchingNextPage,
|
|
378
|
+
isFetchingPreviousPage: state.isFetchingPreviousPage,
|
|
379
|
+
isSuccess: state.isSuccess,
|
|
380
|
+
});
|
|
359
381
|
});
|
|
360
382
|
createEffect(() => {
|
|
361
383
|
const fetchPreviousPage = state.fetchPreviousPage;
|
|
@@ -423,7 +445,13 @@ describe('useInfiniteQuery', () => {
|
|
|
423
445
|
notifyOnChangeProps: 'all',
|
|
424
446
|
}));
|
|
425
447
|
createRenderEffect(() => {
|
|
426
|
-
states.push({
|
|
448
|
+
states.push({
|
|
449
|
+
data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
|
|
450
|
+
isFetching: state.isFetching,
|
|
451
|
+
isFetchingNextPage: state.isFetchingNextPage,
|
|
452
|
+
isRefetching: state.isRefetching,
|
|
453
|
+
isFetchingPreviousPage: state.isFetchingPreviousPage,
|
|
454
|
+
});
|
|
427
455
|
});
|
|
428
456
|
return (<div>
|
|
429
457
|
<button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
|
|
@@ -523,7 +551,13 @@ describe('useInfiniteQuery', () => {
|
|
|
523
551
|
notifyOnChangeProps: 'all',
|
|
524
552
|
}));
|
|
525
553
|
createRenderEffect(() => {
|
|
526
|
-
states.push({
|
|
554
|
+
states.push({
|
|
555
|
+
hasNextPage: state.hasNextPage,
|
|
556
|
+
data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
|
|
557
|
+
isFetching: state.isFetching,
|
|
558
|
+
isFetchingNextPage: state.isFetchingNextPage,
|
|
559
|
+
isSuccess: state.isSuccess,
|
|
560
|
+
});
|
|
527
561
|
});
|
|
528
562
|
createEffect(() => {
|
|
529
563
|
const { refetch, fetchNextPage } = state;
|
|
@@ -582,9 +616,9 @@ describe('useInfiniteQuery', () => {
|
|
|
582
616
|
const start = 10;
|
|
583
617
|
const onAborts = [];
|
|
584
618
|
const abortListeners = [];
|
|
585
|
-
const fetchPage =
|
|
586
|
-
const onAbort =
|
|
587
|
-
const abortListener =
|
|
619
|
+
const fetchPage = vi.fn(async ({ pageParam, signal }) => {
|
|
620
|
+
const onAbort = vi.fn();
|
|
621
|
+
const abortListener = vi.fn();
|
|
588
622
|
onAborts.push(onAbort);
|
|
589
623
|
abortListeners.push(abortListener);
|
|
590
624
|
signal.onabort = onAbort;
|
|
@@ -648,9 +682,9 @@ describe('useInfiniteQuery', () => {
|
|
|
648
682
|
const start = 10;
|
|
649
683
|
const onAborts = [];
|
|
650
684
|
const abortListeners = [];
|
|
651
|
-
const fetchPage =
|
|
652
|
-
const onAbort =
|
|
653
|
-
const abortListener =
|
|
685
|
+
const fetchPage = vi.fn(async ({ pageParam, signal }) => {
|
|
686
|
+
const onAbort = vi.fn();
|
|
687
|
+
const abortListener = vi.fn();
|
|
654
688
|
onAborts.push(onAbort);
|
|
655
689
|
abortListeners.push(abortListener);
|
|
656
690
|
signal.onabort = onAbort;
|
|
@@ -803,7 +837,13 @@ describe('useInfiniteQuery', () => {
|
|
|
803
837
|
defaultPageParam: firstPage(),
|
|
804
838
|
}));
|
|
805
839
|
createRenderEffect(() => {
|
|
806
|
-
states.push({
|
|
840
|
+
states.push({
|
|
841
|
+
hasNextPage: state.hasNextPage,
|
|
842
|
+
data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
|
|
843
|
+
isFetching: state.isFetching,
|
|
844
|
+
isFetchingNextPage: state.isFetchingNextPage,
|
|
845
|
+
isSuccess: state.isSuccess,
|
|
846
|
+
});
|
|
807
847
|
});
|
|
808
848
|
createEffect(() => {
|
|
809
849
|
const { refetch } = state;
|
|
@@ -878,7 +918,13 @@ describe('useInfiniteQuery', () => {
|
|
|
878
918
|
notifyOnChangeProps: 'all',
|
|
879
919
|
}));
|
|
880
920
|
createRenderEffect(() => {
|
|
881
|
-
states.push({
|
|
921
|
+
states.push({
|
|
922
|
+
data: JSON.parse(JSON.stringify(state.data)),
|
|
923
|
+
hasNextPage: state.hasNextPage,
|
|
924
|
+
isFetching: state.isFetching,
|
|
925
|
+
isFetchingNextPage: state.isFetchingNextPage,
|
|
926
|
+
isSuccess: state.isSuccess,
|
|
927
|
+
});
|
|
882
928
|
});
|
|
883
929
|
createEffect(() => {
|
|
884
930
|
const { fetchNextPage } = state;
|
|
@@ -1131,7 +1177,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1131
1177
|
</>}>
|
|
1132
1178
|
<Match when={state.status === 'pending'}>Loading...</Match>
|
|
1133
1179
|
<Match when={state.status === 'error'}>
|
|
1134
|
-
<span>Error: {state.error
|
|
1180
|
+
<span>Error: {state.error?.message}</span>
|
|
1135
1181
|
</Match>
|
|
1136
1182
|
</Switch>
|
|
1137
1183
|
</div>);
|
|
@@ -1221,7 +1267,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1221
1267
|
</>}>
|
|
1222
1268
|
<Match when={state.status === 'pending'}>Loading...</Match>
|
|
1223
1269
|
<Match when={state.status === 'error'}>
|
|
1224
|
-
<span>Error: {state.error
|
|
1270
|
+
<span>Error: {state.error?.message}</span>
|
|
1225
1271
|
</Match>
|
|
1226
1272
|
</Switch>
|
|
1227
1273
|
</div>);
|
|
@@ -1264,10 +1310,10 @@ describe('useInfiniteQuery', () => {
|
|
|
1264
1310
|
});
|
|
1265
1311
|
it('should cancel the query function when there are no more subscriptions', async () => {
|
|
1266
1312
|
const key = queryKey();
|
|
1267
|
-
let cancelFn =
|
|
1313
|
+
let cancelFn = vi.fn();
|
|
1268
1314
|
const queryFn = ({ signal }) => {
|
|
1269
1315
|
const promise = new Promise((resolve, reject) => {
|
|
1270
|
-
cancelFn =
|
|
1316
|
+
cancelFn = vi.fn(() => reject('Cancelled'));
|
|
1271
1317
|
signal?.addEventListener('abort', cancelFn);
|
|
1272
1318
|
sleep(20).then(() => resolve('OK'));
|
|
1273
1319
|
});
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import '@testing-library/jest-dom';
|
|
2
2
|
import { createEffect, createRenderEffect, createSignal, ErrorBoundary, } from 'solid-js';
|
|
3
|
-
import { fireEvent, render, screen, waitFor } from '
|
|
3
|
+
import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library';
|
|
4
4
|
import { createMutation, MutationCache, QueryCache, QueryClientProvider, } from '..';
|
|
5
5
|
import { createQueryClient, mockNavigatorOnLine, queryKey, setActTimeout, sleep, } from './utils';
|
|
6
|
+
import { vi } from 'vitest';
|
|
6
7
|
describe('createMutation', () => {
|
|
7
8
|
const queryCache = new QueryCache();
|
|
8
9
|
const mutationCache = new MutationCache();
|
|
@@ -63,8 +64,8 @@ describe('createMutation', () => {
|
|
|
63
64
|
});
|
|
64
65
|
it('should be able to call `onSuccess` and `onSettled` after each successful mutate', async () => {
|
|
65
66
|
const [count, setCount] = createSignal(0);
|
|
66
|
-
const onSuccessMock =
|
|
67
|
-
const onSettledMock =
|
|
67
|
+
const onSuccessMock = vi.fn();
|
|
68
|
+
const onSettledMock = vi.fn();
|
|
68
69
|
function Page() {
|
|
69
70
|
const mutation = createMutation(() => ({
|
|
70
71
|
mutationFn: (vars) => Promise.resolve(vars.count),
|
|
@@ -110,7 +111,7 @@ describe('createMutation', () => {
|
|
|
110
111
|
});
|
|
111
112
|
it('should set correct values for `failureReason` and `failureCount` on multiple mutate calls', async () => {
|
|
112
113
|
const [count, setCount] = createSignal(0);
|
|
113
|
-
const mutateFn =
|
|
114
|
+
const mutateFn = vi.fn();
|
|
114
115
|
mutateFn.mockImplementationOnce(() => {
|
|
115
116
|
return Promise.reject(new Error('Error test Jonas'));
|
|
116
117
|
});
|
|
@@ -152,8 +153,8 @@ describe('createMutation', () => {
|
|
|
152
153
|
await waitFor(() => screen.getByText('Failed because null'));
|
|
153
154
|
});
|
|
154
155
|
it('should be able to call `onError` and `onSettled` after each failed mutate', async () => {
|
|
155
|
-
const onErrorMock =
|
|
156
|
-
const onSettledMock =
|
|
156
|
+
const onErrorMock = vi.fn();
|
|
157
|
+
const onSettledMock = vi.fn();
|
|
157
158
|
const [count, setCount] = createSignal(0);
|
|
158
159
|
function Page() {
|
|
159
160
|
const mutation = createMutation(() => ({
|
|
@@ -388,7 +389,7 @@ describe('createMutation', () => {
|
|
|
388
389
|
});
|
|
389
390
|
it('should call onMutate even if paused', async () => {
|
|
390
391
|
const onlineMock = mockNavigatorOnLine(false);
|
|
391
|
-
const onMutate =
|
|
392
|
+
const onMutate = vi.fn();
|
|
392
393
|
let count = 0;
|
|
393
394
|
function Page() {
|
|
394
395
|
const mutation = createMutation(() => ({
|
|
@@ -553,7 +554,7 @@ describe('createMutation', () => {
|
|
|
553
554
|
fireEvent.click(screen.getByText('mutate'));
|
|
554
555
|
fireEvent.click(screen.getByText('unmount'));
|
|
555
556
|
});
|
|
556
|
-
it('should be able to throw an error when
|
|
557
|
+
it('should be able to throw an error when throwOnError is set to true', async () => {
|
|
557
558
|
function Page() {
|
|
558
559
|
const mutation = createMutation(() => ({
|
|
559
560
|
mutationFn: () => {
|
|
@@ -561,7 +562,7 @@ describe('createMutation', () => {
|
|
|
561
562
|
err.stack = '';
|
|
562
563
|
return Promise.reject(err);
|
|
563
564
|
},
|
|
564
|
-
|
|
565
|
+
throwOnError: true,
|
|
565
566
|
}));
|
|
566
567
|
return (<div>
|
|
567
568
|
<button onClick={() => mutation.mutate()}>mutate</button>
|
|
@@ -579,7 +580,7 @@ describe('createMutation', () => {
|
|
|
579
580
|
expect(screen.queryByText('error')).not.toBeNull();
|
|
580
581
|
});
|
|
581
582
|
});
|
|
582
|
-
it('should be able to throw an error when
|
|
583
|
+
it('should be able to throw an error when throwOnError is a function that returns true', async () => {
|
|
583
584
|
let boundary = false;
|
|
584
585
|
function Page() {
|
|
585
586
|
const mutation = createMutation(() => ({
|
|
@@ -588,7 +589,7 @@ describe('createMutation', () => {
|
|
|
588
589
|
err.stack = '';
|
|
589
590
|
return Promise.reject(err);
|
|
590
591
|
},
|
|
591
|
-
|
|
592
|
+
throwOnError: () => {
|
|
592
593
|
boundary = !boundary;
|
|
593
594
|
return !boundary;
|
|
594
595
|
},
|
|
@@ -617,8 +618,8 @@ describe('createMutation', () => {
|
|
|
617
618
|
});
|
|
618
619
|
});
|
|
619
620
|
it('should pass meta to mutation', async () => {
|
|
620
|
-
const errorMock =
|
|
621
|
-
const successMock =
|
|
621
|
+
const errorMock = vi.fn();
|
|
622
|
+
const successMock = vi.fn();
|
|
622
623
|
const queryClientMutationMeta = createQueryClient({
|
|
623
624
|
mutationCache: new MutationCache({
|
|
624
625
|
onSuccess: (_, __, ___, mutation) => {
|
|
@@ -664,10 +665,10 @@ describe('createMutation', () => {
|
|
|
664
665
|
expect(errorMock).toHaveBeenCalledWith(metaErrorMessage);
|
|
665
666
|
});
|
|
666
667
|
it('should call cache callbacks when unmounted', async () => {
|
|
667
|
-
const onSuccess =
|
|
668
|
-
const onSuccessMutate =
|
|
669
|
-
const onSettled =
|
|
670
|
-
const onSettledMutate =
|
|
668
|
+
const onSuccess = vi.fn();
|
|
669
|
+
const onSuccessMutate = vi.fn();
|
|
670
|
+
const onSettled = vi.fn();
|
|
671
|
+
const onSettledMutate = vi.fn();
|
|
671
672
|
const mutationKey = queryKey();
|
|
672
673
|
let count = 0;
|
|
673
674
|
function Page() {
|
|
@@ -718,10 +719,10 @@ describe('createMutation', () => {
|
|
|
718
719
|
expect(onSettledMutate).toHaveBeenCalledTimes(0);
|
|
719
720
|
});
|
|
720
721
|
it('should call mutate callbacks only for the last observer', async () => {
|
|
721
|
-
const onSuccess =
|
|
722
|
-
const onSuccessMutate =
|
|
723
|
-
const onSettled =
|
|
724
|
-
const onSettledMutate =
|
|
722
|
+
const onSuccess = vi.fn();
|
|
723
|
+
const onSuccessMutate = vi.fn();
|
|
724
|
+
const onSettled = vi.fn();
|
|
725
|
+
const onSettledMutate = vi.fn();
|
|
725
726
|
let count = 0;
|
|
726
727
|
function Page() {
|
|
727
728
|
const mutation = createMutation(() => ({
|
|
@@ -762,7 +763,7 @@ describe('createMutation', () => {
|
|
|
762
763
|
});
|
|
763
764
|
it('should go to error state if onSuccess callback errors', async () => {
|
|
764
765
|
const error = new Error('error from onSuccess');
|
|
765
|
-
const onError =
|
|
766
|
+
const onError = vi.fn();
|
|
766
767
|
function Page() {
|
|
767
768
|
const mutation = createMutation(() => ({
|
|
768
769
|
mutationFn: async (_text) => {
|
|
@@ -815,7 +816,7 @@ describe('createMutation', () => {
|
|
|
815
816
|
it('should go to error state if onSettled callback errors', async () => {
|
|
816
817
|
const error = new Error('error from onSettled');
|
|
817
818
|
const mutateFnError = new Error('mutateFnError');
|
|
818
|
-
const onError =
|
|
819
|
+
const onError = vi.fn();
|
|
819
820
|
function Page() {
|
|
820
821
|
const mutation = createMutation(() => ({
|
|
821
822
|
mutationFn: async (_text) => {
|