@tanstack/svelte-query 5.0.0-alpha.32 → 5.0.0-alpha.37

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.
@@ -1,8 +1,8 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { CreateQueryOptions, WritableOrVal } from '../types';
2
+ import type { CreateQueryOptions } from '../types';
3
3
  declare const __propDef: {
4
4
  props: {
5
- options: WritableOrVal<CreateQueryOptions<any>>;
5
+ options: CreateQueryOptions<any>;
6
6
  };
7
7
  events: {
8
8
  [evt: string]: CustomEvent<any>;
@@ -1,3 +1,3 @@
1
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>;
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, queryClient?: QueryClient): CreateBaseQueryResult<TData, TError>;
@@ -1,3 +1,3 @@
1
1
  import type { QueryKey, QueryClient, DefaultError, InfiniteData } from '@tanstack/query-core';
2
- import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult, WritableOrVal } from './types';
3
- export declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: WritableOrVal<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam>>, queryClient?: QueryClient): CreateInfiniteQueryResult<TData, TError>;
2
+ import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult } from './types';
3
+ export declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam>, queryClient?: QueryClient): CreateInfiniteQueryResult<TData, TError>;
@@ -1,3 +1,3 @@
1
1
  import type { QueryClient, DefaultError } from '@tanstack/query-core';
2
- import type { CreateMutationOptions, CreateMutationResult, WritableOrVal } from './types';
3
- export declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: WritableOrVal<CreateMutationOptions<TData, TError, TVariables, TContext>>, queryClient?: QueryClient): CreateMutationResult<TData, TError, TVariables, TContext>;
2
+ import type { CreateMutationOptions, CreateMutationResult } from './types';
3
+ export declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: CreateMutationOptions<TData, TError, TVariables, TContext>, queryClient?: QueryClient): CreateMutationResult<TData, TError, TVariables, TContext>;
@@ -1,7 +1,7 @@
1
- import type { QueryKey, QueryFunction, QueryClient, QueriesPlaceholderDataFunction, QueryObserverResult, DefaultError } from '@tanstack/query-core';
1
+ import type { QueryKey, QueryFunction, QueryClient, QueriesPlaceholderDataFunction, QueryObserverResult, DefaultError, QueryObserverOptions } from '@tanstack/query-core';
2
2
  import { type Readable } from 'svelte/store';
3
- import type { CreateQueryOptions, WritableOrVal } from './types';
4
- declare type CreateQueryOptionsForCreateQueries<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'placeholderData'> & {
3
+ import type { WritableOrVal } from './types';
4
+ declare type QueryObserverOptionsForCreateQueries<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, 'placeholderData'> & {
5
5
  placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
6
6
  };
7
7
  declare type MAXIMUM_DEPTH = 20;
@@ -9,18 +9,18 @@ declare type GetOptions<T> = T extends {
9
9
  queryFnData: infer TQueryFnData;
10
10
  error?: infer TError;
11
11
  data: infer TData;
12
- } ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends {
12
+ } ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends {
13
13
  queryFnData: infer TQueryFnData;
14
14
  error?: infer TError;
15
- } ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError> : T extends {
15
+ } ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError> : T extends {
16
16
  data: infer TData;
17
17
  error?: infer TError;
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 {
18
+ } ? QueryObserverOptionsForCreateQueries<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError> : T extends [infer TQueryFnData] ? QueryObserverOptionsForCreateQueries<TQueryFnData> : T extends {
19
19
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
20
20
  select: (data: any) => infer TData;
21
- } ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey> : T extends {
21
+ } ? QueryObserverOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey> : T extends {
22
22
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
23
- } ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TQueryFnData, TQueryKey> : CreateQueryOptionsForCreateQueries;
23
+ } ? QueryObserverOptionsForCreateQueries<TQueryFnData, Error, TQueryFnData, TQueryKey> : QueryObserverOptionsForCreateQueries;
24
24
  declare type GetResults<T> = T extends {
25
25
  queryFnData: any;
26
26
  error?: infer TError;
@@ -40,13 +40,13 @@ declare type GetResults<T> = T extends {
40
40
  /**
41
41
  * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
42
42
  */
43
- export declare type QueriesOptions<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? CreateQueryOptionsForCreateQueries[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]> : unknown[] extends T ? T : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>[] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[] : CreateQueryOptionsForCreateQueries[];
43
+ export declare type QueriesOptions<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? QueryObserverOptionsForCreateQueries[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]> : unknown[] extends T ? T : T extends QueryObserverOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>[] ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[] : QueryObserverOptionsForCreateQueries[];
44
44
  /**
45
45
  * QueriesResults reducer recursively maps type param to results
46
46
  */
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 ? DefaultError : TError>[] : QueryObserverResult[];
48
- export declare type CreateQueriesResult<T extends any[]> = Readable<QueriesResults<T>>;
49
- export declare function createQueries<T extends any[]>({ queries, }: {
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 QueryObserverOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, any>[] ? QueryObserverResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError>[] : QueryObserverResult[];
48
+ export declare function createQueries<T extends any[], TCombinedResult = QueriesResults<T>>({ queries, ...options }: {
50
49
  queries: WritableOrVal<[...QueriesOptions<T>]>;
51
- }, queryClient?: QueryClient): CreateQueriesResult<T>;
50
+ combine?: (result: QueriesResults<T>) => TCombinedResult;
51
+ }, queryClient?: QueryClient): Readable<TCombinedResult>;
52
52
  export {};
@@ -2,25 +2,26 @@ import { notifyManager, QueriesObserver } from '@tanstack/query-core';
2
2
  import { derived, get, readable, writable } from 'svelte/store';
3
3
  import { useQueryClient } from './useQueryClient';
4
4
  import { isWritable } from './utils';
5
- export function createQueries({ queries, }, queryClient) {
5
+ export function createQueries({ queries, ...options }, queryClient) {
6
6
  const client = useQueryClient(queryClient);
7
7
  // const isRestoring = useIsRestoring()
8
8
  const queriesStore = isWritable(queries) ? queries : writable(queries);
9
9
  const defaultedQueriesStore = derived(queriesStore, ($queries) => {
10
- return $queries.map((options) => {
11
- const defaultedOptions = client.defaultQueryOptions(options);
10
+ return $queries.map((opts) => {
11
+ const defaultedOptions = client.defaultQueryOptions(opts);
12
12
  // Make sure the results are already in fetching state before subscribing or updating options
13
13
  defaultedOptions._optimisticResults = 'optimistic';
14
14
  return defaultedOptions;
15
15
  });
16
16
  });
17
- const observer = new QueriesObserver(client, get(defaultedQueriesStore));
17
+ const observer = new QueriesObserver(client, get(defaultedQueriesStore), options);
18
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, options, { listeners: false });
22
22
  });
23
- const { subscribe } = readable(observer.getOptimisticResult(get(defaultedQueriesStore)), (set) => {
23
+ const [, getCombinedResult] = observer.getOptimisticResult(get(defaultedQueriesStore));
24
+ const { subscribe } = readable(getCombinedResult(), (set) => {
24
25
  return observer.subscribe(notifyManager.batchCalls(set));
25
26
  });
26
27
  return { subscribe };
@@ -1,11 +1,11 @@
1
1
  import type { QueryKey, QueryClient, DefaultError } from '@tanstack/query-core';
2
- import type { DefinedCreateQueryResult, CreateQueryOptions, CreateQueryResult, WritableOrVal } from './types';
2
+ import type { DefinedCreateQueryResult, CreateQueryOptions, CreateQueryResult } from './types';
3
3
  declare type UndefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
4
4
  initialData?: undefined;
5
5
  };
6
6
  declare type DefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
7
7
  initialData: TQueryFnData | (() => TQueryFnData);
8
8
  };
9
- export declare function createQuery<TQueryFnData = unknown, TError = DefaultError, 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 = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: WritableOrVal<DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>>, queryClient?: QueryClient): DefinedCreateQueryResult<TData, TError>;
9
+ export declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): CreateQueryResult<TData, TError>;
10
+ export declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): DefinedCreateQueryResult<TData, TError>;
11
11
  export {};
@@ -1,28 +1,25 @@
1
1
  import type { InfiniteQueryObserverOptions, InfiniteQueryObserverResult, MutationObserverResult, QueryObserverOptions, QueryObserverResult, QueryKey, MutationObserverOptions, MutateFunction, DefinedQueryObserverResult, DefaultError } from '@tanstack/query-core';
2
- import type { QueryClient } from '@tanstack/query-core';
3
2
  import type { Readable, Writable } from 'svelte/store';
3
+ /** Allows a type to be either the base object or a store of that object */
4
4
  export declare type WritableOrVal<T> = T | Writable<T>;
5
- export interface ContextOptions {
6
- /**
7
- * Use this to pass your Svelte Query context. Otherwise, `defaultContext` will be used.
8
- */
9
- context?: QueryClient | undefined;
10
- }
11
- export interface CreateBaseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends ContextOptions, QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
12
- }
13
- export interface CreateBaseQueryResult<TData = unknown, TError = DefaultError> extends Readable<QueryObserverResult<TData, TError>> {
14
- }
15
- export interface CreateQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey> {
16
- }
17
- export interface CreateQueryResult<TData = unknown, TError = DefaultError> extends CreateBaseQueryResult<TData, TError> {
18
- }
19
- export interface CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam> {
20
- }
5
+ /** Options for createBaseQuery */
6
+ export declare type CreateBaseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = WritableOrVal<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>;
7
+ /** Result from createBaseQuery */
8
+ export declare type CreateBaseQueryResult<TData = unknown, TError = DefaultError> = Readable<QueryObserverResult<TData, TError>>;
9
+ /** Options for createQuery */
10
+ export declare type CreateQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>;
11
+ /** Result from createQuery */
12
+ export declare type CreateQueryResult<TData = unknown, TError = DefaultError> = CreateBaseQueryResult<TData, TError>;
13
+ /** Options for createInfiniteQuery */
14
+ export declare type CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = WritableOrVal<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>>;
15
+ /** Result from createInfiniteQuery */
21
16
  export declare type CreateInfiniteQueryResult<TData = unknown, TError = DefaultError> = Readable<InfiniteQueryObserverResult<TData, TError>>;
17
+ /** Options for createBaseQuery with initialData */
22
18
  export declare type DefinedCreateBaseQueryResult<TData = unknown, TError = DefaultError> = Readable<DefinedQueryObserverResult<TData, TError>>;
19
+ /** Options for createQuery with initialData */
23
20
  export declare type DefinedCreateQueryResult<TData = unknown, TError = DefaultError> = DefinedCreateBaseQueryResult<TData, TError>;
24
- export interface CreateMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends ContextOptions, Omit<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted' | 'variables'> {
25
- }
21
+ /** Options for createMutation */
22
+ export declare type CreateMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = WritableOrVal<Omit<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted' | 'variables'>>;
26
23
  export declare type CreateMutateFunction<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = (...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>) => void;
27
24
  export declare type CreateMutateAsyncFunction<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = MutateFunction<TData, TError, TVariables, TContext>;
28
25
  export declare type CreateBaseMutationResult<TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown> = Override<MutationObserverResult<TData, TError, TVariables, TContext>, {
@@ -30,8 +27,8 @@ export declare type CreateBaseMutationResult<TData = unknown, TError = DefaultEr
30
27
  }> & {
31
28
  mutateAsync: CreateMutateAsyncFunction<TData, TError, TVariables, TContext>;
32
29
  };
33
- export interface CreateMutationResult<TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown> extends Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>> {
34
- }
30
+ /** Result from createMutation */
31
+ export declare type CreateMutationResult<TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown> = Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>>;
35
32
  declare type Override<A, B> = {
36
33
  [K in keyof A]: K extends keyof B ? B[K] : A[K];
37
34
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/svelte-query",
3
- "version": "5.0.0-alpha.32",
3
+ "version": "5.0.0-alpha.37",
4
4
  "description": "Primitives for managing, caching and syncing asynchronous and remote data in Svelte",
5
5
  "author": "Lachlan Collins",
6
6
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  "vite": "^4.0.0"
43
43
  },
44
44
  "dependencies": {
45
- "@tanstack/query-core": "5.0.0-alpha.32"
45
+ "@tanstack/query-core": "5.0.0-alpha.34"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "svelte": "^3.54.0"
@@ -1,10 +1,6 @@
1
1
  import type { QueryClient, QueryKey, QueryObserver } from '@tanstack/query-core'
2
2
  import { notifyManager } from '@tanstack/query-core'
3
- import type {
4
- CreateBaseQueryOptions,
5
- CreateBaseQueryResult,
6
- WritableOrVal,
7
- } from './types'
3
+ import type { CreateBaseQueryOptions, CreateBaseQueryResult } from './types'
8
4
  import { useQueryClient } from './useQueryClient'
9
5
  import { derived, get, readable, writable } from 'svelte/store'
10
6
  import { isWritable } from './utils'
@@ -16,8 +12,12 @@ export function createBaseQuery<
16
12
  TQueryData,
17
13
  TQueryKey extends QueryKey,
18
14
  >(
19
- options: WritableOrVal<
20
- CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
15
+ options: CreateBaseQueryOptions<
16
+ TQueryFnData,
17
+ TError,
18
+ TData,
19
+ TQueryData,
20
+ TQueryKey
21
21
  >,
22
22
  Observer: typeof QueryObserver,
23
23
  queryClient?: QueryClient,
@@ -9,7 +9,6 @@ import { InfiniteQueryObserver } from '@tanstack/query-core'
9
9
  import type {
10
10
  CreateInfiniteQueryOptions,
11
11
  CreateInfiniteQueryResult,
12
- WritableOrVal,
13
12
  } from './types'
14
13
  import { createBaseQuery } from './createBaseQuery'
15
14
 
@@ -20,15 +19,13 @@ export function createInfiniteQuery<
20
19
  TQueryKey extends QueryKey = QueryKey,
21
20
  TPageParam = unknown,
22
21
  >(
23
- options: WritableOrVal<
24
- CreateInfiniteQueryOptions<
25
- TQueryFnData,
26
- TError,
27
- TData,
28
- TQueryFnData,
29
- TQueryKey,
30
- TPageParam
31
- >
22
+ options: CreateInfiniteQueryOptions<
23
+ TQueryFnData,
24
+ TError,
25
+ TData,
26
+ TQueryFnData,
27
+ TQueryKey,
28
+ TPageParam
32
29
  >,
33
30
  queryClient?: QueryClient,
34
31
  ): CreateInfiniteQueryResult<TData, TError> {
@@ -5,7 +5,6 @@ import type {
5
5
  CreateMutateFunction,
6
6
  CreateMutationOptions,
7
7
  CreateMutationResult,
8
- WritableOrVal,
9
8
  } from './types'
10
9
  import { useQueryClient } from './useQueryClient'
11
10
  import { isWritable } from './utils'
@@ -16,9 +15,7 @@ export function createMutation<
16
15
  TVariables = void,
17
16
  TContext = unknown,
18
17
  >(
19
- options: WritableOrVal<
20
- CreateMutationOptions<TData, TError, TVariables, TContext>
21
- >,
18
+ options: CreateMutationOptions<TData, TError, TVariables, TContext>,
22
19
  queryClient?: QueryClient,
23
20
  ): CreateMutationResult<TData, TError, TVariables, TContext> {
24
21
  const client = useQueryClient(queryClient)
@@ -5,24 +5,26 @@ import type {
5
5
  QueriesPlaceholderDataFunction,
6
6
  QueryObserverResult,
7
7
  DefaultError,
8
+ QueriesObserverOptions,
9
+ QueryObserverOptions,
8
10
  } from '@tanstack/query-core'
9
11
 
10
12
  import { notifyManager, QueriesObserver } from '@tanstack/query-core'
11
13
  import { derived, get, readable, writable, type Readable } from 'svelte/store'
12
14
 
13
- import type { CreateQueryOptions, WritableOrVal } from './types'
15
+ import type { WritableOrVal } from './types'
14
16
  import { useQueryClient } from './useQueryClient'
15
17
  import { isWritable } from './utils'
16
18
 
17
19
  // This defines the `CreateQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
18
20
  // `placeholderData` function does not have a parameter
19
- type CreateQueryOptionsForCreateQueries<
21
+ type QueryObserverOptionsForCreateQueries<
20
22
  TQueryFnData = unknown,
21
23
  TError = DefaultError,
22
24
  TData = TQueryFnData,
23
25
  TQueryKey extends QueryKey = QueryKey,
24
26
  > = Omit<
25
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
27
+ QueryObserverOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
26
28
  'placeholderData'
27
29
  > & {
28
30
  placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>
@@ -38,33 +40,38 @@ type GetOptions<T> =
38
40
  error?: infer TError
39
41
  data: infer TData
40
42
  }
41
- ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>
43
+ ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData>
42
44
  : T extends { queryFnData: infer TQueryFnData; error?: infer TError }
43
- ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>
45
+ ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError>
44
46
  : T extends { data: infer TData; error?: infer TError }
45
- ? CreateQueryOptionsForCreateQueries<unknown, TError, TData>
47
+ ? QueryObserverOptionsForCreateQueries<unknown, TError, TData>
46
48
  : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]
47
49
  T extends [infer TQueryFnData, infer TError, infer TData]
48
- ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>
50
+ ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData>
49
51
  : T extends [infer TQueryFnData, infer TError]
50
- ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>
52
+ ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError>
51
53
  : T extends [infer TQueryFnData]
52
- ? CreateQueryOptionsForCreateQueries<TQueryFnData>
54
+ ? QueryObserverOptionsForCreateQueries<TQueryFnData>
53
55
  : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided
54
56
  T extends {
55
57
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>
56
58
  select: (data: any) => infer TData
57
59
  }
58
- ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey>
60
+ ? QueryObserverOptionsForCreateQueries<
61
+ TQueryFnData,
62
+ Error,
63
+ TData,
64
+ TQueryKey
65
+ >
59
66
  : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }
60
- ? CreateQueryOptionsForCreateQueries<
67
+ ? QueryObserverOptionsForCreateQueries<
61
68
  TQueryFnData,
62
69
  Error,
63
70
  TQueryFnData,
64
71
  TQueryKey
65
72
  >
66
73
  : // Fallback
67
- CreateQueryOptionsForCreateQueries
74
+ QueryObserverOptionsForCreateQueries
68
75
 
69
76
  type GetResults<T> =
70
77
  // Part 1: responsible for mapping explicit type parameter to function result, if object
@@ -100,7 +107,7 @@ export type QueriesOptions<
100
107
  Result extends any[] = [],
101
108
  Depth extends ReadonlyArray<number> = [],
102
109
  > = Depth['length'] extends MAXIMUM_DEPTH
103
- ? CreateQueryOptionsForCreateQueries[]
110
+ ? QueryObserverOptionsForCreateQueries[]
104
111
  : T extends []
105
112
  ? []
106
113
  : T extends [infer Head]
@@ -111,15 +118,20 @@ export type QueriesOptions<
111
118
  ? T
112
119
  : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!
113
120
  // use this to infer the param types in the case of Array.map() argument
114
- T extends CreateQueryOptionsForCreateQueries<
121
+ T extends QueryObserverOptionsForCreateQueries<
115
122
  infer TQueryFnData,
116
123
  infer TError,
117
124
  infer TData,
118
125
  infer TQueryKey
119
126
  >[]
120
- ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[]
127
+ ? QueryObserverOptionsForCreateQueries<
128
+ TQueryFnData,
129
+ TError,
130
+ TData,
131
+ TQueryKey
132
+ >[]
121
133
  : // Fallback
122
- CreateQueryOptionsForCreateQueries[]
134
+ QueryObserverOptionsForCreateQueries[]
123
135
 
124
136
  /**
125
137
  * QueriesResults reducer recursively maps type param to results
@@ -136,7 +148,7 @@ export type QueriesResults<
136
148
  ? [...Result, GetResults<Head>]
137
149
  : T extends [infer Head, ...infer Tail]
138
150
  ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>
139
- : T extends CreateQueryOptionsForCreateQueries<
151
+ : T extends QueryObserverOptionsForCreateQueries<
140
152
  infer TQueryFnData,
141
153
  infer TError,
142
154
  infer TData,
@@ -150,44 +162,56 @@ export type QueriesResults<
150
162
  : // Fallback
151
163
  QueryObserverResult[]
152
164
 
153
- export type CreateQueriesResult<T extends any[]> = Readable<QueriesResults<T>>
154
-
155
- export function createQueries<T extends any[]>(
165
+ export function createQueries<
166
+ T extends any[],
167
+ TCombinedResult = QueriesResults<T>,
168
+ >(
156
169
  {
157
170
  queries,
171
+ ...options
158
172
  }: {
159
173
  queries: WritableOrVal<[...QueriesOptions<T>]>
174
+ combine?: (result: QueriesResults<T>) => TCombinedResult
160
175
  },
161
176
  queryClient?: QueryClient,
162
- ): CreateQueriesResult<T> {
177
+ ): Readable<TCombinedResult> {
163
178
  const client = useQueryClient(queryClient)
164
179
  // const isRestoring = useIsRestoring()
165
180
 
166
181
  const queriesStore = isWritable(queries) ? queries : writable(queries)
167
182
 
168
183
  const defaultedQueriesStore = derived(queriesStore, ($queries) => {
169
- return $queries.map((options) => {
170
- const defaultedOptions = client.defaultQueryOptions(options)
184
+ return $queries.map((opts) => {
185
+ const defaultedOptions = client.defaultQueryOptions(opts)
171
186
  // Make sure the results are already in fetching state before subscribing or updating options
172
187
  defaultedOptions._optimisticResults = 'optimistic'
173
188
 
174
189
  return defaultedOptions
175
190
  })
176
191
  })
177
- const observer = new QueriesObserver(client, get(defaultedQueriesStore))
192
+ const observer = new QueriesObserver<TCombinedResult>(
193
+ client,
194
+ get(defaultedQueriesStore),
195
+ options as QueriesObserverOptions<TCombinedResult>,
196
+ )
178
197
 
179
198
  defaultedQueriesStore.subscribe(($defaultedQueries) => {
180
199
  // Do not notify on updates because of changes in the options because
181
200
  // these changes should already be reflected in the optimistic result.
182
- observer.setQueries($defaultedQueries, { listeners: false })
201
+ observer.setQueries(
202
+ $defaultedQueries,
203
+ options as QueriesObserverOptions<TCombinedResult>,
204
+ { listeners: false },
205
+ )
183
206
  })
184
207
 
185
- const { subscribe } = readable(
186
- observer.getOptimisticResult(get(defaultedQueriesStore)) as any,
187
- (set) => {
188
- return observer.subscribe(notifyManager.batchCalls(set))
189
- },
208
+ const [, getCombinedResult] = observer.getOptimisticResult(
209
+ get(defaultedQueriesStore),
190
210
  )
191
211
 
212
+ const { subscribe } = readable(getCombinedResult() as any, (set) => {
213
+ return observer.subscribe(notifyManager.batchCalls(set))
214
+ })
215
+
192
216
  return { subscribe }
193
217
  }
@@ -5,7 +5,6 @@ import type {
5
5
  DefinedCreateQueryResult,
6
6
  CreateQueryOptions,
7
7
  CreateQueryResult,
8
- WritableOrVal,
9
8
  } from './types'
10
9
 
11
10
  type UndefinedInitialDataOptions<
@@ -32,9 +31,7 @@ export function createQuery<
32
31
  TData = TQueryFnData,
33
32
  TQueryKey extends QueryKey = QueryKey,
34
33
  >(
35
- options: WritableOrVal<
36
- UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>
37
- >,
34
+ options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
38
35
  queryClient?: QueryClient,
39
36
  ): CreateQueryResult<TData, TError>
40
37
 
@@ -44,9 +41,7 @@ export function createQuery<
44
41
  TData = TQueryFnData,
45
42
  TQueryKey extends QueryKey = QueryKey,
46
43
  >(
47
- options: WritableOrVal<
48
- DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>
49
- >,
44
+ options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
50
45
  queryClient?: QueryClient,
51
46
  ): DefinedCreateQueryResult<TData, TError>
52
47
 
@@ -56,9 +51,7 @@ export function createQuery<
56
51
  TData = TQueryFnData,
57
52
  TQueryKey extends QueryKey = QueryKey,
58
53
  >(
59
- options: WritableOrVal<
60
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>
61
- >,
54
+ options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
62
55
  queryClient?: QueryClient,
63
56
  ) {
64
57
  return createBaseQuery(options, QueryObserver, queryClient)
package/src/types.ts CHANGED
@@ -10,87 +10,91 @@ import type {
10
10
  DefinedQueryObserverResult,
11
11
  DefaultError,
12
12
  } from '@tanstack/query-core'
13
- import type { QueryClient } from '@tanstack/query-core'
14
13
  import type { Readable, Writable } from 'svelte/store'
15
14
 
15
+ /** Allows a type to be either the base object or a store of that object */
16
16
  export type WritableOrVal<T> = T | Writable<T>
17
17
 
18
- export interface ContextOptions {
19
- /**
20
- * Use this to pass your Svelte Query context. Otherwise, `defaultContext` will be used.
21
- */
22
- context?: QueryClient | undefined
23
- }
24
-
25
- export interface CreateBaseQueryOptions<
18
+ /** Options for createBaseQuery */
19
+ export type CreateBaseQueryOptions<
26
20
  TQueryFnData = unknown,
27
21
  TError = DefaultError,
28
22
  TData = TQueryFnData,
29
23
  TQueryData = TQueryFnData,
30
24
  TQueryKey extends QueryKey = QueryKey,
31
- > extends ContextOptions,
32
- QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {}
25
+ > = WritableOrVal<
26
+ QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
27
+ >
33
28
 
34
- export interface CreateBaseQueryResult<TData = unknown, TError = DefaultError>
35
- extends Readable<QueryObserverResult<TData, TError>> {}
29
+ /** Result from createBaseQuery */
30
+ export type CreateBaseQueryResult<
31
+ TData = unknown,
32
+ TError = DefaultError,
33
+ > = Readable<QueryObserverResult<TData, TError>>
36
34
 
37
- export interface CreateQueryOptions<
35
+ /** Options for createQuery */
36
+ export type CreateQueryOptions<
38
37
  TQueryFnData = unknown,
39
38
  TError = DefaultError,
40
39
  TData = TQueryFnData,
41
40
  TQueryKey extends QueryKey = QueryKey,
42
- > extends CreateBaseQueryOptions<
43
- TQueryFnData,
44
- TError,
45
- TData,
46
- TQueryFnData,
47
- TQueryKey
48
- > {}
41
+ > = CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>
49
42
 
50
- export interface CreateQueryResult<TData = unknown, TError = DefaultError>
51
- extends CreateBaseQueryResult<TData, TError> {}
43
+ /** Result from createQuery */
44
+ export type CreateQueryResult<
45
+ TData = unknown,
46
+ TError = DefaultError,
47
+ > = CreateBaseQueryResult<TData, TError>
52
48
 
53
- export interface CreateInfiniteQueryOptions<
49
+ /** Options for createInfiniteQuery */
50
+ export type CreateInfiniteQueryOptions<
54
51
  TQueryFnData = unknown,
55
52
  TError = DefaultError,
56
53
  TData = TQueryFnData,
57
54
  TQueryData = TQueryFnData,
58
55
  TQueryKey extends QueryKey = QueryKey,
59
56
  TPageParam = unknown,
60
- > extends InfiniteQueryObserverOptions<
57
+ > = WritableOrVal<
58
+ InfiniteQueryObserverOptions<
61
59
  TQueryFnData,
62
60
  TError,
63
61
  TData,
64
62
  TQueryData,
65
63
  TQueryKey,
66
64
  TPageParam
67
- > {}
65
+ >
66
+ >
68
67
 
68
+ /** Result from createInfiniteQuery */
69
69
  export type CreateInfiniteQueryResult<
70
70
  TData = unknown,
71
71
  TError = DefaultError,
72
72
  > = Readable<InfiniteQueryObserverResult<TData, TError>>
73
73
 
74
+ /** Options for createBaseQuery with initialData */
74
75
  export type DefinedCreateBaseQueryResult<
75
76
  TData = unknown,
76
77
  TError = DefaultError,
77
78
  > = Readable<DefinedQueryObserverResult<TData, TError>>
78
79
 
80
+ /** Options for createQuery with initialData */
79
81
  export type DefinedCreateQueryResult<
80
82
  TData = unknown,
81
83
  TError = DefaultError,
82
84
  > = DefinedCreateBaseQueryResult<TData, TError>
83
85
 
84
- export interface CreateMutationOptions<
86
+ /** Options for createMutation */
87
+ export type CreateMutationOptions<
85
88
  TData = unknown,
86
89
  TError = DefaultError,
87
90
  TVariables = void,
88
91
  TContext = unknown,
89
- > extends ContextOptions,
90
- Omit<
91
- MutationObserverOptions<TData, TError, TVariables, TContext>,
92
- '_defaulted' | 'variables'
93
- > {}
92
+ > = WritableOrVal<
93
+ Omit<
94
+ MutationObserverOptions<TData, TError, TVariables, TContext>,
95
+ '_defaulted' | 'variables'
96
+ >
97
+ >
94
98
 
95
99
  export type CreateMutateFunction<
96
100
  TData = unknown,
@@ -120,13 +124,12 @@ export type CreateBaseMutationResult<
120
124
  mutateAsync: CreateMutateAsyncFunction<TData, TError, TVariables, TContext>
121
125
  }
122
126
 
123
- export interface CreateMutationResult<
127
+ /** Result from createMutation */
128
+ export type CreateMutationResult<
124
129
  TData = unknown,
125
130
  TError = DefaultError,
126
131
  TVariables = unknown,
127
132
  TContext = unknown,
128
- > extends Readable<
129
- CreateBaseMutationResult<TData, TError, TVariables, TContext>
130
- > {}
133
+ > = Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>>
131
134
 
132
135
  type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }