@tanstack/svelte-query 4.24.10 → 5.0.0-alpha.1

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.
Files changed (46) hide show
  1. package/build/lib/{Hydrate.svelte → HydrationBoundary.svelte} +2 -1
  2. package/build/lib/HydrationBoundary.svelte.d.ts +21 -0
  3. package/build/lib/createBaseQuery.d.ts +3 -3
  4. package/build/lib/createBaseQuery.js +26 -22
  5. package/build/lib/createInfiniteQuery.d.ts +3 -5
  6. package/build/lib/createInfiniteQuery.js +5 -4
  7. package/build/lib/createMutation.d.ts +3 -6
  8. package/build/lib/createMutation.js +9 -9
  9. package/build/lib/createQueries.d.ts +12 -7
  10. package/build/lib/createQueries.js +12 -12
  11. package/build/lib/createQuery.d.ts +10 -22
  12. package/build/lib/createQuery.js +3 -5
  13. package/build/lib/index.d.ts +1 -1
  14. package/build/lib/index.js +1 -1
  15. package/build/lib/types.d.ts +16 -15
  16. package/build/lib/useHydrate.d.ts +2 -2
  17. package/build/lib/useHydrate.js +2 -2
  18. package/build/lib/useIsFetching.d.ts +2 -3
  19. package/build/lib/useIsFetching.js +3 -4
  20. package/build/lib/useIsMutating.d.ts +2 -3
  21. package/build/lib/useIsMutating.js +3 -4
  22. package/build/lib/useQueryClient.d.ts +1 -1
  23. package/build/lib/useQueryClient.js +6 -3
  24. package/build/lib/utils.d.ts +3 -0
  25. package/build/lib/utils.js +3 -0
  26. package/package.json +2 -2
  27. package/src/HydrationBoundary.svelte +16 -0
  28. package/src/__tests__/CreateQueries.svelte +5 -3
  29. package/src/__tests__/CreateQuery.svelte +14 -3
  30. package/src/__tests__/createQueries.test.ts +26 -22
  31. package/src/__tests__/createQuery.test.ts +36 -0
  32. package/src/__tests__/utils.ts +2 -34
  33. package/src/createBaseQuery.ts +47 -42
  34. package/src/createInfiniteQuery.ts +19 -81
  35. package/src/createMutation.ts +17 -72
  36. package/src/createQueries.ts +36 -27
  37. package/src/createQuery.ts +33 -107
  38. package/src/index.ts +1 -1
  39. package/src/types.ts +23 -16
  40. package/src/useHydrate.ts +6 -2
  41. package/src/useIsFetching.ts +2 -11
  42. package/src/useIsMutating.ts +3 -12
  43. package/src/useQueryClient.ts +8 -3
  44. package/src/utils.ts +8 -0
  45. package/build/lib/Hydrate.svelte.d.ts +0 -20
  46. package/src/Hydrate.svelte +0 -11
@@ -1,7 +1,8 @@
1
1
  <script>import { useHydrate } from "./useHydrate";
2
2
  export let state;
3
3
  export let options = void 0;
4
- useHydrate(state, options);
4
+ export let queryClient = void 0;
5
+ useHydrate(state, options, queryClient);
5
6
  </script>
6
7
 
7
8
  <slot />
@@ -0,0 +1,21 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { DehydratedState, HydrateOptions, QueryClient } from '@tanstack/query-core';
3
+ declare const __propDef: {
4
+ props: {
5
+ state: DehydratedState;
6
+ options?: HydrateOptions | undefined;
7
+ queryClient?: QueryClient | undefined;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {
13
+ default: {};
14
+ };
15
+ };
16
+ export declare type HydrationBoundaryProps = typeof __propDef.props;
17
+ export declare type HydrationBoundaryEvents = typeof __propDef.events;
18
+ export declare type HydrationBoundarySlots = typeof __propDef.slots;
19
+ export default class HydrationBoundary extends SvelteComponentTyped<HydrationBoundaryProps, HydrationBoundaryEvents, HydrationBoundarySlots> {
20
+ }
21
+ export {};
@@ -1,3 +1,3 @@
1
- import { type QueryKey, type QueryObserver } from '@tanstack/query-core';
2
- import type { CreateBaseQueryOptions, CreateBaseQueryResult } from './types';
3
- export declare function createBaseQuery<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey>(options: CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, Observer: typeof QueryObserver): CreateBaseQueryResult<TData, TError>;
1
+ import type { QueryClient, QueryKey, QueryObserver } from '@tanstack/query-core';
2
+ import type { CreateBaseQueryOptions, CreateBaseQueryResult, WritableOrVal } from './types';
3
+ export declare function createBaseQuery<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey>(options: WritableOrVal<CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, Observer: typeof QueryObserver, queryClient?: QueryClient): CreateBaseQueryResult<TData, TError>;
@@ -1,33 +1,37 @@
1
- import { notifyManager, } from '@tanstack/query-core';
1
+ import { notifyManager } from '@tanstack/query-core';
2
2
  import { useQueryClient } from './useQueryClient';
3
- import { derived, readable } from 'svelte/store';
4
- export function createBaseQuery(options, Observer) {
5
- const queryClient = useQueryClient();
6
- const defaultedOptions = queryClient.defaultQueryOptions(options);
7
- defaultedOptions._optimisticResults = 'optimistic';
8
- let observer = new Observer(queryClient, defaultedOptions);
9
- // Include callbacks in batch renders
10
- if (defaultedOptions.onError) {
11
- defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);
12
- }
13
- if (defaultedOptions.onSuccess) {
14
- defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);
15
- }
16
- if (defaultedOptions.onSettled) {
17
- defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);
18
- }
19
- readable(observer).subscribe(($observer) => {
20
- observer = $observer;
3
+ import { derived, get, readable, writable } from 'svelte/store';
4
+ import { isWritable } from './utils';
5
+ export function createBaseQuery(options, Observer, queryClient) {
6
+ const client = useQueryClient(queryClient);
7
+ const optionsStore = isWritable(options) ? options : writable(options);
8
+ const defaultedOptionsStore = derived(optionsStore, ($options) => {
9
+ const defaultedOptions = client.defaultQueryOptions($options);
10
+ defaultedOptions._optimisticResults = 'optimistic';
11
+ // Include callbacks in batch renders
12
+ if (defaultedOptions.onError) {
13
+ defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);
14
+ }
15
+ if (defaultedOptions.onSuccess) {
16
+ defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);
17
+ }
18
+ if (defaultedOptions.onSettled) {
19
+ defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);
20
+ }
21
+ return defaultedOptions;
22
+ });
23
+ const observer = new Observer(client, get(defaultedOptionsStore));
24
+ defaultedOptionsStore.subscribe(($defaultedOptions) => {
21
25
  // Do not notify on updates because of changes in the options because
22
26
  // these changes should already be reflected in the optimistic result.
23
- observer.setOptions(defaultedOptions, { listeners: false });
27
+ observer.setOptions($defaultedOptions, { listeners: false });
24
28
  });
25
29
  const result = readable(observer.getCurrentResult(), (set) => {
26
30
  return observer.subscribe(notifyManager.batchCalls(set));
27
31
  });
28
32
  const { subscribe } = derived(result, ($result) => {
29
- $result = observer.getOptimisticResult(defaultedOptions);
30
- return !defaultedOptions.notifyOnChangeProps
33
+ $result = observer.getOptimisticResult(get(defaultedOptionsStore));
34
+ return !get(defaultedOptionsStore).notifyOnChangeProps
31
35
  ? observer.trackResult($result)
32
36
  : $result;
33
37
  });
@@ -1,5 +1,3 @@
1
- import { type QueryFunction, type QueryKey } from '@tanstack/query-core';
2
- import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult } from './types';
3
- export declare function createInfiniteQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>): CreateInfiniteQueryResult<TData, TError>;
4
- export declare function createInfiniteQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, options?: Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, 'queryKey'>): CreateInfiniteQueryResult<TData, TError>;
5
- export declare function createInfiniteQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, 'queryKey' | 'queryFn'>): CreateInfiniteQueryResult<TData, TError>;
1
+ import type { QueryKey, QueryClient, RegisteredError, InfiniteData } from '@tanstack/query-core';
2
+ import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult, WritableOrVal } from './types';
3
+ export declare function createInfiniteQuery<TQueryFnData, TError = RegisteredError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: WritableOrVal<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam>>, queryClient?: QueryClient): CreateInfiniteQueryResult<TData, TError>;
@@ -1,6 +1,7 @@
1
- import { InfiniteQueryObserver, parseQueryArgs, } from '@tanstack/query-core';
1
+ import { InfiniteQueryObserver } from '@tanstack/query-core';
2
2
  import { createBaseQuery } from './createBaseQuery';
3
- export function createInfiniteQuery(arg1, arg2, arg3) {
4
- const options = parseQueryArgs(arg1, arg2, arg3);
5
- return createBaseQuery(options, InfiniteQueryObserver);
3
+ export function createInfiniteQuery(options, queryClient) {
4
+ return createBaseQuery(options,
5
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
6
+ InfiniteQueryObserver, queryClient);
6
7
  }
@@ -1,6 +1,3 @@
1
- import { type MutationFunction, type MutationKey } from '@tanstack/query-core';
2
- import type { CreateMutationOptions, CreateMutationResult } from './types';
3
- export declare function createMutation<TData = unknown, TError = unknown, TVariables = void, TContext = unknown>(options: CreateMutationOptions<TData, TError, TVariables, TContext>): CreateMutationResult<TData, TError, TVariables, TContext>;
4
- export declare function createMutation<TData = unknown, TError = unknown, TVariables = void, TContext = unknown>(mutationFn: MutationFunction<TData, TVariables>, options?: Omit<CreateMutationOptions<TData, TError, TVariables, TContext>, 'mutationFn'>): CreateMutationResult<TData, TError, TVariables, TContext>;
5
- export declare function createMutation<TData = unknown, TError = unknown, TVariables = void, TContext = unknown>(mutationKey: MutationKey, options?: Omit<CreateMutationOptions<TData, TError, TVariables, TContext>, 'mutationKey'>): CreateMutationResult<TData, TError, TVariables, TContext>;
6
- export declare function createMutation<TData = unknown, TError = unknown, TVariables = void, TContext = unknown>(mutationKey: MutationKey, mutationFn?: MutationFunction<TData, TVariables>, options?: Omit<CreateMutationOptions<TData, TError, TVariables, TContext>, 'mutationKey' | 'mutationFn'>): CreateMutationResult<TData, TError, TVariables, TContext>;
1
+ import type { QueryClient, RegisteredError } from '@tanstack/query-core';
2
+ import type { CreateMutationOptions, CreateMutationResult, WritableOrVal } from './types';
3
+ export declare function createMutation<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown>(options: WritableOrVal<CreateMutationOptions<TData, TError, TVariables, TContext>>, queryClient?: QueryClient): CreateMutationResult<TData, TError, TVariables, TContext>;
@@ -1,17 +1,17 @@
1
- import { readable, derived } from 'svelte/store';
2
- import { MutationObserver, notifyManager, parseMutationArgs, } from '@tanstack/query-core';
1
+ import { readable, derived, writable, get } from 'svelte/store';
2
+ import { MutationObserver, notifyManager } from '@tanstack/query-core';
3
3
  import { useQueryClient } from './useQueryClient';
4
- export function createMutation(arg1, arg2, arg3) {
5
- const options = parseMutationArgs(arg1, arg2, arg3);
6
- const queryClient = useQueryClient();
7
- let observer = new MutationObserver(queryClient, options);
4
+ import { isWritable } from './utils';
5
+ export function createMutation(options, queryClient) {
6
+ const client = useQueryClient(queryClient);
7
+ const optionsStore = isWritable(options) ? options : writable(options);
8
+ const observer = new MutationObserver(client, get(optionsStore));
8
9
  let mutate;
9
- readable(observer).subscribe(($observer) => {
10
- observer = $observer;
10
+ optionsStore.subscribe(($options) => {
11
11
  mutate = (variables, mutateOptions) => {
12
12
  observer.mutate(variables, mutateOptions).catch(noop);
13
13
  };
14
- observer.setOptions(options);
14
+ observer.setOptions($options);
15
15
  });
16
16
  const result = readable(observer.getCurrentResult(), (set) => {
17
17
  return observer.subscribe(notifyManager.batchCalls((val) => set(val)));
@@ -1,7 +1,9 @@
1
- import type { QueryKey, QueryFunction, QueryObserverResult } from '@tanstack/query-core';
1
+ import type { QueryKey, QueryFunction, QueryClient, QueriesPlaceholderDataFunction, QueryObserverResult, RegisteredError } from '@tanstack/query-core';
2
2
  import { type Readable } from 'svelte/store';
3
- import type { CreateQueryOptions } from './types';
4
- declare type CreateQueryOptionsForCreateQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'context'>;
3
+ import type { CreateQueryOptions, WritableOrVal } from './types';
4
+ declare type CreateQueryOptionsForCreateQueries<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'placeholderData'> & {
5
+ placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
6
+ };
5
7
  declare type MAXIMUM_DEPTH = 20;
6
8
  declare type GetOptions<T> = T extends {
7
9
  queryFnData: infer TQueryFnData;
@@ -16,9 +18,9 @@ declare type GetOptions<T> = T extends {
16
18
  } ? CreateQueryOptionsForCreateQueries<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError> : T extends [infer TQueryFnData] ? CreateQueryOptionsForCreateQueries<TQueryFnData> : T extends {
17
19
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
18
20
  select: (data: any) => infer TData;
19
- } ? CreateQueryOptionsForCreateQueries<TQueryFnData, unknown, TData, TQueryKey> : T extends {
21
+ } ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey> : T extends {
20
22
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
21
- } ? CreateQueryOptionsForCreateQueries<TQueryFnData, unknown, TQueryFnData, TQueryKey> : CreateQueryOptionsForCreateQueries;
23
+ } ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TQueryFnData, TQueryKey> : CreateQueryOptionsForCreateQueries;
22
24
  declare type GetResults<T> = T extends {
23
25
  queryFnData: any;
24
26
  error?: infer TError;
@@ -42,7 +44,10 @@ export declare type QueriesOptions<T extends any[], Result extends any[] = [], D
42
44
  /**
43
45
  * QueriesResults reducer recursively maps type param to results
44
46
  */
45
- export declare type QueriesResults<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? QueryObserverResult[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]> : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, any>[] ? QueryObserverResult<unknown extends TData ? TQueryFnData : TData, TError>[] : QueryObserverResult[];
47
+ export declare type QueriesResults<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? QueryObserverResult[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]> : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, any>[] ? QueryObserverResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? RegisteredError : TError>[] : QueryObserverResult[];
46
48
  export declare type CreateQueriesResult<T extends any[]> = Readable<QueriesResults<T>>;
47
- export declare function createQueries<T extends any[]>(queries: readonly [...QueriesOptions<T>]): CreateQueriesResult<T>;
49
+ export declare function createQueries<T extends any[]>({ queries, queryClient, }: {
50
+ queries: WritableOrVal<[...QueriesOptions<T>]>;
51
+ queryClient?: QueryClient;
52
+ }): CreateQueriesResult<T>;
48
53
  export {};
@@ -1,26 +1,26 @@
1
1
  import { notifyManager, QueriesObserver } from '@tanstack/query-core';
2
- import { readable } from 'svelte/store';
2
+ import { derived, get, readable, writable } from 'svelte/store';
3
3
  import { useQueryClient } from './useQueryClient';
4
- export function createQueries(queries) {
5
- const client = useQueryClient();
4
+ import { isWritable } from './utils';
5
+ export function createQueries({ queries, queryClient, }) {
6
+ const client = useQueryClient(queryClient);
6
7
  // const isRestoring = useIsRestoring()
7
- function getDefaultQuery(newQueries) {
8
- return newQueries.map((options) => {
8
+ const queriesStore = isWritable(queries) ? queries : writable(queries);
9
+ const defaultedQueriesStore = derived(queriesStore, ($queries) => {
10
+ return $queries.map((options) => {
9
11
  const defaultedOptions = client.defaultQueryOptions(options);
10
12
  // Make sure the results are already in fetching state before subscribing or updating options
11
13
  defaultedOptions._optimisticResults = 'optimistic';
12
14
  return defaultedOptions;
13
15
  });
14
- }
15
- const defaultedQueries = getDefaultQuery(queries);
16
- let observer = new QueriesObserver(client, defaultedQueries);
17
- readable(observer).subscribe(($observer) => {
18
- observer = $observer;
16
+ });
17
+ const observer = new QueriesObserver(client, get(defaultedQueriesStore));
18
+ defaultedQueriesStore.subscribe(($defaultedQueries) => {
19
19
  // Do not notify on updates because of changes in the options because
20
20
  // these changes should already be reflected in the optimistic result.
21
- observer.setQueries(defaultedQueries, { listeners: false });
21
+ observer.setQueries($defaultedQueries, { listeners: false });
22
22
  });
23
- const { subscribe } = readable(observer.getOptimisticResult(defaultedQueries), (set) => {
23
+ const { subscribe } = readable(observer.getOptimisticResult(get(defaultedQueriesStore)), (set) => {
24
24
  return observer.subscribe(notifyManager.batchCalls(set));
25
25
  });
26
26
  return { subscribe };
@@ -1,23 +1,11 @@
1
- import type { QueryFunction, QueryKey } from '@tanstack/query-core';
2
- import type { DefinedCreateQueryResult, CreateQueryOptions, CreateQueryResult } from './types';
3
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'initialData'> & {
4
- initialData?: () => undefined;
5
- }): CreateQueryResult<TData, TError>;
6
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'initialData'> & {
1
+ import type { QueryKey, QueryClient, RegisteredError } from '@tanstack/query-core';
2
+ import type { DefinedCreateQueryResult, CreateQueryOptions, CreateQueryResult, WritableOrVal } from './types';
3
+ declare type UndefinedInitialDataOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
4
+ initialData?: undefined;
5
+ };
6
+ declare type DefinedInitialDataOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
7
7
  initialData: TQueryFnData | (() => TQueryFnData);
8
- }): DefinedCreateQueryResult<TData, TError>;
9
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>): CreateQueryResult<TData, TError>;
10
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'initialData'> & {
11
- initialData?: () => undefined;
12
- }): CreateQueryResult<TData, TError>;
13
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'initialData'> & {
14
- initialData: TQueryFnData | (() => TQueryFnData);
15
- }): DefinedCreateQueryResult<TData, TError>;
16
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'>): CreateQueryResult<TData, TError>;
17
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'queryFn' | 'initialData'> & {
18
- initialData?: () => undefined;
19
- }): CreateQueryResult<TData, TError>;
20
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'queryFn' | 'initialData'> & {
21
- initialData: TQueryFnData | (() => TQueryFnData);
22
- }): DefinedCreateQueryResult<TData, TError>;
23
- export declare function createQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'queryFn'>): CreateQueryResult<TData, TError>;
8
+ };
9
+ export declare function createQuery<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: WritableOrVal<UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>>, queryClient?: QueryClient): CreateQueryResult<TData, TError>;
10
+ export declare function createQuery<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: WritableOrVal<DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>>, queryClient?: QueryClient): DefinedCreateQueryResult<TData, TError>;
11
+ export {};
@@ -1,7 +1,5 @@
1
- import { QueryObserver, parseQueryArgs } from '@tanstack/query-core';
1
+ import { QueryObserver } from '@tanstack/query-core';
2
2
  import { createBaseQuery } from './createBaseQuery';
3
- export function createQuery(arg1, arg2, arg3) {
4
- const parsedOptions = parseQueryArgs(arg1, arg2, arg3);
5
- const result = createBaseQuery(parsedOptions, QueryObserver);
6
- return result;
3
+ export function createQuery(options, queryClient) {
4
+ return createBaseQuery(options, QueryObserver, queryClient);
7
5
  }
@@ -8,5 +8,5 @@ export { useQueryClient } from './useQueryClient';
8
8
  export { useIsFetching } from './useIsFetching';
9
9
  export { useIsMutating } from './useIsMutating';
10
10
  export { useHydrate } from './useHydrate';
11
- export { default as Hydrate } from './Hydrate.svelte';
11
+ export { default as HydrationBoundary } from './HydrationBoundary.svelte';
12
12
  export { default as QueryClientProvider } from './QueryClientProvider.svelte';
@@ -11,5 +11,5 @@ export { useQueryClient } from './useQueryClient';
11
11
  export { useIsFetching } from './useIsFetching';
12
12
  export { useIsMutating } from './useIsMutating';
13
13
  export { useHydrate } from './useHydrate';
14
- export { default as Hydrate } from './Hydrate.svelte';
14
+ export { default as HydrationBoundary } from './HydrationBoundary.svelte';
15
15
  export { default as QueryClientProvider } from './QueryClientProvider.svelte';
@@ -1,35 +1,36 @@
1
- import type { InfiniteQueryObserverOptions, InfiniteQueryObserverResult, MutationObserverResult, QueryObserverOptions, QueryObserverResult, QueryKey, MutationObserverOptions, MutateFunction, DefinedQueryObserverResult } from '@tanstack/query-core';
1
+ import type { InfiniteQueryObserverOptions, InfiniteQueryObserverResult, MutationObserverResult, QueryObserverOptions, QueryObserverResult, QueryKey, MutationObserverOptions, MutateFunction, DefinedQueryObserverResult, RegisteredError } from '@tanstack/query-core';
2
2
  import type { QueryClient } from '@tanstack/query-core';
3
- import type { Readable } from 'svelte/store';
3
+ import type { Readable, Writable } from 'svelte/store';
4
+ export declare type WritableOrVal<T> = T | Writable<T>;
4
5
  export interface ContextOptions {
5
6
  /**
6
7
  * Use this to pass your Svelte Query context. Otherwise, `defaultContext` will be used.
7
8
  */
8
9
  context?: QueryClient | undefined;
9
10
  }
10
- export interface CreateBaseQueryOptions<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends ContextOptions, QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
11
+ export interface CreateBaseQueryOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends ContextOptions, QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
11
12
  }
12
- export interface CreateBaseQueryResult<TData = unknown, TError = unknown> extends Readable<QueryObserverResult<TData, TError>> {
13
+ export interface CreateBaseQueryResult<TData = unknown, TError = RegisteredError> extends Readable<QueryObserverResult<TData, TError>> {
13
14
  }
14
- export interface CreateQueryOptions<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey> {
15
+ export interface CreateQueryOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey> {
15
16
  }
16
- export interface CreateQueryResult<TData = unknown, TError = unknown> extends CreateBaseQueryResult<TData, TError> {
17
+ export interface CreateQueryResult<TData = unknown, TError = RegisteredError> extends CreateBaseQueryResult<TData, TError> {
17
18
  }
18
- export interface CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
19
+ export interface CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam> {
19
20
  }
20
- export declare type CreateInfiniteQueryResult<TData = unknown, TError = unknown> = Readable<InfiniteQueryObserverResult<TData, TError>>;
21
- export declare type DefinedCreateBaseQueryResult<TData = unknown, TError = unknown> = Readable<DefinedQueryObserverResult<TData, TError>>;
22
- export declare type DefinedCreateQueryResult<TData = unknown, TError = unknown> = DefinedCreateBaseQueryResult<TData, TError>;
23
- export interface CreateMutationOptions<TData = unknown, TError = unknown, TVariables = void, TContext = unknown> extends ContextOptions, Omit<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted' | 'variables'> {
21
+ export declare type CreateInfiniteQueryResult<TData = unknown, TError = RegisteredError> = Readable<InfiniteQueryObserverResult<TData, TError>>;
22
+ export declare type DefinedCreateBaseQueryResult<TData = unknown, TError = RegisteredError> = Readable<DefinedQueryObserverResult<TData, TError>>;
23
+ export declare type DefinedCreateQueryResult<TData = unknown, TError = RegisteredError> = DefinedCreateBaseQueryResult<TData, TError>;
24
+ export interface CreateMutationOptions<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends ContextOptions, Omit<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted' | 'variables'> {
24
25
  }
25
- export declare type CreateMutateFunction<TData = unknown, TError = unknown, TVariables = void, TContext = unknown> = (...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>) => void;
26
- export declare type CreateMutateAsyncFunction<TData = unknown, TError = unknown, TVariables = void, TContext = unknown> = MutateFunction<TData, TError, TVariables, TContext>;
27
- export declare type CreateBaseMutationResult<TData = unknown, TError = unknown, TVariables = unknown, TContext = unknown> = Override<MutationObserverResult<TData, TError, TVariables, TContext>, {
26
+ export declare type CreateMutateFunction<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> = (...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>) => void;
27
+ export declare type CreateMutateAsyncFunction<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> = MutateFunction<TData, TError, TVariables, TContext>;
28
+ export declare type CreateBaseMutationResult<TData = unknown, TError = RegisteredError, TVariables = unknown, TContext = unknown> = Override<MutationObserverResult<TData, TError, TVariables, TContext>, {
28
29
  mutate: CreateMutateFunction<TData, TError, TVariables, TContext>;
29
30
  }> & {
30
31
  mutateAsync: CreateMutateAsyncFunction<TData, TError, TVariables, TContext>;
31
32
  };
32
- export interface CreateMutationResult<TData = unknown, TError = unknown, TVariables = unknown, TContext = unknown> extends Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>> {
33
+ export interface CreateMutationResult<TData = unknown, TError = RegisteredError, TVariables = unknown, TContext = unknown> extends Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>> {
33
34
  }
34
35
  declare type Override<A, B> = {
35
36
  [K in keyof A]: K extends keyof B ? B[K] : A[K];
@@ -1,2 +1,2 @@
1
- import { type HydrateOptions } from '@tanstack/query-core';
2
- export declare function useHydrate(state?: unknown, options?: HydrateOptions): void;
1
+ import { type HydrateOptions, type QueryClient } from '@tanstack/query-core';
2
+ export declare function useHydrate(state?: unknown, options?: HydrateOptions, queryClient?: QueryClient): void;
@@ -1,7 +1,7 @@
1
1
  import { hydrate, } from '@tanstack/query-core';
2
2
  import { useQueryClient } from './useQueryClient';
3
- export function useHydrate(state, options) {
4
- const client = useQueryClient();
3
+ export function useHydrate(state, options, queryClient) {
4
+ const client = useQueryClient(queryClient);
5
5
  if (state) {
6
6
  hydrate(client, state, options);
7
7
  }
@@ -1,4 +1,3 @@
1
- import { type QueryFilters, type QueryKey } from '@tanstack/query-core';
1
+ import { type QueryFilters, type QueryClient } from '@tanstack/query-core';
2
2
  import { type Readable } from 'svelte/store';
3
- export declare function useIsFetching(filters?: QueryFilters): Readable<number>;
4
- export declare function useIsFetching(queryKey?: QueryKey, filters?: QueryFilters): Readable<number>;
3
+ export declare function useIsFetching(filters?: QueryFilters, queryClient?: QueryClient): Readable<number>;
@@ -1,9 +1,8 @@
1
- import { parseFilterArgs, notifyManager, } from '@tanstack/query-core';
1
+ import { notifyManager, } from '@tanstack/query-core';
2
2
  import { readable } from 'svelte/store';
3
3
  import { useQueryClient } from './useQueryClient';
4
- export function useIsFetching(arg1, arg2) {
5
- const [filters] = parseFilterArgs(arg1, arg2);
6
- const client = useQueryClient();
4
+ export function useIsFetching(filters, queryClient) {
5
+ const client = useQueryClient(queryClient);
7
6
  const cache = client.getQueryCache();
8
7
  // isFetching is the prev value initialized on mount *
9
8
  let isFetching = client.isFetching(filters);
@@ -1,4 +1,3 @@
1
- import { type MutationFilters, type MutationKey } from '@tanstack/query-core';
1
+ import { type MutationFilters, type QueryClient } from '@tanstack/query-core';
2
2
  import { type Readable } from 'svelte/store';
3
- export declare function useIsMutating(filters?: MutationFilters): Readable<number>;
4
- export declare function useIsMutating(mutationKey?: MutationKey, filters?: Omit<MutationFilters, 'mutationKey'>): Readable<number>;
3
+ export declare function useIsMutating(filters?: MutationFilters, queryClient?: QueryClient): Readable<number>;
@@ -1,9 +1,8 @@
1
- import { notifyManager, parseMutationFilterArgs, } from '@tanstack/query-core';
1
+ import { notifyManager, } from '@tanstack/query-core';
2
2
  import { readable } from 'svelte/store';
3
3
  import { useQueryClient } from './useQueryClient';
4
- export function useIsMutating(arg1, arg2) {
5
- const [filters] = parseMutationFilterArgs(arg1, arg2);
6
- const client = useQueryClient();
4
+ export function useIsMutating(filters, queryClient) {
5
+ const client = useQueryClient(queryClient);
7
6
  const cache = client.getMutationCache();
8
7
  // isMutating is the prev value initialized on mount *
9
8
  let isMutating = client.isMutating(filters);
@@ -1,2 +1,2 @@
1
1
  import type { QueryClient } from '@tanstack/query-core';
2
- export declare function useQueryClient(): QueryClient;
2
+ export declare function useQueryClient(queryClient?: QueryClient): QueryClient;
@@ -1,5 +1,8 @@
1
1
  import { getQueryClientContext } from './context';
2
- export function useQueryClient() {
3
- const queryClient = getQueryClientContext();
4
- return queryClient;
2
+ export function useQueryClient(queryClient) {
3
+ const client = getQueryClientContext();
4
+ if (queryClient) {
5
+ return queryClient;
6
+ }
7
+ return client;
5
8
  }
@@ -0,0 +1,3 @@
1
+ import type { Writable } from 'svelte/store';
2
+ import type { WritableOrVal } from './types';
3
+ export declare function isWritable<T extends object>(obj: WritableOrVal<T>): obj is Writable<T>;
@@ -0,0 +1,3 @@
1
+ export function isWritable(obj) {
2
+ return 'subscribe' in obj && 'set' in obj && 'update' in obj;
3
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/svelte-query",
3
- "version": "4.24.10",
3
+ "version": "5.0.0-alpha.1",
4
4
  "description": "Primitives for managing, caching and syncing asynchronous and remote data in Svelte",
5
5
  "author": "Dre Johnson",
6
6
  "license": "MIT",
@@ -28,7 +28,7 @@
28
28
  "vitest": "^0.27.1"
29
29
  },
30
30
  "dependencies": {
31
- "@tanstack/query-core": "4.24.10"
31
+ "@tanstack/query-core": "5.0.0-alpha.1"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "svelte": "^3.54.0"
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import type {
3
+ DehydratedState,
4
+ HydrateOptions,
5
+ QueryClient,
6
+ } from '@tanstack/query-core'
7
+ import { useHydrate } from './useHydrate'
8
+
9
+ export let state: DehydratedState
10
+ export let options: HydrateOptions | undefined = undefined
11
+ export let queryClient: QueryClient | undefined = undefined
12
+
13
+ useHydrate(state, options, queryClient)
14
+ </script>
15
+
16
+ <slot />
@@ -3,7 +3,7 @@
3
3
  import { setQueryClientContext } from '../context'
4
4
  import type { QueriesOptions } from '../createQueries'
5
5
 
6
- export let options: readonly [...QueriesOptions<any>]
6
+ export let options: { queries: [...QueriesOptions<any>] }
7
7
 
8
8
  const queryClient = new QueryClient()
9
9
  setQueryClientContext(queryClient)
@@ -11,8 +11,10 @@
11
11
  const queries = createQueries(options)
12
12
  </script>
13
13
 
14
- {#each $queries as query}
15
- {#if query.isSuccess}
14
+ {#each $queries as query, index}
15
+ {#if query.isPending}
16
+ <p>Loading {index + 1}</p>
17
+ {:else if query.isSuccess}
16
18
  <p>{query.data}</p>
17
19
  {/if}
18
20
  {/each}
@@ -1,8 +1,13 @@
1
1
  <script lang="ts">
2
- import { createQuery, QueryClient, type CreateQueryOptions } from '../index'
2
+ import {
3
+ createQuery,
4
+ QueryClient,
5
+ type CreateQueryOptions,
6
+ type WritableOrVal,
7
+ } from '../index'
3
8
  import { setQueryClientContext } from '../context'
4
9
 
5
- export let options: CreateQueryOptions
10
+ export let options: WritableOrVal<CreateQueryOptions<any>>
6
11
 
7
12
  const queryClient = new QueryClient()
8
13
  setQueryClientContext(queryClient)
@@ -10,10 +15,16 @@
10
15
  const query = createQuery(options)
11
16
  </script>
12
17
 
13
- {#if $query.isLoading}
18
+ {#if $query.isPending}
14
19
  <p>Loading</p>
15
20
  {:else if $query.isError}
16
21
  <p>Error</p>
17
22
  {:else if $query.isSuccess}
18
23
  <p>Success</p>
19
24
  {/if}
25
+
26
+ <ul>
27
+ {#each $query.data ?? [] as entry}
28
+ <li>id: {entry.id}</li>
29
+ {/each}
30
+ </ul>