Socket
Socket
Sign inDemoInstall

@tanstack/query-core

Package Overview
Dependencies
Maintainers
2
Versions
266
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tanstack/query-core - npm Package Compare versions

Comparing version 5.29.0 to 5.31.0

build/legacy/types-5uTf3z3y.d.cts

3

build/legacy/hydration.d.ts

@@ -1,2 +0,2 @@

import { p as Mutation, o as Query, K as QueryOptions, ax as MutationOptions, b as QueryClient, at as MutationKey, q as MutationState, av as MutationMeta, t as QueryKey, n as QueryState, F as QueryMeta } from './queryClient-K0zFyarY.js';
import { p as Mutation, o as Query, K as QueryOptions, ay as MutationOptions, b as QueryClient, at as MutationKey, q as MutationState, aw as MutationMeta, av as MutationScope, t as QueryKey, n as QueryState, F as QueryMeta } from './types-EkjjZlVm.js';
import './removable.js';

@@ -19,2 +19,3 @@ import './subscribable.js';

meta?: MutationMeta;
scope?: MutationScope;
}

@@ -21,0 +22,0 @@ interface DehydratedQuery {

@@ -8,2 +8,3 @@ import "./chunk-2HYBKCYP.js";

state: mutation.state,
...mutation.options.scope && { scope: mutation.options.scope },
...mutation.meta && { meta: mutation.meta }

@@ -43,3 +44,3 @@ };

const queries = dehydratedState.queries || [];
mutations.forEach((dehydratedMutation) => {
mutations.forEach(({ state, ...mutationOptions }) => {
var _a;

@@ -50,6 +51,5 @@ mutationCache.build(

...(_a = options == null ? void 0 : options.defaultOptions) == null ? void 0 : _a.mutations,
mutationKey: dehydratedMutation.mutationKey,
meta: dehydratedMutation.meta
...mutationOptions
},
dehydratedMutation.state
state
);

@@ -56,0 +56,0 @@ });

@@ -1,2 +0,2 @@

export { aJ as CancelOptions, C as CancelledError, v as DataTag, D as DefaultError, aI as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aA as MutateFunction, az as MutateOptions, p as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, g as MutationFilters, aw as MutationFunction, at as MutationKey, av as MutationMeta, e as MutationObserver, aB as MutationObserverBaseResult, aE as MutationObserverErrorResult, aC as MutationObserverIdleResult, aD as MutationObserverLoadingResult, ay as MutationObserverOptions, aG as MutationObserverResult, aF as MutationObserverSuccessResult, ax as MutationOptions, q as MutationState, au as MutationStatus, H as NetworkMode, N as NoInfer, aM as NotifyEvent, aL as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, o as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, aH as QueryClientConfig, j as QueryFilters, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, c as QueryObserver, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, n as QueryState, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aK as SetDataOptions, S as SkipToken, V as ThrowOnError, U as Updater, X as WithRequired, u as dataTagSymbol, h as hashKey, l as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, r as replaceEqualDeep, s as skipToken } from './queryClient-K0zFyarY.js';
export { aK as CancelOptions, C as CancelledError, v as DataTag, D as DefaultError, aJ as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aB as MutateFunction, aA as MutateOptions, p as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, g as MutationFilters, ax as MutationFunction, at as MutationKey, aw as MutationMeta, e as MutationObserver, aC as MutationObserverBaseResult, aF as MutationObserverErrorResult, aD as MutationObserverIdleResult, aE as MutationObserverLoadingResult, az as MutationObserverOptions, aH as MutationObserverResult, aG as MutationObserverSuccessResult, ay as MutationOptions, av as MutationScope, q as MutationState, au as MutationStatus, H as NetworkMode, N as NoInfer, aN as NotifyEvent, aM as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, o as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, aI as QueryClientConfig, j as QueryFilters, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, c as QueryObserver, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, n as QueryState, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aL as SetDataOptions, S as SkipToken, V as ThrowOnError, U as Updater, X as WithRequired, u as dataTagSymbol, h as hashKey, l as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, r as replaceEqualDeep, s as skipToken } from './types-EkjjZlVm.js';
export { QueriesObserver, QueriesObserverOptions } from './queriesObserver.js';

@@ -3,0 +3,0 @@ export { InfiniteQueryObserver } from './infiniteQueryObserver.js';

@@ -1,2 +0,2 @@

import { aN as QueryBehavior, E as InfiniteData, T as InfiniteQueryPageParamsOptions } from './queryClient-K0zFyarY.js';
import { aO as QueryBehavior, E as InfiniteData, T as InfiniteQueryPageParamsOptions } from './types-EkjjZlVm.js';
import './removable.js';

@@ -3,0 +3,0 @@ import './subscribable.js';

@@ -1,2 +0,2 @@

import { D as DefaultError, E as InfiniteData, t as QueryKey, c as QueryObserver, as as InfiniteQueryObserverResult, aO as ObserverFetchOptions, b as QueryClient, _ as InfiniteQueryObserverOptions, aP as NotifyOptions, $ as DefaultedInfiniteQueryObserverOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, o as Query } from './queryClient-K0zFyarY.js';
import { D as DefaultError, E as InfiniteData, t as QueryKey, c as QueryObserver, as as InfiniteQueryObserverResult, aP as ObserverFetchOptions, b as QueryClient, _ as InfiniteQueryObserverOptions, aQ as NotifyOptions, $ as DefaultedInfiniteQueryObserverOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, o as Query } from './types-EkjjZlVm.js';
import './removable.js';

@@ -3,0 +3,0 @@ import './subscribable.js';

import './removable.js';
export { b2 as Action, p as Mutation, q as MutationState, b3 as getDefaultState } from './queryClient-K0zFyarY.js';
export { bb as Action, p as Mutation, q as MutationState, bc as getDefaultState } from './types-EkjjZlVm.js';
import './subscribable.js';

@@ -11,4 +11,4 @@ import {

import { Removable } from "./removable.js";
import { canFetch, createRetryer } from "./retryer.js";
var _observers, _defaultOptions, _mutationCache, _retryer, _dispatch, dispatch_fn;
import { createRetryer } from "./retryer.js";
var _observers, _mutationCache, _retryer, _dispatch, dispatch_fn;
var Mutation = class extends Removable {

@@ -19,7 +19,5 @@ constructor(config) {

__privateAdd(this, _observers, void 0);
__privateAdd(this, _defaultOptions, void 0);
__privateAdd(this, _mutationCache, void 0);
__privateAdd(this, _retryer, void 0);
this.mutationId = config.mutationId;
__privateSet(this, _defaultOptions, config.defaultOptions);
__privateSet(this, _mutationCache, config.mutationCache);

@@ -32,3 +30,3 @@ __privateSet(this, _observers, []);

setOptions(options) {
this.options = { ...__privateGet(this, _defaultOptions), ...options };
this.options = options;
this.updateGcTime(this.options.gcTime);

@@ -75,29 +73,28 @@ }

var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
const executeMutation = () => {
__privateSet(this, _retryer, createRetryer({
fn: () => {
if (!this.options.mutationFn) {
return Promise.reject(new Error("No mutationFn found"));
}
return this.options.mutationFn(variables);
},
onFail: (failureCount, error) => {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "failed", failureCount, error });
},
onPause: () => {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "pause" });
},
onContinue: () => {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "continue" });
},
retry: this.options.retry ?? 0,
retryDelay: this.options.retryDelay,
networkMode: this.options.networkMode
}));
return __privateGet(this, _retryer).promise;
};
__privateSet(this, _retryer, createRetryer({
fn: () => {
if (!this.options.mutationFn) {
return Promise.reject(new Error("No mutationFn found"));
}
return this.options.mutationFn(variables);
},
onFail: (failureCount, error) => {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "failed", failureCount, error });
},
onPause: () => {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "pause" });
},
onContinue: () => {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "continue" });
},
retry: this.options.retry ?? 0,
retryDelay: this.options.retryDelay,
networkMode: this.options.networkMode,
canRun: () => __privateGet(this, _mutationCache).canRun(this)
}));
const restored = this.state.status === "pending";
const isPaused = !__privateGet(this, _retryer).canStart();
try {
if (!restored) {
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "pending", variables });
__privateMethod(this, _dispatch, dispatch_fn).call(this, { type: "pending", variables, isPaused });
await ((_b = (_a = __privateGet(this, _mutationCache).config).onMutate) == null ? void 0 : _b.call(

@@ -113,7 +110,8 @@ _a,

context,
variables
variables,
isPaused
});
}
}
const data = await executeMutation();
const data = await __privateGet(this, _retryer).start();
await ((_f = (_e = __privateGet(this, _mutationCache).config).onSuccess) == null ? void 0 : _f.call(

@@ -172,2 +170,4 @@ _e,

}
} finally {
__privateGet(this, _mutationCache).runNext(this);
}

@@ -177,3 +177,2 @@ }

_observers = new WeakMap();
_defaultOptions = new WeakMap();
_mutationCache = new WeakMap();

@@ -209,3 +208,3 @@ _retryer = new WeakMap();

error: null,
isPaused: !canFetch(this.options.networkMode),
isPaused: action.isPaused,
status: "pending",

@@ -212,0 +211,0 @@ variables: action.variables,

@@ -1,3 +0,3 @@

export { M as MutationCache, d as MutationCacheNotifyEvent } from './queryClient-K0zFyarY.js';
export { M as MutationCache, d as MutationCacheNotifyEvent } from './types-EkjjZlVm.js';
import './subscribable.js';
import './removable.js';

@@ -13,3 +13,3 @@ import {

import { Subscribable } from "./subscribable.js";
var _mutations, _mutationId, _resuming;
var _mutations, _mutationId;
var MutationCache = class extends Subscribable {

@@ -21,5 +21,4 @@ constructor(config = {}) {

__privateAdd(this, _mutationId, void 0);
__privateAdd(this, _resuming, void 0);
__privateSet(this, _mutations, []);
__privateSet(this, _mutationId, 0);
__privateSet(this, _mutations, /* @__PURE__ */ new Map());
__privateSet(this, _mutationId, Date.now());
}

@@ -37,12 +36,36 @@ build(client, options, state) {

add(mutation) {
__privateGet(this, _mutations).push(mutation);
const scope = scopeFor(mutation);
const mutations = __privateGet(this, _mutations).get(scope) ?? [];
mutations.push(mutation);
__privateGet(this, _mutations).set(scope, mutations);
this.notify({ type: "added", mutation });
}
remove(mutation) {
__privateSet(this, _mutations, __privateGet(this, _mutations).filter((x) => x !== mutation));
var _a;
const scope = scopeFor(mutation);
if (__privateGet(this, _mutations).has(scope)) {
const mutations = (_a = __privateGet(this, _mutations).get(scope)) == null ? void 0 : _a.filter((x) => x !== mutation);
if (mutations) {
if (mutations.length === 0) {
__privateGet(this, _mutations).delete(scope);
} else {
__privateGet(this, _mutations).set(scope, mutations);
}
}
}
this.notify({ type: "removed", mutation });
}
canRun(mutation) {
var _a;
const firstPendingMutation = (_a = __privateGet(this, _mutations).get(scopeFor(mutation))) == null ? void 0 : _a.find((m) => m.state.status === "pending");
return !firstPendingMutation || firstPendingMutation === mutation;
}
runNext(mutation) {
var _a;
const foundMutation = (_a = __privateGet(this, _mutations).get(scopeFor(mutation))) == null ? void 0 : _a.find((m) => m !== mutation && m.state.isPaused);
return (foundMutation == null ? void 0 : foundMutation.continue()) ?? Promise.resolve();
}
clear() {
notifyManager.batch(() => {
__privateGet(this, _mutations).forEach((mutation) => {
this.getAll().forEach((mutation) => {
this.remove(mutation);

@@ -53,7 +76,7 @@ });

getAll() {
return __privateGet(this, _mutations);
return [...__privateGet(this, _mutations).values()].flat();
}
find(filters) {
const defaultedFilters = { exact: true, ...filters };
return __privateGet(this, _mutations).find(
return this.getAll().find(
(mutation) => matchMutation(defaultedFilters, mutation)

@@ -63,5 +86,3 @@ );

findAll(filters = {}) {
return __privateGet(this, _mutations).filter(
(mutation) => matchMutation(filters, mutation)
);
return this.getAll().filter((mutation) => matchMutation(filters, mutation));
}

@@ -76,14 +97,8 @@ notify(event) {

resumePausedMutations() {
__privateSet(this, _resuming, (__privateGet(this, _resuming) ?? Promise.resolve()).then(() => {
const pausedMutations = __privateGet(this, _mutations).filter((x) => x.state.isPaused);
return notifyManager.batch(
() => pausedMutations.reduce(
(promise, mutation) => promise.then(() => mutation.continue().catch(noop)),
Promise.resolve()
)
);
}).then(() => {
__privateSet(this, _resuming, void 0);
}));
return __privateGet(this, _resuming);
const pausedMutations = this.getAll().filter((x) => x.state.isPaused);
return notifyManager.batch(
() => Promise.all(
pausedMutations.map((mutation) => mutation.continue().catch(noop))
)
);
}

@@ -93,3 +108,6 @@ };

_mutationId = new WeakMap();
_resuming = new WeakMap();
function scopeFor(mutation) {
var _a;
return ((_a = mutation.options.scope) == null ? void 0 : _a.id) ?? String(mutation.mutationId);
}
export {

@@ -96,0 +114,0 @@ MutationCache

import './subscribable.js';
export { e as MutationObserver } from './queryClient-K0zFyarY.js';
export { e as MutationObserver } from './types-EkjjZlVm.js';
import './removable.js';

@@ -1,2 +0,2 @@

import { ak as QueryObserverResult, b as QueryClient, W as QueryObserverOptions, aP as NotifyOptions, o as Query, t as QueryKey, c as QueryObserver } from './queryClient-K0zFyarY.js';
import { ak as QueryObserverResult, b as QueryClient, W as QueryObserverOptions, aQ as NotifyOptions, o as Query, t as QueryKey, c as QueryObserver } from './types-EkjjZlVm.js';
import { Subscribable } from './subscribable.js';

@@ -3,0 +3,0 @@ import './removable.js';

import './removable.js';
export { bd as Action, b9 as FetchContext, ba as FetchDirection, bb as FetchMeta, bc as FetchOptions, o as Query, aN as QueryBehavior, n as QueryState, be as SetStateOptions, bf as fetchState } from './queryClient-K0zFyarY.js';
export { aV as Action, aR as FetchContext, aS as FetchDirection, aT as FetchMeta, aU as FetchOptions, o as Query, aO as QueryBehavior, n as QueryState, aW as SetStateOptions, aX as fetchState } from './types-EkjjZlVm.js';
import './subscribable.js';

@@ -287,5 +287,6 @@ import {

retryDelay: context.options.retryDelay,
networkMode: context.options.networkMode
networkMode: context.options.networkMode,
canRun: () => true
}));
return __privateGet(this, _retryer).promise;
return __privateGet(this, _retryer).start();
}

@@ -292,0 +293,0 @@ };

@@ -1,3 +0,3 @@

export { Q as QueryCache, a as QueryCacheNotifyEvent, bg as QueryStore } from './queryClient-K0zFyarY.js';
export { Q as QueryCache, a as QueryCacheNotifyEvent, ba as QueryStore } from './types-EkjjZlVm.js';
import './subscribable.js';
import './removable.js';

@@ -1,3 +0,3 @@

export { b as QueryClient } from './queryClient-K0zFyarY.js';
export { b as QueryClient } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';
import './subscribable.js';
export { aP as NotifyOptions, aO as ObserverFetchOptions, c as QueryObserver } from './queryClient-K0zFyarY.js';
export { aQ as NotifyOptions, aP as ObserverFetchOptions, c as QueryObserver } from './types-EkjjZlVm.js';
import './removable.js';

@@ -1,3 +0,3 @@

export { C as CancelledError, b6 as RetryDelayValue, b5 as RetryValue, b4 as Retryer, b7 as canFetch, b8 as createRetryer, l as isCancelledError } from './queryClient-K0zFyarY.js';
export { C as CancelledError, bf as RetryDelayValue, be as RetryValue, bd as Retryer, bg as canFetch, bh as createRetryer, l as isCancelledError } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';

@@ -46,3 +46,4 @@ import "./chunk-2HYBKCYP.js";

};
const shouldPause = () => !focusManager.isFocused() || config.networkMode !== "always" && !onlineManager.isOnline();
const canContinue = () => focusManager.isFocused() && (config.networkMode === "always" || onlineManager.isOnline()) && config.canRun();
const canStart = () => canFetch(config.networkMode) && config.canRun();
const resolve = (value) => {

@@ -70,7 +71,5 @@ var _a;

continueFn = (value) => {
const canContinue = isResolved || !shouldPause();
if (canContinue) {
if (isResolved || canContinue()) {
continueResolve(value);
}
return canContinue;
};

@@ -112,6 +111,3 @@ (_a = config.onPause) == null ? void 0 : _a.call(config);

sleep(delay).then(() => {
if (shouldPause()) {
return pause();
}
return;
return canContinue() ? void 0 : pause();
}).then(() => {

@@ -126,7 +122,2 @@ if (isRetryCancelled) {

};
if (canFetch(config.networkMode)) {
run();
} else {
pause().then(run);
}
return {

@@ -136,7 +127,16 @@ promise,

continue: () => {
const didContinue = continueFn == null ? void 0 : continueFn();
return didContinue ? promise : Promise.resolve();
continueFn == null ? void 0 : continueFn();
return promise;
},
cancelRetry,
continueRetry
continueRetry,
canStart,
start: () => {
if (canStart()) {
run();
} else {
pause().then(run);
}
return promise;
}
};

@@ -143,0 +143,0 @@ }

@@ -1,3 +0,3 @@

export { aJ as CancelOptions, v as DataTag, D as DefaultError, aI as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aA as MutateFunction, az as MutateOptions, aw as MutationFunction, at as MutationKey, av as MutationMeta, aB as MutationObserverBaseResult, aE as MutationObserverErrorResult, aC as MutationObserverIdleResult, aD as MutationObserverLoadingResult, ay as MutationObserverOptions, aG as MutationObserverResult, aF as MutationObserverSuccessResult, ax as MutationOptions, au as MutationStatus, H as NetworkMode, N as NoInfer, aM as NotifyEvent, aL as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, aH as QueryClientConfig, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aK as SetDataOptions, V as ThrowOnError, X as WithRequired, u as dataTagSymbol } from './queryClient-K0zFyarY.js';
export { aK as CancelOptions, v as DataTag, D as DefaultError, aJ as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aB as MutateFunction, aA as MutateOptions, ax as MutationFunction, at as MutationKey, aw as MutationMeta, aC as MutationObserverBaseResult, aF as MutationObserverErrorResult, aD as MutationObserverIdleResult, aE as MutationObserverLoadingResult, az as MutationObserverOptions, aH as MutationObserverResult, aG as MutationObserverSuccessResult, ay as MutationOptions, av as MutationScope, au as MutationStatus, H as NetworkMode, N as NoInfer, aN as NotifyEvent, aM as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, aI as QueryClientConfig, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aL as SetDataOptions, V as ThrowOnError, X as WithRequired, u as dataTagSymbol } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';

@@ -1,3 +0,3 @@

export { g as MutationFilters, j as QueryFilters, aQ as QueryTypeFilter, S as SkipToken, U as Updater, b0 as addToEnd, b1 as addToStart, aS as functionalUpdate, h as hashKey, aV as hashQueryKeyByOptions, aY as isPlainArray, aZ as isPlainObject, i as isServer, aT as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aR as noop, aW as partialMatchKey, a$ as replaceData, r as replaceEqualDeep, aX as shallowEqualObjects, s as skipToken, a_ as sleep, aU as timeUntilStale } from './queryClient-K0zFyarY.js';
export { g as MutationFilters, j as QueryFilters, aY as QueryTypeFilter, S as SkipToken, U as Updater, b8 as addToEnd, b9 as addToStart, a_ as functionalUpdate, h as hashKey, b1 as hashQueryKeyByOptions, b4 as isPlainArray, b5 as isPlainObject, i as isServer, a$ as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aZ as noop, b2 as partialMatchKey, b7 as replaceData, r as replaceEqualDeep, b3 as shallowEqualObjects, s as skipToken, b6 as sleep, b0 as timeUntilStale } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';

@@ -1,2 +0,2 @@

import { p as Mutation, o as Query, K as QueryOptions, ax as MutationOptions, b as QueryClient, at as MutationKey, q as MutationState, av as MutationMeta, t as QueryKey, n as QueryState, F as QueryMeta } from './queryClient-K0zFyarY.js';
import { p as Mutation, o as Query, K as QueryOptions, ay as MutationOptions, b as QueryClient, at as MutationKey, q as MutationState, aw as MutationMeta, av as MutationScope, t as QueryKey, n as QueryState, F as QueryMeta } from './types-EkjjZlVm.js';
import './removable.js';

@@ -19,2 +19,3 @@ import './subscribable.js';

meta?: MutationMeta;
scope?: MutationScope;
}

@@ -21,0 +22,0 @@ interface DehydratedQuery {

@@ -6,2 +6,3 @@ // src/hydration.ts

state: mutation.state,
...mutation.options.scope && { scope: mutation.options.scope },
...mutation.meta && { meta: mutation.meta }

@@ -41,3 +42,3 @@ };

const queries = dehydratedState.queries || [];
mutations.forEach((dehydratedMutation) => {
mutations.forEach(({ state, ...mutationOptions }) => {
mutationCache.build(

@@ -47,6 +48,5 @@ client,

...options?.defaultOptions?.mutations,
mutationKey: dehydratedMutation.mutationKey,
meta: dehydratedMutation.meta
...mutationOptions
},
dehydratedMutation.state
state
);

@@ -53,0 +53,0 @@ });

@@ -1,2 +0,2 @@

export { aJ as CancelOptions, C as CancelledError, v as DataTag, D as DefaultError, aI as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aA as MutateFunction, az as MutateOptions, p as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, g as MutationFilters, aw as MutationFunction, at as MutationKey, av as MutationMeta, e as MutationObserver, aB as MutationObserverBaseResult, aE as MutationObserverErrorResult, aC as MutationObserverIdleResult, aD as MutationObserverLoadingResult, ay as MutationObserverOptions, aG as MutationObserverResult, aF as MutationObserverSuccessResult, ax as MutationOptions, q as MutationState, au as MutationStatus, H as NetworkMode, N as NoInfer, aM as NotifyEvent, aL as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, o as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, aH as QueryClientConfig, j as QueryFilters, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, c as QueryObserver, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, n as QueryState, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aK as SetDataOptions, S as SkipToken, V as ThrowOnError, U as Updater, X as WithRequired, u as dataTagSymbol, h as hashKey, l as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, r as replaceEqualDeep, s as skipToken } from './queryClient-K0zFyarY.js';
export { aK as CancelOptions, C as CancelledError, v as DataTag, D as DefaultError, aJ as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aB as MutateFunction, aA as MutateOptions, p as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, g as MutationFilters, ax as MutationFunction, at as MutationKey, aw as MutationMeta, e as MutationObserver, aC as MutationObserverBaseResult, aF as MutationObserverErrorResult, aD as MutationObserverIdleResult, aE as MutationObserverLoadingResult, az as MutationObserverOptions, aH as MutationObserverResult, aG as MutationObserverSuccessResult, ay as MutationOptions, av as MutationScope, q as MutationState, au as MutationStatus, H as NetworkMode, N as NoInfer, aN as NotifyEvent, aM as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, o as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, aI as QueryClientConfig, j as QueryFilters, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, c as QueryObserver, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, n as QueryState, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aL as SetDataOptions, S as SkipToken, V as ThrowOnError, U as Updater, X as WithRequired, u as dataTagSymbol, h as hashKey, l as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, r as replaceEqualDeep, s as skipToken } from './types-EkjjZlVm.js';
export { QueriesObserver, QueriesObserverOptions } from './queriesObserver.js';

@@ -3,0 +3,0 @@ export { InfiniteQueryObserver } from './infiniteQueryObserver.js';

@@ -1,2 +0,2 @@

import { aN as QueryBehavior, E as InfiniteData, T as InfiniteQueryPageParamsOptions } from './queryClient-K0zFyarY.js';
import { aO as QueryBehavior, E as InfiniteData, T as InfiniteQueryPageParamsOptions } from './types-EkjjZlVm.js';
import './removable.js';

@@ -3,0 +3,0 @@ import './subscribable.js';

@@ -1,2 +0,2 @@

import { D as DefaultError, E as InfiniteData, t as QueryKey, c as QueryObserver, as as InfiniteQueryObserverResult, aO as ObserverFetchOptions, b as QueryClient, _ as InfiniteQueryObserverOptions, aP as NotifyOptions, $ as DefaultedInfiniteQueryObserverOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, o as Query } from './queryClient-K0zFyarY.js';
import { D as DefaultError, E as InfiniteData, t as QueryKey, c as QueryObserver, as as InfiniteQueryObserverResult, aP as ObserverFetchOptions, b as QueryClient, _ as InfiniteQueryObserverOptions, aQ as NotifyOptions, $ as DefaultedInfiniteQueryObserverOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, o as Query } from './types-EkjjZlVm.js';
import './removable.js';

@@ -3,0 +3,0 @@ import './subscribable.js';

import './removable.js';
export { b2 as Action, p as Mutation, q as MutationState, b3 as getDefaultState } from './queryClient-K0zFyarY.js';
export { bb as Action, p as Mutation, q as MutationState, bc as getDefaultState } from './types-EkjjZlVm.js';
import './subscribable.js';
// src/mutation.ts
import { notifyManager } from "./notifyManager.js";
import { Removable } from "./removable.js";
import { canFetch, createRetryer } from "./retryer.js";
import { createRetryer } from "./retryer.js";
var Mutation = class extends Removable {
#observers;
#defaultOptions;
#mutationCache;

@@ -13,3 +12,2 @@ #retryer;

this.mutationId = config.mutationId;
this.#defaultOptions = config.defaultOptions;
this.#mutationCache = config.mutationCache;

@@ -22,3 +20,3 @@ this.#observers = [];

setOptions(options) {
this.options = { ...this.#defaultOptions, ...options };
this.options = options;
this.updateGcTime(this.options.gcTime);

@@ -63,29 +61,28 @@ }

async execute(variables) {
const executeMutation = () => {
this.#retryer = createRetryer({
fn: () => {
if (!this.options.mutationFn) {
return Promise.reject(new Error("No mutationFn found"));
}
return this.options.mutationFn(variables);
},
onFail: (failureCount, error) => {
this.#dispatch({ type: "failed", failureCount, error });
},
onPause: () => {
this.#dispatch({ type: "pause" });
},
onContinue: () => {
this.#dispatch({ type: "continue" });
},
retry: this.options.retry ?? 0,
retryDelay: this.options.retryDelay,
networkMode: this.options.networkMode
});
return this.#retryer.promise;
};
this.#retryer = createRetryer({
fn: () => {
if (!this.options.mutationFn) {
return Promise.reject(new Error("No mutationFn found"));
}
return this.options.mutationFn(variables);
},
onFail: (failureCount, error) => {
this.#dispatch({ type: "failed", failureCount, error });
},
onPause: () => {
this.#dispatch({ type: "pause" });
},
onContinue: () => {
this.#dispatch({ type: "continue" });
},
retry: this.options.retry ?? 0,
retryDelay: this.options.retryDelay,
networkMode: this.options.networkMode,
canRun: () => this.#mutationCache.canRun(this)
});
const restored = this.state.status === "pending";
const isPaused = !this.#retryer.canStart();
try {
if (!restored) {
this.#dispatch({ type: "pending", variables });
this.#dispatch({ type: "pending", variables, isPaused });
await this.#mutationCache.config.onMutate?.(

@@ -100,7 +97,8 @@ variables,

context,
variables
variables,
isPaused
});
}
}
const data = await executeMutation();
const data = await this.#retryer.start();
await this.#mutationCache.config.onSuccess?.(

@@ -153,2 +151,4 @@ data,

}
} finally {
this.#mutationCache.runNext(this);
}

@@ -183,3 +183,3 @@ }

error: null,
isPaused: !canFetch(this.options.networkMode),
isPaused: action.isPaused,
status: "pending",

@@ -186,0 +186,0 @@ variables: action.variables,

@@ -1,3 +0,3 @@

export { M as MutationCache, d as MutationCacheNotifyEvent } from './queryClient-K0zFyarY.js';
export { M as MutationCache, d as MutationCacheNotifyEvent } from './types-EkjjZlVm.js';
import './subscribable.js';
import './removable.js';

@@ -10,8 +10,7 @@ // src/mutationCache.ts

this.config = config;
this.#mutations = [];
this.#mutationId = 0;
this.#mutations = /* @__PURE__ */ new Map();
this.#mutationId = Date.now();
}
#mutations;
#mutationId;
#resuming;
build(client, options, state) {

@@ -28,12 +27,33 @@ const mutation = new Mutation({

add(mutation) {
this.#mutations.push(mutation);
const scope = scopeFor(mutation);
const mutations = this.#mutations.get(scope) ?? [];
mutations.push(mutation);
this.#mutations.set(scope, mutations);
this.notify({ type: "added", mutation });
}
remove(mutation) {
this.#mutations = this.#mutations.filter((x) => x !== mutation);
const scope = scopeFor(mutation);
if (this.#mutations.has(scope)) {
const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);
if (mutations) {
if (mutations.length === 0) {
this.#mutations.delete(scope);
} else {
this.#mutations.set(scope, mutations);
}
}
}
this.notify({ type: "removed", mutation });
}
canRun(mutation) {
const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === "pending");
return !firstPendingMutation || firstPendingMutation === mutation;
}
runNext(mutation) {
const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);
return foundMutation?.continue() ?? Promise.resolve();
}
clear() {
notifyManager.batch(() => {
this.#mutations.forEach((mutation) => {
this.getAll().forEach((mutation) => {
this.remove(mutation);

@@ -44,7 +64,7 @@ });

getAll() {
return this.#mutations;
return [...this.#mutations.values()].flat();
}
find(filters) {
const defaultedFilters = { exact: true, ...filters };
return this.#mutations.find(
return this.getAll().find(
(mutation) => matchMutation(defaultedFilters, mutation)

@@ -54,5 +74,3 @@ );

findAll(filters = {}) {
return this.#mutations.filter(
(mutation) => matchMutation(filters, mutation)
);
return this.getAll().filter((mutation) => matchMutation(filters, mutation));
}

@@ -67,16 +85,13 @@ notify(event) {

resumePausedMutations() {
this.#resuming = (this.#resuming ?? Promise.resolve()).then(() => {
const pausedMutations = this.#mutations.filter((x) => x.state.isPaused);
return notifyManager.batch(
() => pausedMutations.reduce(
(promise, mutation) => promise.then(() => mutation.continue().catch(noop)),
Promise.resolve()
)
);
}).then(() => {
this.#resuming = void 0;
});
return this.#resuming;
const pausedMutations = this.getAll().filter((x) => x.state.isPaused);
return notifyManager.batch(
() => Promise.all(
pausedMutations.map((mutation) => mutation.continue().catch(noop))
)
);
}
};
function scopeFor(mutation) {
return mutation.options.scope?.id ?? String(mutation.mutationId);
}
export {

@@ -83,0 +98,0 @@ MutationCache

import './subscribable.js';
export { e as MutationObserver } from './queryClient-K0zFyarY.js';
export { e as MutationObserver } from './types-EkjjZlVm.js';
import './removable.js';

@@ -1,2 +0,2 @@

import { ak as QueryObserverResult, b as QueryClient, W as QueryObserverOptions, aP as NotifyOptions, o as Query, t as QueryKey, c as QueryObserver } from './queryClient-K0zFyarY.js';
import { ak as QueryObserverResult, b as QueryClient, W as QueryObserverOptions, aQ as NotifyOptions, o as Query, t as QueryKey, c as QueryObserver } from './types-EkjjZlVm.js';
import { Subscribable } from './subscribable.js';

@@ -3,0 +3,0 @@ import './removable.js';

import './removable.js';
export { bd as Action, b9 as FetchContext, ba as FetchDirection, bb as FetchMeta, bc as FetchOptions, o as Query, aN as QueryBehavior, n as QueryState, be as SetStateOptions, bf as fetchState } from './queryClient-K0zFyarY.js';
export { aV as Action, aR as FetchContext, aS as FetchDirection, aT as FetchMeta, aU as FetchOptions, o as Query, aO as QueryBehavior, n as QueryState, aW as SetStateOptions, aX as fetchState } from './types-EkjjZlVm.js';
import './subscribable.js';

@@ -269,5 +269,6 @@ // src/query.ts

retryDelay: context.options.retryDelay,
networkMode: context.options.networkMode
networkMode: context.options.networkMode,
canRun: () => true
});
return this.#retryer.promise;
return this.#retryer.start();
}

@@ -274,0 +275,0 @@ #dispatch(action) {

@@ -1,3 +0,3 @@

export { Q as QueryCache, a as QueryCacheNotifyEvent, bg as QueryStore } from './queryClient-K0zFyarY.js';
export { Q as QueryCache, a as QueryCacheNotifyEvent, ba as QueryStore } from './types-EkjjZlVm.js';
import './subscribable.js';
import './removable.js';

@@ -1,3 +0,3 @@

export { b as QueryClient } from './queryClient-K0zFyarY.js';
export { b as QueryClient } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';
import './subscribable.js';
export { aP as NotifyOptions, aO as ObserverFetchOptions, c as QueryObserver } from './queryClient-K0zFyarY.js';
export { aQ as NotifyOptions, aP as ObserverFetchOptions, c as QueryObserver } from './types-EkjjZlVm.js';
import './removable.js';

@@ -1,3 +0,3 @@

export { C as CancelledError, b6 as RetryDelayValue, b5 as RetryValue, b4 as Retryer, b7 as canFetch, b8 as createRetryer, l as isCancelledError } from './queryClient-K0zFyarY.js';
export { C as CancelledError, bf as RetryDelayValue, be as RetryValue, bd as Retryer, bg as canFetch, bh as createRetryer, l as isCancelledError } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';

@@ -43,3 +43,4 @@ // src/retryer.ts

};
const shouldPause = () => !focusManager.isFocused() || config.networkMode !== "always" && !onlineManager.isOnline();
const canContinue = () => focusManager.isFocused() && (config.networkMode === "always" || onlineManager.isOnline()) && config.canRun();
const canStart = () => canFetch(config.networkMode) && config.canRun();
const resolve = (value) => {

@@ -64,7 +65,5 @@ if (!isResolved) {

continueFn = (value) => {
const canContinue = isResolved || !shouldPause();
if (canContinue) {
if (isResolved || canContinue()) {
continueResolve(value);
}
return canContinue;
};

@@ -104,6 +103,3 @@ config.onPause?.();

sleep(delay).then(() => {
if (shouldPause()) {
return pause();
}
return;
return canContinue() ? void 0 : pause();
}).then(() => {

@@ -118,7 +114,2 @@ if (isRetryCancelled) {

};
if (canFetch(config.networkMode)) {
run();
} else {
pause().then(run);
}
return {

@@ -128,7 +119,16 @@ promise,

continue: () => {
const didContinue = continueFn?.();
return didContinue ? promise : Promise.resolve();
continueFn?.();
return promise;
},
cancelRetry,
continueRetry
continueRetry,
canStart,
start: () => {
if (canStart()) {
run();
} else {
pause().then(run);
}
return promise;
}
};

@@ -135,0 +135,0 @@ }

@@ -1,3 +0,3 @@

export { aJ as CancelOptions, v as DataTag, D as DefaultError, aI as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aA as MutateFunction, az as MutateOptions, aw as MutationFunction, at as MutationKey, av as MutationMeta, aB as MutationObserverBaseResult, aE as MutationObserverErrorResult, aC as MutationObserverIdleResult, aD as MutationObserverLoadingResult, ay as MutationObserverOptions, aG as MutationObserverResult, aF as MutationObserverSuccessResult, ax as MutationOptions, au as MutationStatus, H as NetworkMode, N as NoInfer, aM as NotifyEvent, aL as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, aH as QueryClientConfig, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aK as SetDataOptions, V as ThrowOnError, X as WithRequired, u as dataTagSymbol } from './queryClient-K0zFyarY.js';
export { aK as CancelOptions, v as DataTag, D as DefaultError, aJ as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aB as MutateFunction, aA as MutateOptions, ax as MutationFunction, at as MutationKey, aw as MutationMeta, aC as MutationObserverBaseResult, aF as MutationObserverErrorResult, aD as MutationObserverIdleResult, aE as MutationObserverLoadingResult, az as MutationObserverOptions, aH as MutationObserverResult, aG as MutationObserverSuccessResult, ay as MutationOptions, av as MutationScope, au as MutationStatus, H as NetworkMode, N as NoInfer, aN as NotifyEvent, aM as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, aI as QueryClientConfig, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aL as SetDataOptions, V as ThrowOnError, X as WithRequired, u as dataTagSymbol } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';

@@ -1,3 +0,3 @@

export { g as MutationFilters, j as QueryFilters, aQ as QueryTypeFilter, S as SkipToken, U as Updater, b0 as addToEnd, b1 as addToStart, aS as functionalUpdate, h as hashKey, aV as hashQueryKeyByOptions, aY as isPlainArray, aZ as isPlainObject, i as isServer, aT as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aR as noop, aW as partialMatchKey, a$ as replaceData, r as replaceEqualDeep, aX as shallowEqualObjects, s as skipToken, a_ as sleep, aU as timeUntilStale } from './queryClient-K0zFyarY.js';
export { g as MutationFilters, j as QueryFilters, aY as QueryTypeFilter, S as SkipToken, U as Updater, b8 as addToEnd, b9 as addToStart, a_ as functionalUpdate, h as hashKey, b1 as hashQueryKeyByOptions, b4 as isPlainArray, b5 as isPlainObject, i as isServer, a$ as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aZ as noop, b2 as partialMatchKey, b7 as replaceData, r as replaceEqualDeep, b3 as shallowEqualObjects, s as skipToken, b6 as sleep, b0 as timeUntilStale } from './types-EkjjZlVm.js';
import './removable.js';
import './subscribable.js';
{
"name": "@tanstack/query-core",
"version": "5.29.0",
"version": "5.31.0",
"description": "The framework agnostic core that powers TanStack Query",

@@ -5,0 +5,0 @@ "author": "tannerlinsley",

@@ -1,3 +0,1 @@

import type { QueryClient } from './queryClient'
import type { Query, QueryState } from './query'
import type {

@@ -7,2 +5,3 @@ MutationKey,

MutationOptions,
MutationScope,
QueryKey,

@@ -12,2 +11,4 @@ QueryMeta,

} from './types'
import type { QueryClient } from './queryClient'
import type { Query, QueryState } from './query'
import type { Mutation, MutationState } from './mutation'

@@ -33,2 +34,3 @@

meta?: MutationMeta
scope?: MutationScope
}

@@ -54,2 +56,3 @@

state: mutation.state,
...(mutation.options.scope && { scope: mutation.options.scope }),
...(mutation.meta && { meta: mutation.meta }),

@@ -122,3 +125,3 @@ }

mutations.forEach((dehydratedMutation) => {
mutations.forEach(({ state, ...mutationOptions }) => {
mutationCache.build(

@@ -128,6 +131,5 @@ client,

...options?.defaultOptions?.mutations,
mutationKey: dehydratedMutation.mutationKey,
meta: dehydratedMutation.meta,
...mutationOptions,
},
dehydratedMutation.state,
state,
)

@@ -134,0 +136,0 @@ })

import { notifyManager } from './notifyManager'
import { Removable } from './removable'
import { canFetch, createRetryer } from './retryer'
import { createRetryer } from './retryer'
import type {

@@ -20,3 +20,2 @@ DefaultError,

options: MutationOptions<TData, TError, TVariables, TContext>
defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>
state?: MutationState<TData, TError, TVariables, TContext>

@@ -50,2 +49,3 @@ }

type: 'pending'
isPaused: boolean
variables?: TVariables

@@ -94,3 +94,2 @@ context?: TContext

#observers: Array<MutationObserver<TData, TError, TVariables, TContext>>
#defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>
#mutationCache: MutationCache

@@ -103,3 +102,2 @@ #retryer?: Retryer<TData>

this.mutationId = config.mutationId
this.#defaultOptions = config.defaultOptions
this.#mutationCache = config.mutationCache

@@ -114,5 +112,5 @@ this.#observers = []

setOptions(
options?: MutationOptions<TData, TError, TVariables, TContext>,
options: MutationOptions<TData, TError, TVariables, TContext>,
): void {
this.options = { ...this.#defaultOptions, ...options }
this.options = options

@@ -172,32 +170,30 @@ this.updateGcTime(this.options.gcTime)

async execute(variables: TVariables): Promise<TData> {
const executeMutation = () => {
this.#retryer = createRetryer({
fn: () => {
if (!this.options.mutationFn) {
return Promise.reject(new Error('No mutationFn found'))
}
return this.options.mutationFn(variables)
},
onFail: (failureCount, error) => {
this.#dispatch({ type: 'failed', failureCount, error })
},
onPause: () => {
this.#dispatch({ type: 'pause' })
},
onContinue: () => {
this.#dispatch({ type: 'continue' })
},
retry: this.options.retry ?? 0,
retryDelay: this.options.retryDelay,
networkMode: this.options.networkMode,
})
this.#retryer = createRetryer({
fn: () => {
if (!this.options.mutationFn) {
return Promise.reject(new Error('No mutationFn found'))
}
return this.options.mutationFn(variables)
},
onFail: (failureCount, error) => {
this.#dispatch({ type: 'failed', failureCount, error })
},
onPause: () => {
this.#dispatch({ type: 'pause' })
},
onContinue: () => {
this.#dispatch({ type: 'continue' })
},
retry: this.options.retry ?? 0,
retryDelay: this.options.retryDelay,
networkMode: this.options.networkMode,
canRun: () => this.#mutationCache.canRun(this),
})
return this.#retryer.promise
}
const restored = this.state.status === 'pending'
const isPaused = !this.#retryer.canStart()
try {
if (!restored) {
this.#dispatch({ type: 'pending', variables })
this.#dispatch({ type: 'pending', variables, isPaused })
// Notify cache callback

@@ -214,6 +210,7 @@ await this.#mutationCache.config.onMutate?.(

variables,
isPaused,
})
}
}
const data = await executeMutation()
const data = await this.#retryer.start()

@@ -278,2 +275,4 @@ // Notify cache callback

}
} finally {
this.#mutationCache.runNext(this)
}

@@ -311,3 +310,3 @@ }

error: null,
isPaused: !canFetch(this.options.networkMode),
isPaused: action.isPaused,
status: 'pending',

@@ -314,0 +313,0 @@ variables: action.variables,

@@ -85,10 +85,9 @@ import { notifyManager } from './notifyManager'

export class MutationCache extends Subscribable<MutationCacheListener> {
#mutations: Array<Mutation<any, any, any, any>>
#mutations: Map<string, Array<Mutation<any, any, any, any>>>
#mutationId: number
#resuming: Promise<unknown> | undefined
constructor(public config: MutationCacheConfig = {}) {
super()
this.#mutations = []
this.#mutationId = 0
this.#mutations = new Map()
this.#mutationId = Date.now()
}

@@ -114,3 +113,6 @@

add(mutation: Mutation<any, any, any, any>): void {
this.#mutations.push(mutation)
const scope = scopeFor(mutation)
const mutations = this.#mutations.get(scope) ?? []
mutations.push(mutation)
this.#mutations.set(scope, mutations)
this.notify({ type: 'added', mutation })

@@ -120,9 +122,40 @@ }

remove(mutation: Mutation<any, any, any, any>): void {
this.#mutations = this.#mutations.filter((x) => x !== mutation)
const scope = scopeFor(mutation)
if (this.#mutations.has(scope)) {
const mutations = this.#mutations
.get(scope)
?.filter((x) => x !== mutation)
if (mutations) {
if (mutations.length === 0) {
this.#mutations.delete(scope)
} else {
this.#mutations.set(scope, mutations)
}
}
}
this.notify({ type: 'removed', mutation })
}
canRun(mutation: Mutation<any, any, any, any>): boolean {
const firstPendingMutation = this.#mutations
.get(scopeFor(mutation))
?.find((m) => m.state.status === 'pending')
// we can run if there is no current pending mutation (start use-case)
// or if WE are the first pending mutation (continue use-case)
return !firstPendingMutation || firstPendingMutation === mutation
}
runNext(mutation: Mutation<any, any, any, any>): Promise<unknown> {
const foundMutation = this.#mutations
.get(scopeFor(mutation))
?.find((m) => m !== mutation && m.state.isPaused)
return foundMutation?.continue() ?? Promise.resolve()
}
clear(): void {
notifyManager.batch(() => {
this.#mutations.forEach((mutation) => {
this.getAll().forEach((mutation) => {
this.remove(mutation)

@@ -134,3 +167,3 @@ })

getAll(): Array<Mutation> {
return this.#mutations
return [...this.#mutations.values()].flat()
}

@@ -148,11 +181,9 @@

return this.#mutations.find((mutation) =>
return this.getAll().find((mutation) =>
matchMutation(defaultedFilters, mutation),
)
) as Mutation<TData, TError, TVariables, TContext> | undefined
}
findAll(filters: MutationFilters = {}): Array<Mutation> {
return this.#mutations.filter((mutation) =>
matchMutation(filters, mutation),
)
return this.getAll().filter((mutation) => matchMutation(filters, mutation))
}

@@ -169,19 +200,14 @@

resumePausedMutations(): Promise<unknown> {
this.#resuming = (this.#resuming ?? Promise.resolve())
.then(() => {
const pausedMutations = this.#mutations.filter((x) => x.state.isPaused)
return notifyManager.batch(() =>
pausedMutations.reduce(
(promise, mutation) =>
promise.then(() => mutation.continue().catch(noop)),
Promise.resolve() as Promise<unknown>,
),
)
})
.then(() => {
this.#resuming = undefined
})
const pausedMutations = this.getAll().filter((x) => x.state.isPaused)
return this.#resuming
return notifyManager.batch(() =>
Promise.all(
pausedMutations.map((mutation) => mutation.continue().catch(noop)),
),
)
}
}
function scopeFor(mutation: Mutation<any, any, any, any>) {
return mutation.options.scope?.id ?? String(mutation.mutationId)
}

@@ -530,5 +530,6 @@ import { noop, replaceData, skipToken, timeUntilStale } from './utils'

networkMode: context.options.networkMode,
canRun: () => true,
})
return this.#retryer.promise
return this.#retryer.start()
}

@@ -535,0 +536,0 @@

@@ -19,2 +19,3 @@ import { focusManager } from './focusManager'

networkMode: NetworkMode | undefined
canRun: () => boolean
}

@@ -28,2 +29,4 @@

continueRetry: () => void
canStart: () => boolean
start: () => Promise<TData>
}

@@ -74,3 +77,3 @@

let isResolved = false
let continueFn: ((value?: unknown) => boolean) | undefined
let continueFn: ((value?: unknown) => void) | undefined
let promiseResolve: (data: TData) => void

@@ -99,6 +102,9 @@ let promiseReject: (error: TError) => void

const shouldPause = () =>
!focusManager.isFocused() ||
(config.networkMode !== 'always' && !onlineManager.isOnline())
const canContinue = () =>
focusManager.isFocused() &&
(config.networkMode === 'always' || onlineManager.isOnline()) &&
config.canRun()
const canStart = () => canFetch(config.networkMode) && config.canRun()
const resolve = (value: any) => {

@@ -125,7 +131,5 @@ if (!isResolved) {

continueFn = (value) => {
const canContinue = isResolved || !shouldPause()
if (canContinue) {
if (isResolved || canContinue()) {
continueResolve(value)
}
return canContinue
}

@@ -192,6 +196,3 @@ config.onPause?.()

.then(() => {
if (shouldPause()) {
return pause()
}
return
return canContinue() ? undefined : pause()
})

@@ -208,9 +209,2 @@ .then(() => {

// Start loop
if (canFetch(config.networkMode)) {
run()
} else {
pause().then(run)
}
return {

@@ -220,8 +214,18 @@ promise,

continue: () => {
const didContinue = continueFn?.()
return didContinue ? promise : Promise.resolve()
continueFn?.()
return promise
},
cancelRetry,
continueRetry,
canStart,
start: () => {
// Start loop
if (canStart()) {
run()
} else {
pause().then(run)
}
return promise
},
}
}

@@ -720,2 +720,6 @@ /* istanbul ignore file */

export type MutationScope = {
id: string
}
export type MutationMeta = Register extends {

@@ -766,2 +770,3 @@ mutationMeta: infer TMutationMeta

meta?: MutationMeta
scope?: MutationScope
}

@@ -768,0 +773,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc