reactjrx 1.68.0 → 1.69.0

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 (120) hide show
  1. package/README.md +6 -2
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.d.ts +5 -5
  4. package/dist/index.js +2052 -1488
  5. package/dist/lib/binding/types.d.ts +2 -0
  6. package/dist/lib/binding/useObservableEvent.d.ts +5 -0
  7. package/dist/lib/binding/useObservableState.d.ts +16 -0
  8. package/dist/lib/binding/useSubscribe.d.ts +2 -3
  9. package/dist/lib/binding/useSubscribeEffect.d.ts +11 -0
  10. package/dist/lib/queries/client/QueryClient.d.ts +48 -0
  11. package/dist/lib/queries/client/focusManager.d.ts +19 -0
  12. package/dist/lib/queries/client/keys/hashKey.d.ts +3 -0
  13. package/dist/lib/queries/client/keys/{compareKeys.d.ts → matchKey.d.ts} +1 -1
  14. package/dist/lib/queries/client/keys/partialMatchKey.d.ts +5 -0
  15. package/dist/lib/queries/client/mutations/cache/MutationCache.d.ts +5 -16
  16. package/dist/lib/queries/client/mutations/mutation/Mutation.d.ts +4 -10
  17. package/dist/lib/queries/client/mutations/mutation/delayWhenNetworkOnline.d.ts +4 -0
  18. package/dist/lib/queries/client/mutations/mutation/observeUntilFinished.d.ts +3 -0
  19. package/dist/lib/queries/client/mutations/mutation/types.d.ts +4 -3
  20. package/dist/lib/queries/client/mutations/mutation/waitForNetworkOnError.d.ts +6 -0
  21. package/dist/lib/queries/client/mutations/observers/MutationObserver.d.ts +1 -7
  22. package/dist/lib/queries/client/mutations/runner/MutationRunner.d.ts +9 -7
  23. package/dist/lib/queries/client/onlineManager.d.ts +10 -0
  24. package/dist/lib/queries/client/queries/cache/QueryCache.d.ts +33 -0
  25. package/dist/lib/queries/client/queries/cache/types.d.ts +45 -0
  26. package/dist/lib/queries/client/queries/observer/QueryObserver.d.ts +65 -0
  27. package/dist/lib/queries/client/queries/observer/queryStateHelpers.d.ts +9 -0
  28. package/dist/lib/queries/client/queries/observer/types.d.ts +241 -0
  29. package/dist/lib/queries/client/queries/query/Query.d.ts +71 -0
  30. package/dist/lib/queries/client/queries/query/delayOnNetworkMode.d.ts +6 -0
  31. package/dist/lib/queries/client/queries/query/delayUntilFocus.d.ts +2 -0
  32. package/dist/lib/queries/client/queries/query/executeQuery.d.ts +17 -0
  33. package/dist/lib/queries/client/queries/query/getDefaultState.d.ts +4 -0
  34. package/dist/lib/queries/client/queries/query/operators.d.ts +13 -0
  35. package/dist/lib/queries/client/queries/query/types.d.ts +93 -0
  36. package/dist/lib/queries/client/queries/retryer/CancelledError.d.ts +6 -0
  37. package/dist/lib/queries/client/queries/retryer/types.d.ts +4 -0
  38. package/dist/lib/queries/client/queries/retryer/utils.d.ts +2 -0
  39. package/dist/lib/queries/client/queries/types.d.ts +112 -0
  40. package/dist/lib/queries/client/queries/utils.d.ts +8 -0
  41. package/dist/lib/queries/client/store.d.ts +25 -0
  42. package/dist/lib/queries/client/tests/utils.d.ts +7 -1
  43. package/dist/lib/queries/client/types.d.ts +20 -11
  44. package/dist/lib/queries/client/utils/keepPreviousData.d.ts +1 -0
  45. package/dist/lib/queries/client/utils/makeObservable.d.ts +6 -0
  46. package/dist/lib/queries/react/QueryClientProvider.d.ts +7 -0
  47. package/dist/lib/queries/react/QueryClientProvider.rq.test.d.ts +1 -0
  48. package/dist/lib/queries/react/mutations/useIsMutating.d.ts +1 -1
  49. package/dist/lib/queries/react/mutations/useMutation.d.ts +1 -1
  50. package/dist/lib/queries/react/mutations/useMutationState.d.ts +2 -2
  51. package/dist/lib/queries/react/queries/QueryErrorResetBoundary.d.ts +11 -0
  52. package/dist/lib/queries/react/queries/QueryOptions.rq.types.test.d.ts +1 -0
  53. package/dist/lib/queries/react/queries/errorBoundaryUtils.d.ts +12 -0
  54. package/dist/lib/queries/react/queries/isRestoring.d.ts +3 -0
  55. package/dist/lib/queries/react/queries/queryOptions.d.ts +18 -0
  56. package/dist/lib/queries/react/queries/types.d.ts +9 -11
  57. package/dist/lib/queries/react/queries/useBaseQuery.d.ts +6 -0
  58. package/dist/lib/queries/react/queries/useIsFetching.d.ts +3 -0
  59. package/dist/lib/queries/react/queries/useIsFetching.rq.test.d.ts +1 -0
  60. package/dist/lib/queries/react/queries/useQuery.d.ts +8 -6
  61. package/dist/lib/queries/react/queries/useQuery.rq.test.d.ts +1 -0
  62. package/dist/lib/queries/react/queries/useQuery.rq.types.test.d.ts +1 -0
  63. package/dist/lib/queries/react/useQueryClient.d.ts +2 -0
  64. package/dist/lib/utils/filterObjectByKey.d.ts +1 -0
  65. package/dist/lib/utils/hasObjectPrototype.d.ts +1 -0
  66. package/dist/lib/utils/index.d.ts +1 -0
  67. package/dist/lib/utils/isPlainArray.d.ts +1 -0
  68. package/dist/lib/utils/isPlainObject.d.ts +1 -0
  69. package/dist/lib/utils/isPromiseLike.d.ts +1 -0
  70. package/dist/lib/utils/isServer.d.ts +1 -0
  71. package/dist/lib/utils/operators/retryBackoff.d.ts +7 -5
  72. package/dist/lib/utils/replaceEqualDeep.d.ts +6 -0
  73. package/dist/lib/utils/types.d.ts +7 -0
  74. package/dist/tests/testUtils.d.ts +1 -1
  75. package/dist/tests/utils.d.ts +12 -6
  76. package/package.json +10 -11
  77. package/dist/lib/binding/trigger.d.ts +0 -4
  78. package/dist/lib/binding/useObserveCallback.d.ts +0 -5
  79. package/dist/lib/queries/client/cache/cacheClient.d.ts +0 -12
  80. package/dist/lib/queries/client/cache/invalidateCache.d.ts +0 -5
  81. package/dist/lib/queries/client/cache/logger.d.ts +0 -24
  82. package/dist/lib/queries/client/cache/registerResultInCache.d.ts +0 -8
  83. package/dist/lib/queries/client/createClient.d.ts +0 -90
  84. package/dist/lib/queries/client/deduplication/deduplicate.d.ts +0 -3
  85. package/dist/lib/queries/client/fetch/notifyQueryResult.d.ts +0 -3
  86. package/dist/lib/queries/client/fetch/queryFetch.d.ts +0 -12
  87. package/dist/lib/queries/client/invalidation/invalidationClient.d.ts +0 -11
  88. package/dist/lib/queries/client/invalidation/logger.d.ts +0 -24
  89. package/dist/lib/queries/client/invalidation/markAsStale.d.ts +0 -8
  90. package/dist/lib/queries/client/keys/serializeKey.d.ts +0 -4
  91. package/dist/lib/queries/client/keys/withKeyComparison.d.ts +0 -16
  92. package/dist/lib/queries/client/operators.d.ts +0 -8
  93. package/dist/lib/queries/client/refetch/client.d.ts +0 -17
  94. package/dist/lib/queries/client/refetch/dispatchExternalRefetchToAllQueries.d.ts +0 -3
  95. package/dist/lib/queries/client/refetch/logger.d.ts +0 -24
  96. package/dist/lib/queries/client/refetch/markQueryAsStaleIfRefetch.d.ts +0 -3
  97. package/dist/lib/queries/client/store/createQueryStore.d.ts +0 -55
  98. package/dist/lib/queries/client/store/debugger.d.ts +0 -3
  99. package/dist/lib/queries/client/store/garbageCache.d.ts +0 -5
  100. package/dist/lib/queries/client/store/initializeQueryInStore.d.ts +0 -8
  101. package/dist/lib/queries/client/store/mapStoreQueryToRunnerOptions.d.ts +0 -4
  102. package/dist/lib/queries/client/store/queryListener.d.ts +0 -3
  103. package/dist/lib/queries/client/store/updateStoreWithNewQuery.d.ts +0 -10
  104. package/dist/lib/queries/client/triggers.d.ts +0 -8
  105. package/dist/lib/queries/client/utils/functionAsObservable.d.ts +0 -2
  106. package/dist/lib/queries/client/utils/wrapInPromise.d.ts +0 -3
  107. package/dist/lib/queries/react/Provider.d.ts +0 -12
  108. package/dist/lib/queries/react/queries/helpers.d.ts +0 -28
  109. package/dist/lib/queries/react/triggers/activityTrigger.d.ts +0 -11
  110. package/dist/lib/queries/react/triggers/networkTrigger.d.ts +0 -8
  111. package/dist/lib/queries/react/useSubscribeEffect.d.ts +0 -10
  112. /package/dist/lib/queries/client/{cache/cache.garbage.test.d.ts → QueryClient.types.rq.test.d.ts} +0 -0
  113. /package/dist/lib/queries/client/{cache/cacheClient.test.d.ts → focusManager.rq.test.d.ts} +0 -0
  114. /package/dist/lib/queries/client/{deduplication/deduplicate.test.d.ts → keys/hashKey.test.d.ts} +0 -0
  115. /package/dist/lib/queries/client/{invalidation/invalidation.test.d.ts → keys/matchKey.test.d.ts} +0 -0
  116. /package/dist/lib/queries/client/keys/{compareKeys.test.d.ts → partialMatchKey.rq.test.d.ts} +0 -0
  117. /package/dist/lib/queries/client/{keys/keys.test.d.ts → mutations/cache/mutationCache.rq.test.d.ts} +0 -0
  118. /package/dist/lib/queries/client/{keys/serializeKey.test.d.ts → queries/observer/QueryObserver.rq.test.d.ts} +0 -0
  119. /package/dist/lib/queries/client/{mutations/cache/mutationCache.test.d.ts → queries/observer/QueryObserver.types.rq.test.d.ts} +0 -0
  120. /package/dist/lib/queries/client/{refetch/refetch.test.d.ts → queries/query/query.rq.test.d.ts} +0 -0
@@ -0,0 +1,2 @@
1
+ import { type Observable } from "rxjs";
2
+ export type SubscribeSource<Data> = (() => Observable<Data>) | Promise<Data> | Observable<Data> | (() => Promise<Data>) | (() => Data) | Data;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * This creates an event handler and an observable that represents calls to that handler.
4
+ */
5
+ export declare const useObserveCallback: <T = void>() => readonly [import("react").MutableRefObject<import("rxjs").Observable<T>>, (arg: T) => void];
@@ -0,0 +1,16 @@
1
+ import { type Observable } from "rxjs";
2
+ /**
3
+ * If you need to represent some piece of state as an observable and also want the ability to change
4
+ * this state during the lifetime of the component, useObservableState
5
+ * is for you. It acts like React.useState(), only that
6
+ * it returns an observable representing changes to the
7
+ * value instead of the value itself. The callback/setter
8
+ * returned acts like a the regular callback you
9
+ * would otherwise get from React.useState. This is useful when you want
10
+ * to compose the state change together with other observables.
11
+ *
12
+ * @important
13
+ * The last array value is the value itself in case
14
+ * you need a direct reference to the value
15
+ */
16
+ export declare const useObservableState: <T>(defaultValue: T) => [Observable<T>, (value: T) => void, T];
@@ -1,4 +1,3 @@
1
1
  import { type DependencyList } from "react";
2
- import { type Observable } from "rxjs";
3
- export declare function useSubscribe<T>(source: Observable<T>): void;
4
- export declare function useSubscribe<T>(source$: () => Observable<T>, deps: DependencyList): void;
2
+ import { type SubscribeSource } from "./types";
3
+ export declare function useSubscribe<T>(source: SubscribeSource<T>, deps?: DependencyList): void;
@@ -0,0 +1,11 @@
1
+ import { type DependencyList } from "react";
2
+ import { type SubscribeSource } from "./types";
3
+ interface Option {
4
+ retry?: boolean;
5
+ onError?: (error: unknown) => void;
6
+ }
7
+ export declare function useSubscribeEffect<T>(source: SubscribeSource<T>): void;
8
+ export declare function useSubscribeEffect<T>(source: SubscribeSource<T>, options: Option): void;
9
+ export declare function useSubscribeEffect<T>(source: SubscribeSource<T>, deps: DependencyList): void;
10
+ export declare function useSubscribeEffect<T>(source: SubscribeSource<T>, options: Option, deps: DependencyList): void;
11
+ export {};
@@ -0,0 +1,48 @@
1
+ import { type MutationKey } from "./mutations/types";
2
+ import { MutationCache } from "./mutations/cache/MutationCache";
3
+ import { type MutationObserverOptions } from "./mutations/observers/types";
4
+ import { type MutationOptions } from "./mutations/mutation/types";
5
+ import { QueryCache } from "./queries/cache/QueryCache";
6
+ import { type DataTag, type Updater, type FetchQueryOptions, type QueryFilters, type SetDataOptions, type RefetchOptions } from "./queries/types";
7
+ import { type RefetchQueryFilters, type DefaultError, type InvalidateOptions, type InvalidateQueryFilters, type ResetOptions } from "./types";
8
+ import { type QueryKey } from "./keys/types";
9
+ import { type DefaultedQueryObserverOptions, type QueryObserverOptions } from "./queries/observer/types";
10
+ import { type NoInfer } from "../../utils/types";
11
+ import { type QueryState } from "./queries/query/types";
12
+ import { type CancelOptions } from "./queries/retryer/types";
13
+ export interface DefaultOptions<TError = DefaultError> {
14
+ queries?: Omit<QueryObserverOptions<unknown, TError>, "suspense">;
15
+ mutations?: MutationObserverOptions<unknown, TError, unknown, unknown>;
16
+ }
17
+ export interface QueryClientConfig {
18
+ queryCache?: QueryCache;
19
+ mutationCache?: MutationCache;
20
+ defaultOptions?: DefaultOptions;
21
+ }
22
+ export declare class QueryClient {
23
+ #private;
24
+ constructor({ mutationCache, queryCache, defaultOptions }?: QueryClientConfig);
25
+ mount(): void;
26
+ unmount(): void;
27
+ getMutationCache(): MutationCache;
28
+ getQueryCache(): QueryCache;
29
+ defaultMutationOptions<T extends MutationOptions<any, any, any, any>>(options?: T): T;
30
+ defaultQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never>(options?: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam> | DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>): DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>;
31
+ fetchQuery<TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never>(options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): Promise<TData>;
32
+ prefetchQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>): Promise<void>;
33
+ resetQueries(filters?: QueryFilters, options?: ResetOptions): Promise<void>;
34
+ refetchQueries(filters?: RefetchQueryFilters, options?: RefetchOptions): Promise<void>;
35
+ getQueryData<TQueryFnData = unknown, TTaggedQueryKey extends QueryKey = QueryKey, TInferredQueryFnData = TTaggedQueryKey extends DataTag<unknown, infer TaggedValue> ? TaggedValue : TQueryFnData>(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined;
36
+ setQueryData<TQueryFnData = unknown, TaggedQueryKey extends QueryKey = QueryKey, TInferredQueryFnData = TaggedQueryKey extends DataTag<unknown, infer TaggedValue> ? TaggedValue : TQueryFnData>(queryKey: TaggedQueryKey, updater: Updater<NoInfer<TInferredQueryFnData> | undefined, NoInfer<TInferredQueryFnData> | undefined>, options?: SetDataOptions): TInferredQueryFnData | undefined;
37
+ getMutationDefaults(mutationKey: MutationKey): MutationObserverOptions<any, any, any, any>;
38
+ getQueryState<TQueryFnData = unknown, TError = DefaultError>(queryKey: QueryKey): QueryState<TQueryFnData, TError> | undefined;
39
+ setMutationDefaults(mutationKey: MutationKey, options: Omit<MutationObserverOptions<any, any, any, any>, "mutationKey">): void;
40
+ setQueryDefaults(queryKey: QueryKey, options: Partial<Omit<QueryObserverOptions<unknown, any, any, any>, "queryKey">>): void;
41
+ getQueryDefaults(queryKey: QueryKey): QueryObserverOptions<any, any, any, any, any>;
42
+ removeQueries(filters?: QueryFilters): void;
43
+ cancelQueries(filters?: QueryFilters, cancelOptions?: CancelOptions): Promise<void>;
44
+ invalidateQueries(filters?: InvalidateQueryFilters, options?: InvalidateOptions): Promise<void>;
45
+ resumePausedMutations(): Promise<import("./mutations/mutation/types").MutationState<any, any, any, any>[]>;
46
+ isFetching(filters?: QueryFilters): number;
47
+ clear(): void;
48
+ }
@@ -0,0 +1,19 @@
1
+ import { BehaviorSubject } from "rxjs";
2
+ export declare class FocusManager {
3
+ #private;
4
+ readonly focused$: BehaviorSubject<boolean>;
5
+ readonly focusRegained$: import("rxjs").Observable<boolean>;
6
+ constructor();
7
+ isFocused(): boolean;
8
+ setFocused(focused?: boolean): void;
9
+ subscribe(fn: () => void): () => void;
10
+ /**
11
+ * @important
12
+ * You do not need that outside of testing. This is bad practice but necessary in order
13
+ * to not mess too much with rq tests files.
14
+ *
15
+ * Use it after mocking to force the manager to hold mocked value.
16
+ */
17
+ refresh(): void;
18
+ }
19
+ export declare const focusManager: FocusManager;
@@ -0,0 +1,3 @@
1
+ import { type MutationKey } from "../mutations/types";
2
+ import { type QueryKey } from "./types";
3
+ export declare const hashKey: (queryKey: QueryKey | MutationKey) => string;
@@ -1,4 +1,4 @@
1
1
  import { type QueryKey } from "./types";
2
- export declare const compareKeys: (keyA: QueryKey, keyB: QueryKey, { exact }?: {
2
+ export declare const matchKey: (keyA: QueryKey, keyB: QueryKey, { exact }?: {
3
3
  exact?: boolean | undefined;
4
4
  }) => boolean;
@@ -0,0 +1,5 @@
1
+ import { type QueryKey } from "./types";
2
+ /**
3
+ * Checks if key `b` partially matches with key `a`.
4
+ */
5
+ export declare function partialMatchKey(a: QueryKey, b: QueryKey): boolean;
@@ -1,30 +1,19 @@
1
- import { type DefaultError } from "@tanstack/react-query";
2
1
  import { Mutation } from "../mutation/Mutation";
3
- import { type QueryClient } from "../../createClient";
2
+ import { type QueryClient } from "../../QueryClient";
4
3
  import { type MutationFilters } from "../types";
5
- import { BehaviorSubject } from "rxjs";
6
4
  import { type MutationCacheConfig, type MutationCacheNotifyEvent } from "./types";
7
5
  import { type MutationOptions, type MutationState } from "../mutation/types";
6
+ import { type DefaultError } from "../../types";
8
7
  export declare class MutationCache {
8
+ #private;
9
9
  config: MutationCacheConfig;
10
- protected readonly mutationsSubject: BehaviorSubject<Mutation<any, any, any, any>[]>;
11
- protected mutations$: import("rxjs").Observable<Mutation<any, any, any, any>[]>;
12
- protected added$: import("rxjs").Observable<Mutation<any, any, any, any>>;
13
- protected removed$: import("rxjs").Observable<Mutation<any, any, any, any>>;
14
- protected stateChange$: import("rxjs").Observable<Mutation<any, any, any, any>>;
15
10
  constructor(config?: MutationCacheConfig);
16
11
  build<TData, TError, TVariables, TContext>(client: QueryClient, options: MutationOptions<TData, TError, TVariables, TContext>, state?: MutationState<TData, TError, TVariables, TContext>): Mutation<TData, TError, TVariables, TContext>;
17
12
  getAll(): Mutation<any, any, any, any>[];
18
13
  remove(mutationToRemove: Mutation<any, any, any, any>): void;
19
14
  find<TData = unknown, TError = DefaultError, TVariables = any, TContext = unknown>(filters: MutationFilters<TData, TError, TVariables, TContext>): Mutation<TData, TError, TVariables, TContext> | undefined;
20
- findAll(filters?: MutationFilters): Array<Mutation<any, any, any, any>>;
21
- observe<TData, MutationStateSelected = MutationState<TData>>({ filters, select }?: {
22
- filters?: MutationFilters<TData>;
23
- select?: (mutation: Mutation<TData>) => MutationStateSelected;
24
- }): {
25
- value$: import("rxjs").Observable<MutationStateSelected[]>;
26
- lastValue: MutationStateSelected[];
27
- };
15
+ findAll<TData = unknown, TError = Error, TVariables = any, TContext = unknown>(filters?: MutationFilters<TData, TError, TVariables, TContext>): Array<Mutation<any, any, any, any>>;
16
+ observe(): import("rxjs").Observable<Mutation<any, any, any, any>>;
28
17
  /**
29
18
  * @important
30
19
  * ISO api react-query
@@ -1,4 +1,4 @@
1
- import { Subject, type Observable, BehaviorSubject } from "rxjs";
1
+ import { type Observable } from "rxjs";
2
2
  import { type DefaultError } from "../../types";
3
3
  import { type MutationCache } from "../cache/MutationCache";
4
4
  import { type MutationState, type MutationMeta, type MutationOptions } from "./types";
@@ -9,20 +9,15 @@ interface MutationConfig<TData, TError, TVariables, TContext> {
9
9
  state?: MutationState<TData, TError, TVariables, TContext>;
10
10
  }
11
11
  export declare class Mutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> {
12
- protected mutationCache: MutationCache;
13
- protected observerCount: BehaviorSubject<number>;
14
- protected destroySubject: Subject<void>;
15
- protected resetSubject: Subject<void>;
16
- protected executeSubject: Subject<TVariables>;
12
+ #private;
17
13
  state: MutationState<TData, TError, TVariables, TContext>;
18
14
  state$: Observable<typeof this.state>;
19
15
  options: MutationOptions<TData, TError, TVariables, TContext>;
20
16
  observerCount$: Observable<number>;
21
- destroyed$: Observable<void>;
17
+ cancelled$: Observable<void>;
22
18
  constructor({ options, mutationCache, state }: MutationConfig<TData, TError, TVariables, TContext>);
23
19
  get meta(): MutationMeta | undefined;
24
20
  setOptions(options?: MutationOptions<TData, TError, TVariables, TContext>): void;
25
- observeTillFinished(): Observable<MutationState<TData, TError, TVariables, TContext>>;
26
21
  /**
27
22
  * @important
28
23
  * The resulting observable will complete as soon as the mutation
@@ -30,7 +25,6 @@ export declare class Mutation<TData = unknown, TError = DefaultError, TVariables
30
25
  */
31
26
  execute(variables: TVariables): Observable<MutationState<TData, TError, TVariables, TContext>>;
32
27
  continue(): Observable<MutationState<TData, TError, TVariables, TContext>>;
33
- destroy(): void;
34
- reset(): void;
28
+ cancel(): void;
35
29
  }
36
30
  export {};
@@ -0,0 +1,4 @@
1
+ import { type Observable } from "rxjs";
2
+ export declare const delayWhenNetworkOnline: <T extends {
3
+ isPaused?: boolean | undefined;
4
+ }>() => (source: Observable<T>) => Observable<T>;
@@ -0,0 +1,3 @@
1
+ import { type Observable } from "rxjs";
2
+ import { type MutationState } from "./types";
3
+ export declare const observeUntilFinished: <T extends MutationState<any, any, any, any>>(source: Observable<T>) => Observable<T>;
@@ -1,5 +1,5 @@
1
1
  import { type Observable, type MonoTypeOperatorFunction } from "rxjs";
2
- import { type DefaultError, type Query, type QueryResult, type Register } from "../../types";
2
+ import { type DefaultError, type DeprecatedQuery, type QueryResult, type Register } from "../../types";
3
3
  import { type MapOperator, type MutationFn, type MutationKey } from "../types";
4
4
  export type MutationStatus = "idle" | "pending" | "success" | "error";
5
5
  export interface MutationState<TData = unknown, TError = unknown, TVariables = void, TContext = unknown> {
@@ -15,8 +15,9 @@ export interface MutationState<TData = unknown, TError = unknown, TVariables = v
15
15
  }
16
16
  export type MutationMeta = Register extends {
17
17
  mutationMeta: infer TMutationMeta;
18
- } ? TMutationMeta : Record<string, unknown>;
18
+ } ? TMutationMeta extends Record<string, unknown> ? TMutationMeta : Record<string, unknown> : Record<string, unknown>;
19
19
  export interface MutationOptions<TData, TError = DefaultError, TVariables = void, TContext = unknown> {
20
+ networkMode?: "offlineFirst";
20
21
  enabled?: boolean;
21
22
  retry?: false | number | ((attempt: number, error: unknown) => boolean);
22
23
  retryDelay?: number | ((failureCount: number, error: TError) => number);
@@ -36,7 +37,7 @@ export interface MutationOptions<TData, TError = DefaultError, TVariables = void
36
37
  * interval is paused until the query finish fetching. This avoid infinite
37
38
  * loop of refetch
38
39
  */
39
- refetchInterval?: number | false | ((data: QueryResult<TData>["data"] | undefined, query: Query) => number | false);
40
+ refetchInterval?: number | false | ((data: QueryResult<TData>["data"] | undefined, query: DeprecatedQuery) => number | false);
40
41
  terminateOnFirstResult?: boolean;
41
42
  onMutate?: (variables: TVariables) => Promise<TContext | undefined> | Observable<TContext | undefined> | TContext | undefined;
42
43
  onError?: (error: TError, variables: TVariables, context: TContext | undefined) => Promise<unknown> | unknown;
@@ -0,0 +1,6 @@
1
+ import { type Observable } from "rxjs";
2
+ export declare const waitForNetworkOnError: <T extends {
3
+ failureCount?: number | undefined;
4
+ failureReason?: any;
5
+ isPaused?: boolean | undefined;
6
+ }>(source: Observable<T>) => Observable<T>;
@@ -1,6 +1,6 @@
1
1
  import { type Observable } from "rxjs";
2
2
  import { type MutateOptions } from "../types";
3
- import { type QueryClient } from "../../createClient";
3
+ import { type QueryClient } from "../../QueryClient";
4
4
  import { type DefaultError } from "../../types";
5
5
  import { type MutationObserverOptions, type MutationObserverResult } from "./types";
6
6
  import { MutationRunner } from "../runner/MutationRunner";
@@ -13,8 +13,6 @@ export declare class MutationObserver<TData = unknown, TError = DefaultError, TV
13
13
  #private;
14
14
  protected client: QueryClient;
15
15
  protected options: MutationObserverOptions<TData, TError, TVariables, TContext>;
16
- protected numberOfObservers: number;
17
- protected mutationRunner: MutationRunner<any, any, any, TContext>;
18
16
  /**
19
17
  * @important
20
18
  * Used to maintain persistance to latest mutation. This ensure
@@ -22,10 +20,6 @@ export declare class MutationObserver<TData = unknown, TError = DefaultError, TV
22
20
  * - mutation mutate options are run on finish
23
21
  */
24
22
  readonly observed$: Observable<never>;
25
- readonly result$: Observable<{
26
- state: MutationObserverResult<TData, TError, TVariables, TContext>;
27
- options: MutateOptions<TData, TError, TVariables, TContext> | undefined;
28
- }>;
29
23
  constructor(client: QueryClient, options?: MutationObserverOptions<TData, TError, TVariables, TContext>, mutationRunner?: MutationRunner<any, any, any, TContext>);
30
24
  setOptions(options: MutationObserverOptions<TData, TError, TVariables, TContext>): void;
31
25
  protected getObserverResultFromState: (state: MutationState<any, any, any, any>) => MutationObserverResult<TData, TError, TVariables, TContext>;
@@ -1,15 +1,17 @@
1
- import { type ObservedValueOf, Subject, type Observable } from "rxjs";
1
+ import { type Observable } from "rxjs";
2
2
  import { type DefaultError } from "../../types";
3
3
  import { type MutationObserverOptions } from "../observers/types";
4
4
  import { type Mutation } from "../mutation/Mutation";
5
5
  import { type MutationOptions, type MutationState } from "../mutation/types";
6
+ interface TriggerSubject<TData, TError = DefaultError, TVariables = void, TContext = unknown> {
7
+ args: TVariables;
8
+ options: MutationOptions<TData, TError, TVariables, TContext>;
9
+ mutation: Mutation<TData, TError, TVariables, TContext>;
10
+ }
6
11
  export declare class MutationRunner<TData, TError = DefaultError, TVariables = void, TContext = unknown> {
7
- protected trigger$: Subject<{
8
- args: TVariables;
9
- options: MutationOptions<TData, TError, TVariables, TContext>;
10
- mutation: Mutation<TData, TError, TVariables, TContext>;
11
- }>;
12
+ #private;
12
13
  state$: Observable<MutationState<TData, TError, TVariables, TContext>>;
13
14
  constructor({ __queryFinalizeHook }?: MutationObserverOptions<TData, TError, TVariables, TContext>);
14
- trigger({ args, options, mutation }: ObservedValueOf<typeof this.trigger$>): void;
15
+ trigger({ args, options, mutation }: TriggerSubject<TData, TError, TVariables, TContext>): void;
15
16
  }
17
+ export {};
@@ -0,0 +1,10 @@
1
+ import { BehaviorSubject } from "rxjs";
2
+ export declare class OnlineManager {
3
+ protected isOnlineSubject: BehaviorSubject<boolean>;
4
+ readonly online$: import("rxjs").Observable<boolean>;
5
+ readonly backToOnline$: import("rxjs").Observable<boolean>;
6
+ constructor();
7
+ isOnline(): boolean;
8
+ setOnline(online: boolean): void;
9
+ }
10
+ export declare const onlineManager: OnlineManager;
@@ -0,0 +1,33 @@
1
+ import { type DefaultError } from "../../types";
2
+ import { type QueryKey } from "../../keys/types";
3
+ import { Query } from "../query/Query";
4
+ import { type QueryOptions, type QueryFilters } from "../types";
5
+ import { type QueryClient } from "../../QueryClient";
6
+ import { type QueryState } from "../query/types";
7
+ import { type WithRequired } from "../../../../utils/types";
8
+ import { type QueryCacheConfig, type QueryCacheListener } from "./types";
9
+ export interface QueryStore {
10
+ has: (queryHash: string) => boolean;
11
+ set: (queryHash: string, query: Query) => void;
12
+ get: (queryHash: string) => Query | undefined;
13
+ delete: (queryHash: string) => void;
14
+ values: () => IterableIterator<Query>;
15
+ }
16
+ export declare class QueryCache {
17
+ #private;
18
+ config: QueryCacheConfig;
19
+ constructor(config?: QueryCacheConfig);
20
+ mount(): void;
21
+ unmount(): void;
22
+ notify(event: Parameters<QueryCacheListener>[0]): void;
23
+ observeIsFetching(filters?: QueryFilters): import("rxjs").Observable<number>;
24
+ getAll(): Query[];
25
+ findAll(filters?: QueryFilters): Query[];
26
+ build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(client: QueryClient, options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>, state?: QueryState<TData, TError>): Query<TQueryFnData, TError, TData, TQueryKey>;
27
+ add(query: Query<any, any, any, any>): void;
28
+ get<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryHash: string): Query<TQueryFnData, TError, TData, TQueryKey> | undefined;
29
+ find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(filters: WithRequired<QueryFilters, "queryKey">): Query<TQueryFnData, TError, TData> | undefined;
30
+ subscribe(fn: QueryCacheListener): () => void;
31
+ remove(query: Query<any, any, any, any>): void;
32
+ clear(): void;
33
+ }
@@ -0,0 +1,45 @@
1
+ import { type NotifyEvent } from "../../mutations/cache/types";
2
+ import { type DefaultError } from "../../types";
3
+ import { type QueryObserver } from "../observer/QueryObserver";
4
+ import { type Query } from "../query/Query";
5
+ import { type Action } from "../query/types";
6
+ export interface QueryCacheConfig {
7
+ onError?: (error: DefaultError, query: Query<unknown, unknown, unknown>) => void;
8
+ onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void;
9
+ onSettled?: (data: unknown | undefined, error: DefaultError | null, query: Query<unknown, unknown, unknown>) => void;
10
+ }
11
+ interface NotifyEventQueryAdded extends NotifyEvent {
12
+ type: "added";
13
+ query: Query<any, any, any, any>;
14
+ }
15
+ interface NotifyEventQueryRemoved extends NotifyEvent {
16
+ type: "removed";
17
+ query: Query<any, any, any, any>;
18
+ }
19
+ interface NotifyEventQueryUpdated extends NotifyEvent {
20
+ type: "updated";
21
+ query: Query<any, any, any, any>;
22
+ action: Action<any, any>;
23
+ }
24
+ interface NotifyEventQueryObserverAdded extends NotifyEvent {
25
+ type: "observerAdded";
26
+ query: Query<any, any, any, any>;
27
+ observer: QueryObserver<any, any, any, any, any>;
28
+ }
29
+ interface NotifyEventQueryObserverRemoved extends NotifyEvent {
30
+ type: "observerRemoved";
31
+ query: Query<any, any, any, any>;
32
+ observer: QueryObserver<any, any, any, any, any>;
33
+ }
34
+ interface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {
35
+ type: "observerResultsUpdated";
36
+ query: Query<any, any, any, any>;
37
+ }
38
+ interface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {
39
+ type: "observerOptionsUpdated";
40
+ query: Query<any, any, any, any>;
41
+ observer: QueryObserver<any, any, any, any, any>;
42
+ }
43
+ export type QueryCacheNotifyEvent = NotifyEventQueryAdded | NotifyEventQueryRemoved | NotifyEventQueryUpdated | NotifyEventQueryObserverAdded | NotifyEventQueryObserverRemoved | NotifyEventQueryObserverResultsUpdated | NotifyEventQueryObserverOptionsUpdated;
44
+ export type QueryCacheListener = (event: QueryCacheNotifyEvent) => void;
45
+ export {};
@@ -0,0 +1,65 @@
1
+ import { type Observable, Subject } from "rxjs";
2
+ import { type QueryClient } from "../../QueryClient";
3
+ import { type QueryKey } from "../../keys/types";
4
+ import { type DefaultError } from "../../types";
5
+ import { type Query } from "../query/Query";
6
+ import { type FetchOptions } from "../query/types";
7
+ import { type RefetchOptions } from "../types";
8
+ import { type QueryObserverResult, type QueryObserverOptions, type DefaultedQueryObserverOptions, type QueryObserverListener } from "./types";
9
+ export interface ObserverFetchOptions extends FetchOptions {
10
+ throwOnError?: boolean;
11
+ }
12
+ export interface NotifyOptions {
13
+ listeners?: boolean;
14
+ }
15
+ interface LastResult<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey = QueryKey> {
16
+ state: Query<TQueryFnData, TError, TQueryData, TQueryKey>["state"];
17
+ result: QueryObserverResult<TData, TError>;
18
+ options: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>;
19
+ selectResult?: TData;
20
+ selectError?: null | TError;
21
+ select?: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>["select"] | null;
22
+ }
23
+ export declare class QueryObserver<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> {
24
+ #private;
25
+ options: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>;
26
+ /**
27
+ * Used to subscribe to changes in either query or options (or both).
28
+ * We need to be able to track change to both of them at the same time
29
+ * in order to react accordingly and in order (such as refetch on options change)
30
+ */
31
+ readonly queryUpdateSubject: Subject<{
32
+ options: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>;
33
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>;
34
+ }>;
35
+ constructor(client: QueryClient, options: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>);
36
+ protected bindMethods(): void;
37
+ setOptions(options?: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>): Query<TQueryFnData, TError, TQueryData, TQueryKey>;
38
+ protected buildQuery(options: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>): Query<TQueryFnData, TError, TQueryData, TQueryKey>;
39
+ protected getObserverResultFromQuery: ({ options, query, optimisticResult, prevResult: { result: prevResult, options: prevResultOptions, state: prevResultState, select: prevSelect, selectError: prevSelectError, selectResult: prevSelectResult } }: {
40
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>;
41
+ options: QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>;
42
+ optimisticResult?: boolean | undefined;
43
+ prevResult: Partial<LastResult<TQueryFnData, TError, TData, TQueryData, TQueryKey>>;
44
+ }) => {
45
+ result: QueryObserverResult<TData, TError>;
46
+ selectError: TError | null | undefined;
47
+ select: ((data: TQueryData) => TData) | null;
48
+ selectResult: TData | undefined;
49
+ };
50
+ getCurrentResult(): QueryObserverResult<TData, TError>;
51
+ getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey>;
52
+ getOptimisticResult(options: DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>): QueryObserverResult<TData, TError>;
53
+ protected updateResult({ query, result, selectError, select, selectResult }: Pick<LastResult<TQueryFnData, TError, TData, TQueryData, TQueryKey>, "select" | "selectError" | "result" | "selectResult"> & {
54
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>;
55
+ }): void;
56
+ refetch({ ...options }?: RefetchOptions): Promise<QueryObserverResult<TData, TError>>;
57
+ protected fetch(fetchOptions?: ObserverFetchOptions): Promise<QueryObserverResult<TData, TError>>;
58
+ /**
59
+ * feature parity with rq, not used internally
60
+ */
61
+ subscribe(listener: QueryObserverListener<TData, TError>): () => void;
62
+ observe(): Observable<QueryObserverResult<TData, TError>>;
63
+ destroy(): void;
64
+ }
65
+ export {};
@@ -0,0 +1,9 @@
1
+ import { type Query } from "../query/Query";
2
+ import { type NetworkMode } from "../types";
3
+ import { type QueryObserverOptions } from "./types";
4
+ export declare function isStale(query: Query<any, any, any, any>, options: QueryObserverOptions<any, any, any, any, any>): boolean;
5
+ export declare function shouldFetchOnMount(query: Query<any, any, any, any>, options: QueryObserverOptions<any, any, any, any, any>): boolean;
6
+ export declare function shouldFetchOptionally(query: Query<any, any, any, any>, prevQuery: Query<any, any, any, any>, options: QueryObserverOptions<any, any, any, any, any>, prevOptions: QueryObserverOptions<any, any, any, any, any>): boolean;
7
+ export declare function shouldFetchOnWindowFocus(query: Query<any, any, any, any>, options: QueryObserverOptions<any, any, any, any, any>): boolean;
8
+ export declare function shouldFetchOn(query: Query<any, any, any, any>, options: QueryObserverOptions<any, any, any, any, any>, field: (typeof options)["refetchOnMount"] & (typeof options)["refetchOnWindowFocus"] & (typeof options)["refetchOnReconnect"]): boolean;
9
+ export declare function canFetch(networkMode: NetworkMode | undefined): boolean;