@effector-tanstack-query/core 0.4.0 → 0.5.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.
- package/dist/createBaseQuery.cjs +23 -0
- package/dist/createBaseQuery.cjs.map +1 -1
- package/dist/createBaseQuery.d.cts +23 -1
- package/dist/createBaseQuery.d.ts +23 -1
- package/dist/createBaseQuery.js +23 -0
- package/dist/createBaseQuery.js.map +1 -1
- package/dist/createCacheAction.cjs +60 -0
- package/dist/createCacheAction.cjs.map +1 -0
- package/dist/createCacheAction.d.cts +66 -0
- package/dist/createCacheAction.d.ts +66 -0
- package/dist/createCacheAction.js +56 -0
- package/dist/createCacheAction.js.map +1 -0
- package/dist/createInfiniteQuery.cjs +2 -1
- package/dist/createInfiniteQuery.cjs.map +1 -1
- package/dist/createInfiniteQuery.js +2 -1
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createQuery.cjs +2 -1
- package/dist/createQuery.cjs.map +1 -1
- package/dist/createQuery.js +2 -1
- package/dist/createQuery.js.map +1 -1
- package/dist/index.cjs +13 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/types.d.cts +29 -0
- package/dist/types.d.ts +29 -0
- package/package.json +4 -3
- package/src/createBaseQuery.ts +67 -1
- package/src/createCacheAction.ts +172 -0
- package/src/createInfiniteQuery.ts +1 -0
- package/src/createQuery.ts +1 -0
- package/src/index.ts +11 -0
- package/src/types.ts +29 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { EventCallable } from 'effector';
|
|
2
|
+
import { QueryFilters, QueryClient } from '@tanstack/query-core';
|
|
3
|
+
import { EffectorQueryKey } from './types.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Options shared by `createCancel` / `createRemove` / `createReset`.
|
|
7
|
+
*
|
|
8
|
+
* Structurally a `QueryFilters` (from `@tanstack/query-core`) with the
|
|
9
|
+
* `queryKey` field widened to the reactive `EffectorQueryKey` shape — drop a
|
|
10
|
+
* `Store` anywhere in the array and the action resolves it on every call.
|
|
11
|
+
*
|
|
12
|
+
* `queryKey` is **optional**: omit it to target *all* queries, mirroring
|
|
13
|
+
* `queryClient.cancelQueries()` / `removeQueries()` / `resetQueries()` with no
|
|
14
|
+
* filters.
|
|
15
|
+
*/
|
|
16
|
+
interface CacheActionOptions extends Omit<QueryFilters, 'queryKey'> {
|
|
17
|
+
/**
|
|
18
|
+
* Key (or key prefix) to act on. Supports the same reactive shape as
|
|
19
|
+
* `createQuery.queryKey`. Omit to match every query in the cache.
|
|
20
|
+
*/
|
|
21
|
+
queryKey?: EffectorQueryKey;
|
|
22
|
+
}
|
|
23
|
+
/** Distinct named aliases so each factory documents its own option type. */
|
|
24
|
+
type CreateCancelOptions = CacheActionOptions;
|
|
25
|
+
type CreateRemoveOptions = CacheActionOptions;
|
|
26
|
+
type CreateResetOptions = CacheActionOptions;
|
|
27
|
+
/**
|
|
28
|
+
* Builds a `sample`-friendly event that **cancels** in-flight queries on the
|
|
29
|
+
* resolved `QueryClient` (without removing cached data). Wraps
|
|
30
|
+
* `queryClient.cancelQueries` — async, so `await allSettled(cancel, { scope })`
|
|
31
|
+
* waits for cancellation to settle.
|
|
32
|
+
*
|
|
33
|
+
* @example Cancel a user's queries on logout
|
|
34
|
+
* const cancelUserQueries = createCancel({ queryKey: ['user', $userId] })
|
|
35
|
+
* sample({ clock: logoutClicked, target: cancelUserQueries })
|
|
36
|
+
*
|
|
37
|
+
* @example Explicit client (same back-compat overload as createInvalidate)
|
|
38
|
+
* const cancelAll = createCancel(queryClient, {})
|
|
39
|
+
*/
|
|
40
|
+
declare function createCancel(options: CacheActionOptions): EventCallable<void>;
|
|
41
|
+
declare function createCancel(queryClient: QueryClient, options: CacheActionOptions): EventCallable<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Builds a `sample`-friendly event that **removes** matching entries from the
|
|
44
|
+
* cache entirely. Wraps `queryClient.removeQueries` — synchronous (no Promise).
|
|
45
|
+
* The next mount of a removed query starts from a pending state.
|
|
46
|
+
*
|
|
47
|
+
* @example Drop stale cache on navigation
|
|
48
|
+
* const removeStale = createRemove({ queryKey: ['stale-cache'] })
|
|
49
|
+
* sample({ clock: navigated, target: removeStale })
|
|
50
|
+
*/
|
|
51
|
+
declare function createRemove(options: CacheActionOptions): EventCallable<void>;
|
|
52
|
+
declare function createRemove(queryClient: QueryClient, options: CacheActionOptions): EventCallable<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Builds a `sample`-friendly event that **resets** matching queries back to
|
|
55
|
+
* their initial state and refetches any active observers. Wraps
|
|
56
|
+
* `queryClient.resetQueries` — async, so `await allSettled(reset, { scope })`
|
|
57
|
+
* waits for the refetch to settle.
|
|
58
|
+
*
|
|
59
|
+
* @example Reset search results when the filters are cleared
|
|
60
|
+
* const resetSearch = createReset({ queryKey: ['search'] })
|
|
61
|
+
* sample({ clock: filtersCleared, target: resetSearch })
|
|
62
|
+
*/
|
|
63
|
+
declare function createReset(options: CacheActionOptions): EventCallable<void>;
|
|
64
|
+
declare function createReset(queryClient: QueryClient, options: CacheActionOptions): EventCallable<void>;
|
|
65
|
+
|
|
66
|
+
export { type CacheActionOptions, type CreateCancelOptions, type CreateRemoveOptions, type CreateResetOptions, createCancel, createRemove, createReset };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createStore, createEvent, attach, sample } from 'effector';
|
|
2
|
+
import { $queryClient } from './queryClient.js';
|
|
3
|
+
import { resolveKey } from './resolve.js';
|
|
4
|
+
|
|
5
|
+
// src/createCacheAction.ts
|
|
6
|
+
function buildCacheAction(action, explicitClient, options) {
|
|
7
|
+
const { queryKey, ...restFilters } = options;
|
|
8
|
+
const $effectiveClient = explicitClient ? createStore(explicitClient, {
|
|
9
|
+
serialize: "ignore"
|
|
10
|
+
}) : $queryClient;
|
|
11
|
+
const $resolvedKey = queryKey ? resolveKey(queryKey) : createStore(void 0, { skipVoid: false });
|
|
12
|
+
const run = createEvent();
|
|
13
|
+
const runFx = attach({
|
|
14
|
+
source: { qc: $effectiveClient, key: $resolvedKey },
|
|
15
|
+
effect: ({ qc, key }) => {
|
|
16
|
+
if (!qc) return;
|
|
17
|
+
const filters = { ...restFilters };
|
|
18
|
+
if (key !== void 0) filters.queryKey = key;
|
|
19
|
+
return action(qc, filters);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
sample({ clock: run, target: runFx });
|
|
23
|
+
return run;
|
|
24
|
+
}
|
|
25
|
+
function parseArgs(arg1, arg2) {
|
|
26
|
+
if (arg2 !== void 0) return [arg1, arg2];
|
|
27
|
+
return [null, arg1];
|
|
28
|
+
}
|
|
29
|
+
function createCancel(arg1, arg2) {
|
|
30
|
+
const [explicitClient, options] = parseArgs(arg1, arg2);
|
|
31
|
+
return buildCacheAction(
|
|
32
|
+
(qc, filters) => qc.cancelQueries(filters),
|
|
33
|
+
explicitClient,
|
|
34
|
+
options
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
function createRemove(arg1, arg2) {
|
|
38
|
+
const [explicitClient, options] = parseArgs(arg1, arg2);
|
|
39
|
+
return buildCacheAction(
|
|
40
|
+
(qc, filters) => qc.removeQueries(filters),
|
|
41
|
+
explicitClient,
|
|
42
|
+
options
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
function createReset(arg1, arg2) {
|
|
46
|
+
const [explicitClient, options] = parseArgs(arg1, arg2);
|
|
47
|
+
return buildCacheAction(
|
|
48
|
+
(qc, filters) => qc.resetQueries(filters),
|
|
49
|
+
explicitClient,
|
|
50
|
+
options
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { createCancel, createRemove, createReset };
|
|
55
|
+
//# sourceMappingURL=createCacheAction.js.map
|
|
56
|
+
//# sourceMappingURL=createCacheAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/createCacheAction.ts"],"names":[],"mappings":";;;;;AA2CA,SAAS,gBAAA,CACP,MAAA,EACA,cAAA,EACA,OAAA,EACqB;AACrB,EAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,OAAA;AAKrC,EAAA,MAAM,gBAAA,GAA8C,cAAA,GAChD,WAAA,CAAY,cAAA,EAAsC;AAAA,IAChD,SAAA,EAAW;AAAA,GACZ,CAAA,GACD,YAAA;AAIJ,EAAA,MAAM,YAAA,GAA4C,QAAA,GAC9C,UAAA,CAAW,QAAQ,CAAA,GACnB,YAAkC,MAAA,EAAW,EAAE,QAAA,EAAU,KAAA,EAAO,CAAA;AAEpE,EAAA,MAAM,MAAM,WAAA,EAAkB;AAE9B,EAAA,MAAM,QAAQ,MAAA,CAAO;AAAA,IACnB,MAAA,EAAQ,EAAE,EAAA,EAAI,gBAAA,EAAkB,KAAK,YAAA,EAAa;AAAA,IAClD,MAAA,EAAQ,CAAC,EAAE,EAAA,EAAI,KAAI,KAAM;AACvB,MAAA,IAAI,CAAC,EAAA,EAAI;AACT,MAAA,MAAM,OAAA,GAAwB,EAAE,GAAG,WAAA,EAAY;AAC/C,MAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,OAAA,CAAQ,QAAA,GAAW,GAAA;AAC1C,MAAA,OAAO,MAAA,CAAO,IAAI,OAAO,CAAA;AAAA,IAC3B;AAAA,GACD,CAAA;AAED,EAAA,MAAA,CAAO,EAAE,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,OAAO,CAAA;AAEpC,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,SAAA,CACP,MACA,IAAA,EAC0C;AAC1C,EAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,CAAC,MAAqB,IAAI,CAAA;AACzD,EAAA,OAAO,CAAC,MAAM,IAA0B,CAAA;AAC1C;AAoBO,SAAS,YAAA,CACd,MACA,IAAA,EACqB;AACrB,EAAA,MAAM,CAAC,cAAA,EAAgB,OAAO,CAAA,GAAI,SAAA,CAAU,MAAM,IAAI,CAAA;AACtD,EAAA,OAAO,gBAAA;AAAA,IACL,CAAC,EAAA,EAAI,OAAA,KAAY,EAAA,CAAG,cAAc,OAAO,CAAA;AAAA,IACzC,cAAA;AAAA,IACA;AAAA,GACF;AACF;AAgBO,SAAS,YAAA,CACd,MACA,IAAA,EACqB;AACrB,EAAA,MAAM,CAAC,cAAA,EAAgB,OAAO,CAAA,GAAI,SAAA,CAAU,MAAM,IAAI,CAAA;AACtD,EAAA,OAAO,gBAAA;AAAA,IACL,CAAC,EAAA,EAAI,OAAA,KAAY,EAAA,CAAG,cAAc,OAAO,CAAA;AAAA,IACzC,cAAA;AAAA,IACA;AAAA,GACF;AACF;AAiBO,SAAS,WAAA,CACd,MACA,IAAA,EACqB;AACrB,EAAA,MAAM,CAAC,cAAA,EAAgB,OAAO,CAAA,GAAI,SAAA,CAAU,MAAM,IAAI,CAAA;AACtD,EAAA,OAAO,gBAAA;AAAA,IACL,CAAC,EAAA,EAAI,OAAA,KAAY,EAAA,CAAG,aAAa,OAAO,CAAA;AAAA,IACxC,cAAA;AAAA,IACA;AAAA,GACF;AACF","file":"createCacheAction.js","sourcesContent":["import { attach, createEvent, createStore, sample } from 'effector'\nimport type { EventCallable, Store } from 'effector'\nimport type { QueryClient, QueryFilters, QueryKey } from '@tanstack/query-core'\nimport { $queryClient } from './queryClient'\nimport { resolveKey } from './resolve'\nimport type { EffectorQueryKey } from './types'\n\n/**\n * Options shared by `createCancel` / `createRemove` / `createReset`.\n *\n * Structurally a `QueryFilters` (from `@tanstack/query-core`) with the\n * `queryKey` field widened to the reactive `EffectorQueryKey` shape — drop a\n * `Store` anywhere in the array and the action resolves it on every call.\n *\n * `queryKey` is **optional**: omit it to target *all* queries, mirroring\n * `queryClient.cancelQueries()` / `removeQueries()` / `resetQueries()` with no\n * filters.\n */\nexport interface CacheActionOptions extends Omit<QueryFilters, 'queryKey'> {\n /**\n * Key (or key prefix) to act on. Supports the same reactive shape as\n * `createQuery.queryKey`. Omit to match every query in the cache.\n */\n queryKey?: EffectorQueryKey\n}\n\n/** Distinct named aliases so each factory documents its own option type. */\nexport type CreateCancelOptions = CacheActionOptions\nexport type CreateRemoveOptions = CacheActionOptions\nexport type CreateResetOptions = CacheActionOptions\n\n/**\n * The QueryClient method a given action drives. Receives the resolved filters\n * (with `queryKey` already merged in when present). May be sync (`removeQueries`\n * returns `void`) or async (`cancelQueries` / `resetQueries` return a Promise).\n */\ntype CacheActionRunner = (qc: QueryClient, filters: QueryFilters) => unknown\n\n/**\n * Shared builder. Returns a `void` event that, when fired, runs `action`\n * against the resolved `QueryClient` with the resolved filters. Mirrors\n * `createInvalidate`'s locking + reactive-key + per-scope semantics exactly.\n */\nfunction buildCacheAction(\n action: CacheActionRunner,\n explicitClient: QueryClient | null,\n options: CacheActionOptions,\n): EventCallable<void> {\n const { queryKey, ...restFilters } = options\n\n // Same locking semantics as the other factories: explicit client freezes the\n // store, default flows through global $queryClient (and respects\n // fork({ values: [[$queryClient, qc]] }) for per-scope isolation).\n const $effectiveClient: Store<QueryClient | null> = explicitClient\n ? createStore(explicitClient as QueryClient | null, {\n serialize: 'ignore',\n })\n : $queryClient\n\n // No queryKey → a store of `undefined`, so the effect omits the field and the\n // action matches all queries.\n const $resolvedKey: Store<QueryKey | undefined> = queryKey\n ? resolveKey(queryKey)\n : createStore<QueryKey | undefined>(undefined, { skipVoid: false })\n\n const run = createEvent<void>()\n\n const runFx = attach({\n source: { qc: $effectiveClient, key: $resolvedKey },\n effect: ({ qc, key }) => {\n if (!qc) return\n const filters: QueryFilters = { ...restFilters }\n if (key !== undefined) filters.queryKey = key\n return action(qc, filters)\n },\n })\n\n sample({ clock: run, target: runFx })\n\n return run\n}\n\nfunction parseArgs(\n arg1: QueryClient | CacheActionOptions,\n arg2?: CacheActionOptions,\n): [QueryClient | null, CacheActionOptions] {\n if (arg2 !== undefined) return [arg1 as QueryClient, arg2]\n return [null, arg1 as CacheActionOptions]\n}\n\n/**\n * Builds a `sample`-friendly event that **cancels** in-flight queries on the\n * resolved `QueryClient` (without removing cached data). Wraps\n * `queryClient.cancelQueries` — async, so `await allSettled(cancel, { scope })`\n * waits for cancellation to settle.\n *\n * @example Cancel a user's queries on logout\n * const cancelUserQueries = createCancel({ queryKey: ['user', $userId] })\n * sample({ clock: logoutClicked, target: cancelUserQueries })\n *\n * @example Explicit client (same back-compat overload as createInvalidate)\n * const cancelAll = createCancel(queryClient, {})\n */\nexport function createCancel(options: CacheActionOptions): EventCallable<void>\nexport function createCancel(\n queryClient: QueryClient,\n options: CacheActionOptions,\n): EventCallable<void>\nexport function createCancel(\n arg1: QueryClient | CacheActionOptions,\n arg2?: CacheActionOptions,\n): EventCallable<void> {\n const [explicitClient, options] = parseArgs(arg1, arg2)\n return buildCacheAction(\n (qc, filters) => qc.cancelQueries(filters),\n explicitClient,\n options,\n )\n}\n\n/**\n * Builds a `sample`-friendly event that **removes** matching entries from the\n * cache entirely. Wraps `queryClient.removeQueries` — synchronous (no Promise).\n * The next mount of a removed query starts from a pending state.\n *\n * @example Drop stale cache on navigation\n * const removeStale = createRemove({ queryKey: ['stale-cache'] })\n * sample({ clock: navigated, target: removeStale })\n */\nexport function createRemove(options: CacheActionOptions): EventCallable<void>\nexport function createRemove(\n queryClient: QueryClient,\n options: CacheActionOptions,\n): EventCallable<void>\nexport function createRemove(\n arg1: QueryClient | CacheActionOptions,\n arg2?: CacheActionOptions,\n): EventCallable<void> {\n const [explicitClient, options] = parseArgs(arg1, arg2)\n return buildCacheAction(\n (qc, filters) => qc.removeQueries(filters),\n explicitClient,\n options,\n )\n}\n\n/**\n * Builds a `sample`-friendly event that **resets** matching queries back to\n * their initial state and refetches any active observers. Wraps\n * `queryClient.resetQueries` — async, so `await allSettled(reset, { scope })`\n * waits for the refetch to settle.\n *\n * @example Reset search results when the filters are cleared\n * const resetSearch = createReset({ queryKey: ['search'] })\n * sample({ clock: filtersCleared, target: resetSearch })\n */\nexport function createReset(options: CacheActionOptions): EventCallable<void>\nexport function createReset(\n queryClient: QueryClient,\n options: CacheActionOptions,\n): EventCallable<void>\nexport function createReset(\n arg1: QueryClient | CacheActionOptions,\n arg2?: CacheActionOptions,\n): EventCallable<void> {\n const [explicitClient, options] = parseArgs(arg1, arg2)\n return buildCacheAction(\n (qc, filters) => qc.resetQueries(filters),\n explicitClient,\n options,\n )\n}\n"]}
|
|
@@ -158,7 +158,8 @@ function createInfiniteQuery(arg1, arg2) {
|
|
|
158
158
|
refresh: base.refresh,
|
|
159
159
|
prefetch,
|
|
160
160
|
mounted: base.mounted,
|
|
161
|
-
unmounted: base.unmounted
|
|
161
|
+
unmounted: base.unmounted,
|
|
162
|
+
finished: base.finished
|
|
162
163
|
};
|
|
163
164
|
Object.defineProperty(result, "__createObserver", {
|
|
164
165
|
enumerable: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createInfiniteQuery.ts"],"names":["warnMissingName","resolveReactiveRefetchInterval","createBaseQuery","InfiniteQueryObserver","createEvent","createStore","sidConfig","attach","sample","scopeBind","result","enabled"],"mappings":"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","file":"createInfiniteQuery.cjs","sourcesContent":["import { attach, createEvent, createStore, sample, scopeBind } from 'effector'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n InfiniteData,\n QueryClient,\n QueryKey,\n} from '@tanstack/query-core'\nimport { createBaseQuery, sidConfig, warnMissingName } from './createBaseQuery'\nimport { resolveReactiveRefetchInterval } from './resolve'\nimport type {\n CreateInfiniteQueryOptions,\n EffectorQueryKey,\n InfiniteQueryResult,\n} from './types'\n\ntype Observer<TQueryFnData, TError, TData, TPageParam> = InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n>\n\ntype ObserverResult<TQueryFnData, TError, TData, TPageParam> = ReturnType<\n Observer<TQueryFnData, TError, TData, TPageParam>['getCurrentResult']\n>\n\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n queryClient: QueryClient,\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam> {\n const [explicitClient, options] = parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >(arg1, arg2)\n const { queryKey, enabled, name, ...restOptions } = options\n\n if (!name) warnMissingName('createInfiniteQuery')\n\n const reactiveRefetchInterval = resolveReactiveRefetchInterval(\n (restOptions as { refetchInterval?: unknown }).refetchInterval,\n )\n if (reactiveRefetchInterval) {\n delete (restOptions as { refetchInterval?: unknown }).refetchInterval\n }\n\n const base = createBaseQuery<\n TData,\n TError,\n ObserverResult<TQueryFnData, TError, TData, TPageParam>,\n Observer<TQueryFnData, TError, TData, TPageParam>,\n {\n $hasNextPage: ReturnType<typeof createStore<boolean>>\n $hasPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchingNextPage: ReturnType<typeof createStore<boolean>>\n $isFetchingPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchNextPageError: ReturnType<typeof createStore<boolean>>\n $isFetchPreviousPageError: ReturnType<typeof createStore<boolean>>\n fetchNextPage: ReturnType<typeof createEvent<void>>\n fetchPreviousPage: ReturnType<typeof createEvent<void>>\n }\n >(\n explicitClient,\n { queryKey, enabled, name, reactiveRefetchInterval },\n {\n createObserver: (qc, { queryKey: key, enabled: isEnabled }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: key,\n enabled: isEnabled,\n } as any),\n setupExtras: () => {\n const hasNextPageUpdated = createEvent<boolean>()\n const hasPreviousPageUpdated = createEvent<boolean>()\n const isFetchingNextPageUpdated = createEvent<boolean>()\n const isFetchingPreviousPageUpdated = createEvent<boolean>()\n const isFetchNextPageErrorUpdated = createEvent<boolean>()\n const isFetchPreviousPageErrorUpdated = createEvent<boolean>()\n\n const $hasNextPage = createStore(false, {\n ...sidConfig(name, '$hasNextPage'),\n }).on(hasNextPageUpdated, (_, v) => v)\n const $hasPreviousPage = createStore(false, {\n ...sidConfig(name, '$hasPreviousPage'),\n }).on(hasPreviousPageUpdated, (_, v) => v)\n const $isFetchingNextPage = createStore(false, {\n ...sidConfig(name, '$isFetchingNextPage'),\n }).on(isFetchingNextPageUpdated, (_, v) => v)\n const $isFetchingPreviousPage = createStore(false, {\n ...sidConfig(name, '$isFetchingPreviousPage'),\n }).on(isFetchingPreviousPageUpdated, (_, v) => v)\n const $isFetchNextPageError = createStore(false, {\n ...sidConfig(name, '$isFetchNextPageError'),\n }).on(isFetchNextPageErrorUpdated, (_, v) => v)\n const $isFetchPreviousPageError = createStore(false, {\n ...sidConfig(name, '$isFetchPreviousPageError'),\n }).on(isFetchPreviousPageErrorUpdated, (_, v) => v)\n\n const fetchNextPage = createEvent<void>()\n const fetchPreviousPage = createEvent<void>()\n\n return {\n stores: {\n $hasNextPage,\n $hasPreviousPage,\n $isFetchingNextPage,\n $isFetchingPreviousPage,\n $isFetchNextPageError,\n $isFetchPreviousPageError,\n fetchNextPage,\n fetchPreviousPage,\n },\n // Wire fetchNextPage / fetchPreviousPage as scope-aware effects via\n // attach over $observer — same pattern as the rest of createBaseQuery.\n setupEffects: ({ $observer }) => {\n const fetchNextPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchNextPage()\n },\n })\n sample({ clock: fetchNextPage, target: fetchNextPageFx })\n\n const fetchPreviousPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchPreviousPage()\n },\n })\n sample({ clock: fetchPreviousPage, target: fetchPreviousPageFx })\n },\n bindDispatcher: () => {\n const dispatchHasNextPage = scopeBind(hasNextPageUpdated, {\n safe: true,\n })\n const dispatchHasPreviousPage = scopeBind(hasPreviousPageUpdated, {\n safe: true,\n })\n const dispatchIsFetchingNextPage = scopeBind(\n isFetchingNextPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchingPreviousPage = scopeBind(\n isFetchingPreviousPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchNextPageError = scopeBind(\n isFetchNextPageErrorUpdated,\n { safe: true },\n )\n const dispatchIsFetchPreviousPageError = scopeBind(\n isFetchPreviousPageErrorUpdated,\n { safe: true },\n )\n\n return (result) => {\n dispatchHasNextPage(result.hasNextPage)\n dispatchHasPreviousPage(result.hasPreviousPage)\n dispatchIsFetchingNextPage(result.isFetchingNextPage)\n dispatchIsFetchingPreviousPage(result.isFetchingPreviousPage)\n dispatchIsFetchNextPageError(result.isFetchNextPageError)\n dispatchIsFetchPreviousPageError(result.isFetchPreviousPageError)\n }\n },\n }\n },\n },\n )\n\n // See createQuery.prefetch — same contract, but uses fetchInfiniteQuery so\n // the first page is fetched + cached on the server.\n const prefetch = createEvent<void>()\n const prefetchFx = attach({\n source: {\n qc: base.$queryClient,\n key: base.$resolvedKey,\n enabled: base.$enabled,\n },\n effect: ({ qc, key, enabled }) => {\n if (!qc || !enabled) return\n return qc.fetchInfiniteQuery({\n ...restOptions,\n queryKey: key,\n } as any)\n },\n })\n sample({ clock: prefetch, target: prefetchFx })\n\n const result: InfiniteQueryResult<TData, TError, TPageParam> = {\n $data: base.$data,\n $error: base.$error,\n $status: base.$status,\n $isPending: base.$isPending,\n $isFetching: base.$isFetching,\n $isSuccess: base.$isSuccess,\n $isError: base.$isError,\n $isPlaceholderData: base.$isPlaceholderData,\n $fetchStatus: base.$fetchStatus,\n $hasNextPage: base.$hasNextPage,\n $hasPreviousPage: base.$hasPreviousPage,\n $isFetchingNextPage: base.$isFetchingNextPage,\n $isFetchingPreviousPage: base.$isFetchingPreviousPage,\n $isFetchNextPageError: base.$isFetchNextPageError,\n $isFetchPreviousPageError: base.$isFetchPreviousPageError,\n $observer: base.$observer,\n $queryClient: base.$queryClient,\n fetchNextPage: base.fetchNextPage,\n fetchPreviousPage: base.fetchPreviousPage,\n refresh: base.refresh,\n prefetch,\n mounted: base.mounted,\n unmounted: base.unmounted,\n }\n\n Object.defineProperty(result, '__createObserver', {\n enumerable: false,\n value: (qc: QueryClient, init: { queryKey: any; enabled: boolean }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: init.queryKey,\n enabled: init.enabled,\n } as any),\n })\n Object.defineProperty(result, '__resolvedKey', {\n enumerable: false,\n value: base.$resolvedKey,\n })\n Object.defineProperty(result, '__enabled', {\n enumerable: false,\n value: base.$enabled,\n })\n\n return result\n}\n\nfunction parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey extends EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): [\n QueryClient | null,\n CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n ]\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/createInfiniteQuery.ts"],"names":["warnMissingName","resolveReactiveRefetchInterval","createBaseQuery","InfiniteQueryObserver","createEvent","createStore","sidConfig","attach","sample","scopeBind","result","enabled"],"mappings":"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","file":"createInfiniteQuery.cjs","sourcesContent":["import { attach, createEvent, createStore, sample, scopeBind } from 'effector'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n InfiniteData,\n QueryClient,\n QueryKey,\n} from '@tanstack/query-core'\nimport { createBaseQuery, sidConfig, warnMissingName } from './createBaseQuery'\nimport { resolveReactiveRefetchInterval } from './resolve'\nimport type {\n CreateInfiniteQueryOptions,\n EffectorQueryKey,\n InfiniteQueryResult,\n} from './types'\n\ntype Observer<TQueryFnData, TError, TData, TPageParam> = InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n>\n\ntype ObserverResult<TQueryFnData, TError, TData, TPageParam> = ReturnType<\n Observer<TQueryFnData, TError, TData, TPageParam>['getCurrentResult']\n>\n\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n queryClient: QueryClient,\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam> {\n const [explicitClient, options] = parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >(arg1, arg2)\n const { queryKey, enabled, name, ...restOptions } = options\n\n if (!name) warnMissingName('createInfiniteQuery')\n\n const reactiveRefetchInterval = resolveReactiveRefetchInterval(\n (restOptions as { refetchInterval?: unknown }).refetchInterval,\n )\n if (reactiveRefetchInterval) {\n delete (restOptions as { refetchInterval?: unknown }).refetchInterval\n }\n\n const base = createBaseQuery<\n TData,\n TError,\n ObserverResult<TQueryFnData, TError, TData, TPageParam>,\n Observer<TQueryFnData, TError, TData, TPageParam>,\n {\n $hasNextPage: ReturnType<typeof createStore<boolean>>\n $hasPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchingNextPage: ReturnType<typeof createStore<boolean>>\n $isFetchingPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchNextPageError: ReturnType<typeof createStore<boolean>>\n $isFetchPreviousPageError: ReturnType<typeof createStore<boolean>>\n fetchNextPage: ReturnType<typeof createEvent<void>>\n fetchPreviousPage: ReturnType<typeof createEvent<void>>\n }\n >(\n explicitClient,\n { queryKey, enabled, name, reactiveRefetchInterval },\n {\n createObserver: (qc, { queryKey: key, enabled: isEnabled }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: key,\n enabled: isEnabled,\n } as any),\n setupExtras: () => {\n const hasNextPageUpdated = createEvent<boolean>()\n const hasPreviousPageUpdated = createEvent<boolean>()\n const isFetchingNextPageUpdated = createEvent<boolean>()\n const isFetchingPreviousPageUpdated = createEvent<boolean>()\n const isFetchNextPageErrorUpdated = createEvent<boolean>()\n const isFetchPreviousPageErrorUpdated = createEvent<boolean>()\n\n const $hasNextPage = createStore(false, {\n ...sidConfig(name, '$hasNextPage'),\n }).on(hasNextPageUpdated, (_, v) => v)\n const $hasPreviousPage = createStore(false, {\n ...sidConfig(name, '$hasPreviousPage'),\n }).on(hasPreviousPageUpdated, (_, v) => v)\n const $isFetchingNextPage = createStore(false, {\n ...sidConfig(name, '$isFetchingNextPage'),\n }).on(isFetchingNextPageUpdated, (_, v) => v)\n const $isFetchingPreviousPage = createStore(false, {\n ...sidConfig(name, '$isFetchingPreviousPage'),\n }).on(isFetchingPreviousPageUpdated, (_, v) => v)\n const $isFetchNextPageError = createStore(false, {\n ...sidConfig(name, '$isFetchNextPageError'),\n }).on(isFetchNextPageErrorUpdated, (_, v) => v)\n const $isFetchPreviousPageError = createStore(false, {\n ...sidConfig(name, '$isFetchPreviousPageError'),\n }).on(isFetchPreviousPageErrorUpdated, (_, v) => v)\n\n const fetchNextPage = createEvent<void>()\n const fetchPreviousPage = createEvent<void>()\n\n return {\n stores: {\n $hasNextPage,\n $hasPreviousPage,\n $isFetchingNextPage,\n $isFetchingPreviousPage,\n $isFetchNextPageError,\n $isFetchPreviousPageError,\n fetchNextPage,\n fetchPreviousPage,\n },\n // Wire fetchNextPage / fetchPreviousPage as scope-aware effects via\n // attach over $observer — same pattern as the rest of createBaseQuery.\n setupEffects: ({ $observer }) => {\n const fetchNextPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchNextPage()\n },\n })\n sample({ clock: fetchNextPage, target: fetchNextPageFx })\n\n const fetchPreviousPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchPreviousPage()\n },\n })\n sample({ clock: fetchPreviousPage, target: fetchPreviousPageFx })\n },\n bindDispatcher: () => {\n const dispatchHasNextPage = scopeBind(hasNextPageUpdated, {\n safe: true,\n })\n const dispatchHasPreviousPage = scopeBind(hasPreviousPageUpdated, {\n safe: true,\n })\n const dispatchIsFetchingNextPage = scopeBind(\n isFetchingNextPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchingPreviousPage = scopeBind(\n isFetchingPreviousPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchNextPageError = scopeBind(\n isFetchNextPageErrorUpdated,\n { safe: true },\n )\n const dispatchIsFetchPreviousPageError = scopeBind(\n isFetchPreviousPageErrorUpdated,\n { safe: true },\n )\n\n return (result) => {\n dispatchHasNextPage(result.hasNextPage)\n dispatchHasPreviousPage(result.hasPreviousPage)\n dispatchIsFetchingNextPage(result.isFetchingNextPage)\n dispatchIsFetchingPreviousPage(result.isFetchingPreviousPage)\n dispatchIsFetchNextPageError(result.isFetchNextPageError)\n dispatchIsFetchPreviousPageError(result.isFetchPreviousPageError)\n }\n },\n }\n },\n },\n )\n\n // See createQuery.prefetch — same contract, but uses fetchInfiniteQuery so\n // the first page is fetched + cached on the server.\n const prefetch = createEvent<void>()\n const prefetchFx = attach({\n source: {\n qc: base.$queryClient,\n key: base.$resolvedKey,\n enabled: base.$enabled,\n },\n effect: ({ qc, key, enabled }) => {\n if (!qc || !enabled) return\n return qc.fetchInfiniteQuery({\n ...restOptions,\n queryKey: key,\n } as any)\n },\n })\n sample({ clock: prefetch, target: prefetchFx })\n\n const result: InfiniteQueryResult<TData, TError, TPageParam> = {\n $data: base.$data,\n $error: base.$error,\n $status: base.$status,\n $isPending: base.$isPending,\n $isFetching: base.$isFetching,\n $isSuccess: base.$isSuccess,\n $isError: base.$isError,\n $isPlaceholderData: base.$isPlaceholderData,\n $fetchStatus: base.$fetchStatus,\n $hasNextPage: base.$hasNextPage,\n $hasPreviousPage: base.$hasPreviousPage,\n $isFetchingNextPage: base.$isFetchingNextPage,\n $isFetchingPreviousPage: base.$isFetchingPreviousPage,\n $isFetchNextPageError: base.$isFetchNextPageError,\n $isFetchPreviousPageError: base.$isFetchPreviousPageError,\n $observer: base.$observer,\n $queryClient: base.$queryClient,\n fetchNextPage: base.fetchNextPage,\n fetchPreviousPage: base.fetchPreviousPage,\n refresh: base.refresh,\n prefetch,\n mounted: base.mounted,\n unmounted: base.unmounted,\n finished: base.finished,\n }\n\n Object.defineProperty(result, '__createObserver', {\n enumerable: false,\n value: (qc: QueryClient, init: { queryKey: any; enabled: boolean }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: init.queryKey,\n enabled: init.enabled,\n } as any),\n })\n Object.defineProperty(result, '__resolvedKey', {\n enumerable: false,\n value: base.$resolvedKey,\n })\n Object.defineProperty(result, '__enabled', {\n enumerable: false,\n value: base.$enabled,\n })\n\n return result\n}\n\nfunction parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey extends EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): [\n QueryClient | null,\n CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n ]\n}\n"]}
|
|
@@ -156,7 +156,8 @@ function createInfiniteQuery(arg1, arg2) {
|
|
|
156
156
|
refresh: base.refresh,
|
|
157
157
|
prefetch,
|
|
158
158
|
mounted: base.mounted,
|
|
159
|
-
unmounted: base.unmounted
|
|
159
|
+
unmounted: base.unmounted,
|
|
160
|
+
finished: base.finished
|
|
160
161
|
};
|
|
161
162
|
Object.defineProperty(result, "__createObserver", {
|
|
162
163
|
enumerable: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createInfiniteQuery.ts"],"names":["result","enabled"],"mappings":"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","file":"createInfiniteQuery.js","sourcesContent":["import { attach, createEvent, createStore, sample, scopeBind } from 'effector'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n InfiniteData,\n QueryClient,\n QueryKey,\n} from '@tanstack/query-core'\nimport { createBaseQuery, sidConfig, warnMissingName } from './createBaseQuery'\nimport { resolveReactiveRefetchInterval } from './resolve'\nimport type {\n CreateInfiniteQueryOptions,\n EffectorQueryKey,\n InfiniteQueryResult,\n} from './types'\n\ntype Observer<TQueryFnData, TError, TData, TPageParam> = InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n>\n\ntype ObserverResult<TQueryFnData, TError, TData, TPageParam> = ReturnType<\n Observer<TQueryFnData, TError, TData, TPageParam>['getCurrentResult']\n>\n\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n queryClient: QueryClient,\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam> {\n const [explicitClient, options] = parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >(arg1, arg2)\n const { queryKey, enabled, name, ...restOptions } = options\n\n if (!name) warnMissingName('createInfiniteQuery')\n\n const reactiveRefetchInterval = resolveReactiveRefetchInterval(\n (restOptions as { refetchInterval?: unknown }).refetchInterval,\n )\n if (reactiveRefetchInterval) {\n delete (restOptions as { refetchInterval?: unknown }).refetchInterval\n }\n\n const base = createBaseQuery<\n TData,\n TError,\n ObserverResult<TQueryFnData, TError, TData, TPageParam>,\n Observer<TQueryFnData, TError, TData, TPageParam>,\n {\n $hasNextPage: ReturnType<typeof createStore<boolean>>\n $hasPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchingNextPage: ReturnType<typeof createStore<boolean>>\n $isFetchingPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchNextPageError: ReturnType<typeof createStore<boolean>>\n $isFetchPreviousPageError: ReturnType<typeof createStore<boolean>>\n fetchNextPage: ReturnType<typeof createEvent<void>>\n fetchPreviousPage: ReturnType<typeof createEvent<void>>\n }\n >(\n explicitClient,\n { queryKey, enabled, name, reactiveRefetchInterval },\n {\n createObserver: (qc, { queryKey: key, enabled: isEnabled }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: key,\n enabled: isEnabled,\n } as any),\n setupExtras: () => {\n const hasNextPageUpdated = createEvent<boolean>()\n const hasPreviousPageUpdated = createEvent<boolean>()\n const isFetchingNextPageUpdated = createEvent<boolean>()\n const isFetchingPreviousPageUpdated = createEvent<boolean>()\n const isFetchNextPageErrorUpdated = createEvent<boolean>()\n const isFetchPreviousPageErrorUpdated = createEvent<boolean>()\n\n const $hasNextPage = createStore(false, {\n ...sidConfig(name, '$hasNextPage'),\n }).on(hasNextPageUpdated, (_, v) => v)\n const $hasPreviousPage = createStore(false, {\n ...sidConfig(name, '$hasPreviousPage'),\n }).on(hasPreviousPageUpdated, (_, v) => v)\n const $isFetchingNextPage = createStore(false, {\n ...sidConfig(name, '$isFetchingNextPage'),\n }).on(isFetchingNextPageUpdated, (_, v) => v)\n const $isFetchingPreviousPage = createStore(false, {\n ...sidConfig(name, '$isFetchingPreviousPage'),\n }).on(isFetchingPreviousPageUpdated, (_, v) => v)\n const $isFetchNextPageError = createStore(false, {\n ...sidConfig(name, '$isFetchNextPageError'),\n }).on(isFetchNextPageErrorUpdated, (_, v) => v)\n const $isFetchPreviousPageError = createStore(false, {\n ...sidConfig(name, '$isFetchPreviousPageError'),\n }).on(isFetchPreviousPageErrorUpdated, (_, v) => v)\n\n const fetchNextPage = createEvent<void>()\n const fetchPreviousPage = createEvent<void>()\n\n return {\n stores: {\n $hasNextPage,\n $hasPreviousPage,\n $isFetchingNextPage,\n $isFetchingPreviousPage,\n $isFetchNextPageError,\n $isFetchPreviousPageError,\n fetchNextPage,\n fetchPreviousPage,\n },\n // Wire fetchNextPage / fetchPreviousPage as scope-aware effects via\n // attach over $observer — same pattern as the rest of createBaseQuery.\n setupEffects: ({ $observer }) => {\n const fetchNextPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchNextPage()\n },\n })\n sample({ clock: fetchNextPage, target: fetchNextPageFx })\n\n const fetchPreviousPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchPreviousPage()\n },\n })\n sample({ clock: fetchPreviousPage, target: fetchPreviousPageFx })\n },\n bindDispatcher: () => {\n const dispatchHasNextPage = scopeBind(hasNextPageUpdated, {\n safe: true,\n })\n const dispatchHasPreviousPage = scopeBind(hasPreviousPageUpdated, {\n safe: true,\n })\n const dispatchIsFetchingNextPage = scopeBind(\n isFetchingNextPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchingPreviousPage = scopeBind(\n isFetchingPreviousPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchNextPageError = scopeBind(\n isFetchNextPageErrorUpdated,\n { safe: true },\n )\n const dispatchIsFetchPreviousPageError = scopeBind(\n isFetchPreviousPageErrorUpdated,\n { safe: true },\n )\n\n return (result) => {\n dispatchHasNextPage(result.hasNextPage)\n dispatchHasPreviousPage(result.hasPreviousPage)\n dispatchIsFetchingNextPage(result.isFetchingNextPage)\n dispatchIsFetchingPreviousPage(result.isFetchingPreviousPage)\n dispatchIsFetchNextPageError(result.isFetchNextPageError)\n dispatchIsFetchPreviousPageError(result.isFetchPreviousPageError)\n }\n },\n }\n },\n },\n )\n\n // See createQuery.prefetch — same contract, but uses fetchInfiniteQuery so\n // the first page is fetched + cached on the server.\n const prefetch = createEvent<void>()\n const prefetchFx = attach({\n source: {\n qc: base.$queryClient,\n key: base.$resolvedKey,\n enabled: base.$enabled,\n },\n effect: ({ qc, key, enabled }) => {\n if (!qc || !enabled) return\n return qc.fetchInfiniteQuery({\n ...restOptions,\n queryKey: key,\n } as any)\n },\n })\n sample({ clock: prefetch, target: prefetchFx })\n\n const result: InfiniteQueryResult<TData, TError, TPageParam> = {\n $data: base.$data,\n $error: base.$error,\n $status: base.$status,\n $isPending: base.$isPending,\n $isFetching: base.$isFetching,\n $isSuccess: base.$isSuccess,\n $isError: base.$isError,\n $isPlaceholderData: base.$isPlaceholderData,\n $fetchStatus: base.$fetchStatus,\n $hasNextPage: base.$hasNextPage,\n $hasPreviousPage: base.$hasPreviousPage,\n $isFetchingNextPage: base.$isFetchingNextPage,\n $isFetchingPreviousPage: base.$isFetchingPreviousPage,\n $isFetchNextPageError: base.$isFetchNextPageError,\n $isFetchPreviousPageError: base.$isFetchPreviousPageError,\n $observer: base.$observer,\n $queryClient: base.$queryClient,\n fetchNextPage: base.fetchNextPage,\n fetchPreviousPage: base.fetchPreviousPage,\n refresh: base.refresh,\n prefetch,\n mounted: base.mounted,\n unmounted: base.unmounted,\n }\n\n Object.defineProperty(result, '__createObserver', {\n enumerable: false,\n value: (qc: QueryClient, init: { queryKey: any; enabled: boolean }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: init.queryKey,\n enabled: init.enabled,\n } as any),\n })\n Object.defineProperty(result, '__resolvedKey', {\n enumerable: false,\n value: base.$resolvedKey,\n })\n Object.defineProperty(result, '__enabled', {\n enumerable: false,\n value: base.$enabled,\n })\n\n return result\n}\n\nfunction parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey extends EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): [\n QueryClient | null,\n CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n ]\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/createInfiniteQuery.ts"],"names":["result","enabled"],"mappings":"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","file":"createInfiniteQuery.js","sourcesContent":["import { attach, createEvent, createStore, sample, scopeBind } from 'effector'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n InfiniteData,\n QueryClient,\n QueryKey,\n} from '@tanstack/query-core'\nimport { createBaseQuery, sidConfig, warnMissingName } from './createBaseQuery'\nimport { resolveReactiveRefetchInterval } from './resolve'\nimport type {\n CreateInfiniteQueryOptions,\n EffectorQueryKey,\n InfiniteQueryResult,\n} from './types'\n\ntype Observer<TQueryFnData, TError, TData, TPageParam> = InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n>\n\ntype ObserverResult<TQueryFnData, TError, TData, TPageParam> = ReturnType<\n Observer<TQueryFnData, TError, TData, TPageParam>['getCurrentResult']\n>\n\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n queryClient: QueryClient,\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam>\nexport function createInfiniteQuery<\n TQueryFnData = unknown,\n TError = Error,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): InfiniteQueryResult<TData, TError, TPageParam> {\n const [explicitClient, options] = parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >(arg1, arg2)\n const { queryKey, enabled, name, ...restOptions } = options\n\n if (!name) warnMissingName('createInfiniteQuery')\n\n const reactiveRefetchInterval = resolveReactiveRefetchInterval(\n (restOptions as { refetchInterval?: unknown }).refetchInterval,\n )\n if (reactiveRefetchInterval) {\n delete (restOptions as { refetchInterval?: unknown }).refetchInterval\n }\n\n const base = createBaseQuery<\n TData,\n TError,\n ObserverResult<TQueryFnData, TError, TData, TPageParam>,\n Observer<TQueryFnData, TError, TData, TPageParam>,\n {\n $hasNextPage: ReturnType<typeof createStore<boolean>>\n $hasPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchingNextPage: ReturnType<typeof createStore<boolean>>\n $isFetchingPreviousPage: ReturnType<typeof createStore<boolean>>\n $isFetchNextPageError: ReturnType<typeof createStore<boolean>>\n $isFetchPreviousPageError: ReturnType<typeof createStore<boolean>>\n fetchNextPage: ReturnType<typeof createEvent<void>>\n fetchPreviousPage: ReturnType<typeof createEvent<void>>\n }\n >(\n explicitClient,\n { queryKey, enabled, name, reactiveRefetchInterval },\n {\n createObserver: (qc, { queryKey: key, enabled: isEnabled }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: key,\n enabled: isEnabled,\n } as any),\n setupExtras: () => {\n const hasNextPageUpdated = createEvent<boolean>()\n const hasPreviousPageUpdated = createEvent<boolean>()\n const isFetchingNextPageUpdated = createEvent<boolean>()\n const isFetchingPreviousPageUpdated = createEvent<boolean>()\n const isFetchNextPageErrorUpdated = createEvent<boolean>()\n const isFetchPreviousPageErrorUpdated = createEvent<boolean>()\n\n const $hasNextPage = createStore(false, {\n ...sidConfig(name, '$hasNextPage'),\n }).on(hasNextPageUpdated, (_, v) => v)\n const $hasPreviousPage = createStore(false, {\n ...sidConfig(name, '$hasPreviousPage'),\n }).on(hasPreviousPageUpdated, (_, v) => v)\n const $isFetchingNextPage = createStore(false, {\n ...sidConfig(name, '$isFetchingNextPage'),\n }).on(isFetchingNextPageUpdated, (_, v) => v)\n const $isFetchingPreviousPage = createStore(false, {\n ...sidConfig(name, '$isFetchingPreviousPage'),\n }).on(isFetchingPreviousPageUpdated, (_, v) => v)\n const $isFetchNextPageError = createStore(false, {\n ...sidConfig(name, '$isFetchNextPageError'),\n }).on(isFetchNextPageErrorUpdated, (_, v) => v)\n const $isFetchPreviousPageError = createStore(false, {\n ...sidConfig(name, '$isFetchPreviousPageError'),\n }).on(isFetchPreviousPageErrorUpdated, (_, v) => v)\n\n const fetchNextPage = createEvent<void>()\n const fetchPreviousPage = createEvent<void>()\n\n return {\n stores: {\n $hasNextPage,\n $hasPreviousPage,\n $isFetchingNextPage,\n $isFetchingPreviousPage,\n $isFetchNextPageError,\n $isFetchPreviousPageError,\n fetchNextPage,\n fetchPreviousPage,\n },\n // Wire fetchNextPage / fetchPreviousPage as scope-aware effects via\n // attach over $observer — same pattern as the rest of createBaseQuery.\n setupEffects: ({ $observer }) => {\n const fetchNextPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchNextPage()\n },\n })\n sample({ clock: fetchNextPage, target: fetchNextPageFx })\n\n const fetchPreviousPageFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.fetchPreviousPage()\n },\n })\n sample({ clock: fetchPreviousPage, target: fetchPreviousPageFx })\n },\n bindDispatcher: () => {\n const dispatchHasNextPage = scopeBind(hasNextPageUpdated, {\n safe: true,\n })\n const dispatchHasPreviousPage = scopeBind(hasPreviousPageUpdated, {\n safe: true,\n })\n const dispatchIsFetchingNextPage = scopeBind(\n isFetchingNextPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchingPreviousPage = scopeBind(\n isFetchingPreviousPageUpdated,\n { safe: true },\n )\n const dispatchIsFetchNextPageError = scopeBind(\n isFetchNextPageErrorUpdated,\n { safe: true },\n )\n const dispatchIsFetchPreviousPageError = scopeBind(\n isFetchPreviousPageErrorUpdated,\n { safe: true },\n )\n\n return (result) => {\n dispatchHasNextPage(result.hasNextPage)\n dispatchHasPreviousPage(result.hasPreviousPage)\n dispatchIsFetchingNextPage(result.isFetchingNextPage)\n dispatchIsFetchingPreviousPage(result.isFetchingPreviousPage)\n dispatchIsFetchNextPageError(result.isFetchNextPageError)\n dispatchIsFetchPreviousPageError(result.isFetchPreviousPageError)\n }\n },\n }\n },\n },\n )\n\n // See createQuery.prefetch — same contract, but uses fetchInfiniteQuery so\n // the first page is fetched + cached on the server.\n const prefetch = createEvent<void>()\n const prefetchFx = attach({\n source: {\n qc: base.$queryClient,\n key: base.$resolvedKey,\n enabled: base.$enabled,\n },\n effect: ({ qc, key, enabled }) => {\n if (!qc || !enabled) return\n return qc.fetchInfiniteQuery({\n ...restOptions,\n queryKey: key,\n } as any)\n },\n })\n sample({ clock: prefetch, target: prefetchFx })\n\n const result: InfiniteQueryResult<TData, TError, TPageParam> = {\n $data: base.$data,\n $error: base.$error,\n $status: base.$status,\n $isPending: base.$isPending,\n $isFetching: base.$isFetching,\n $isSuccess: base.$isSuccess,\n $isError: base.$isError,\n $isPlaceholderData: base.$isPlaceholderData,\n $fetchStatus: base.$fetchStatus,\n $hasNextPage: base.$hasNextPage,\n $hasPreviousPage: base.$hasPreviousPage,\n $isFetchingNextPage: base.$isFetchingNextPage,\n $isFetchingPreviousPage: base.$isFetchingPreviousPage,\n $isFetchNextPageError: base.$isFetchNextPageError,\n $isFetchPreviousPageError: base.$isFetchPreviousPageError,\n $observer: base.$observer,\n $queryClient: base.$queryClient,\n fetchNextPage: base.fetchNextPage,\n fetchPreviousPage: base.fetchPreviousPage,\n refresh: base.refresh,\n prefetch,\n mounted: base.mounted,\n unmounted: base.unmounted,\n finished: base.finished,\n }\n\n Object.defineProperty(result, '__createObserver', {\n enumerable: false,\n value: (qc: QueryClient, init: { queryKey: any; enabled: boolean }) =>\n new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n TData,\n QueryKey,\n TPageParam\n >(qc, {\n ...restOptions,\n queryKey: init.queryKey,\n enabled: init.enabled,\n } as any),\n })\n Object.defineProperty(result, '__resolvedKey', {\n enumerable: false,\n value: base.$resolvedKey,\n })\n Object.defineProperty(result, '__enabled', {\n enumerable: false,\n value: base.$enabled,\n })\n\n return result\n}\n\nfunction parseInfiniteArgs<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey extends EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n arg2?: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n): [\n QueryClient | null,\n CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n TQueryKey\n >,\n ]\n}\n"]}
|
package/dist/createQuery.cjs
CHANGED
|
@@ -63,7 +63,8 @@ function createQuery(arg1, arg2) {
|
|
|
63
63
|
refresh: base.refresh,
|
|
64
64
|
prefetch,
|
|
65
65
|
mounted: base.mounted,
|
|
66
|
-
unmounted: base.unmounted
|
|
66
|
+
unmounted: base.unmounted,
|
|
67
|
+
finished: base.finished
|
|
67
68
|
};
|
|
68
69
|
Object.defineProperty(result, "__createObserver", {
|
|
69
70
|
enumerable: false,
|
package/dist/createQuery.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createQuery.ts"],"names":["warnMissingName","resolveReactiveRefetchInterval","createBaseQuery","QueryObserver","createEvent","attach","enabled","sample"],"mappings":";;;;;;;;AA4BO,SAAS,WAAA,CAMd,MAGA,IAAA,EAC4B;AAC5B,EAAA,MAAM,CAAC,cAAA,EAAgB,OAAO,CAAA,GAAI,cAAA,CAKhC,MAAM,IAAI,CAAA;AACZ,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,GAAG,aAAY,GAAI,OAAA;AAEpD,EAAA,IAAI,CAAC,IAAA,EAAMA,mCAAA,CAAgB,aAAa,CAAA;AAKxC,EAAA,MAAM,uBAAA,GAA0BC,0CAAA;AAAA,IAC7B,WAAA,CAA8C;AAAA,GACjD;AACA,EAAA,IAAI,uBAAA,EAAyB;AAC3B,IAAA,OAAQ,WAAA,CAA8C,eAAA;AAAA,EACxD;AAEA,EAAA,MAAM,IAAA,GAAOC,mCAAA;AAAA,IAMX,cAAA;AAAA,IACA,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,uBAAA,EAAwB;AAAA,IACnD;AAAA,MACE,gBAAgB,CAAC,EAAA,EAAI,EAAE,QAAA,EAAU,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA;AAAA;AAAA;AAAA,QAIvD,IAAIC,wBAA2C,EAAA,EAAI;AAAA,UACjD,GAAG,WAAA;AAAA,UACH,QAAA,EAAU,GAAA;AAAA,UACV,OAAA,EAAS;AAAA,SACH;AAAA;AAAA;AACZ,GACF;AAQA,EAAA,MAAM,WAAWC,oBAAA,EAAkB;AACnC,EAAA,MAAM,aAAaC,eAAA,CAAO;AAAA,IACxB,MAAA,EAAQ;AAAA,MACN,IAAI,IAAA,CAAK,YAAA;AAAA,MACT,KAAK,IAAA,CAAK,YAAA;AAAA,MACV,SAAS,IAAA,CAAK;AAAA,KAChB;AAAA,IACA,QAAQ,CAAC,EAAE,IAAI,GAAA,EAAK,OAAA,EAAAC,UAAQ,KAAM;AAChC,MAAA,IAAI,CAAC,EAAA,IAAM,CAACA,QAAAA,EAAS;AACrB,MAAA,OAAO,GAAG,UAAA,CAAW;AAAA,QACnB,GAAG,WAAA;AAAA,QACH,QAAA,EAAU;AAAA,OACJ,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AACD,EAAAC,eAAA,CAAO,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,YAAY,CAAA;AAM9C,EAAA,MAAM,MAAA,GAAqC;AAAA,IACzC,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,oBAAoB,IAAA,CAAK,kBAAA;AAAA,IACzB,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,WAAW,IAAA,CAAK,SAAA;AAAA,IAIhB,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,QAAA;AAAA,IACA,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,WAAW,IAAA,CAAK;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/createQuery.ts"],"names":["warnMissingName","resolveReactiveRefetchInterval","createBaseQuery","QueryObserver","createEvent","attach","enabled","sample"],"mappings":"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","file":"createQuery.cjs","sourcesContent":["import { attach, createEvent, sample } from 'effector'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { QueryClient } from '@tanstack/query-core'\nimport { createBaseQuery, warnMissingName } from './createBaseQuery'\nimport { resolveReactiveRefetchInterval } from './resolve'\nimport type {\n CreateQueryOptions,\n EffectorQueryKey,\n QueryResult,\n} from './types'\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n queryClient: QueryClient,\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryResult<TData, TError> {\n const [explicitClient, options] = parseQueryArgs<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >(arg1, arg2)\n const { queryKey, enabled, name, ...restOptions } = options\n\n if (!name) warnMissingName('createQuery')\n\n // If `refetchInterval` is a Store, pull it out for reactive wiring in\n // createBaseQuery — otherwise leave it in restOptions for the observer\n // constructor (handles plain values and function forms unchanged).\n const reactiveRefetchInterval = resolveReactiveRefetchInterval(\n (restOptions as { refetchInterval?: unknown }).refetchInterval,\n )\n if (reactiveRefetchInterval) {\n delete (restOptions as { refetchInterval?: unknown }).refetchInterval\n }\n\n const base = createBaseQuery<\n TData,\n TError,\n ReturnType<QueryObserver<TQueryFnData, TError, TData>['getCurrentResult']>,\n QueryObserver<TQueryFnData, TError, TData>\n >(\n explicitClient,\n { queryKey, enabled, name, reactiveRefetchInterval },\n {\n createObserver: (qc, { queryKey: key, enabled: isEnabled }) =>\n // Cast: restOptions's `refetchInterval` may still type as\n // `Store | number | false | fn`; the Store form is deleted at runtime\n // above, but TS can't narrow that here.\n new QueryObserver<TQueryFnData, TError, TData>(qc, {\n ...restOptions,\n queryKey: key,\n enabled: isEnabled,\n } as any),\n },\n )\n\n // Prefetch event: drives `queryClient.fetchQuery` directly (no Observer)\n // and **awaits** the result, so `allSettled(query.prefetch, { scope })` on\n // the server returns only after the cache has the data. Unlike `mounted`,\n // which kicks off a background subscription and resolves immediately, this\n // is the right primitive for SSR / route loaders. The current resolved key\n // + enabled is read from the scope via attach — reactive keys work.\n const prefetch = createEvent<void>()\n const prefetchFx = attach({\n source: {\n qc: base.$queryClient,\n key: base.$resolvedKey,\n enabled: base.$enabled,\n },\n effect: ({ qc, key, enabled }) => {\n if (!qc || !enabled) return\n return qc.fetchQuery({\n ...restOptions,\n queryKey: key,\n } as any)\n },\n })\n sample({ clock: prefetch, target: prefetchFx })\n\n // Lazy `observer` field for backward compatibility — returns the\n // default-scope observer (non-fork). Tests and advanced consumers that read\n // `query.observer` after `query.mounted()` see the live observer. For\n // fork-aware consumers, use `query.$observer` via `useUnit`.\n const result: QueryResult<TData, TError> = {\n $data: base.$data,\n $error: base.$error,\n $status: base.$status,\n $isPending: base.$isPending,\n $isFetching: base.$isFetching,\n $isSuccess: base.$isSuccess,\n $isError: base.$isError,\n $isPlaceholderData: base.$isPlaceholderData,\n $fetchStatus: base.$fetchStatus,\n $observer: base.$observer as unknown as QueryResult<\n TData,\n TError\n >['$observer'],\n $queryClient: base.$queryClient,\n refresh: base.refresh,\n prefetch,\n mounted: base.mounted,\n unmounted: base.unmounted,\n finished: base.finished,\n }\n\n // Internal: used by useSuspenseQuery to construct a transient observer\n // when the suspense hook renders before mountFx has populated the scope's\n // $observer (mountFx runs from useEffect, which is skipped while\n // suspended). Not part of the public API; not in TS types.\n Object.defineProperty(result, '__createObserver', {\n enumerable: false,\n value: (qc: QueryClient, init: { queryKey: any; enabled: boolean }) =>\n new QueryObserver<TQueryFnData, TError, TData>(qc, {\n ...restOptions,\n queryKey: init.queryKey,\n enabled: init.enabled,\n } as any),\n })\n Object.defineProperty(result, '__resolvedKey', {\n enumerable: false,\n value: base.$resolvedKey,\n })\n Object.defineProperty(result, '__enabled', {\n enumerable: false,\n value: base.$enabled,\n })\n\n return result\n}\n\nfunction parseQueryArgs<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): [\n QueryClient | null,\n CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ]\n}\n"]}
|
package/dist/createQuery.js
CHANGED
|
@@ -61,7 +61,8 @@ function createQuery(arg1, arg2) {
|
|
|
61
61
|
refresh: base.refresh,
|
|
62
62
|
prefetch,
|
|
63
63
|
mounted: base.mounted,
|
|
64
|
-
unmounted: base.unmounted
|
|
64
|
+
unmounted: base.unmounted,
|
|
65
|
+
finished: base.finished
|
|
65
66
|
};
|
|
66
67
|
Object.defineProperty(result, "__createObserver", {
|
|
67
68
|
enumerable: false,
|
package/dist/createQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createQuery.ts"],"names":["enabled"],"mappings":";;;;;;AA4BO,SAAS,WAAA,CAMd,MAGA,IAAA,EAC4B;AAC5B,EAAA,MAAM,CAAC,cAAA,EAAgB,OAAO,CAAA,GAAI,cAAA,CAKhC,MAAM,IAAI,CAAA;AACZ,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,GAAG,aAAY,GAAI,OAAA;AAEpD,EAAA,IAAI,CAAC,IAAA,EAAM,eAAA,CAAgB,aAAa,CAAA;AAKxC,EAAA,MAAM,uBAAA,GAA0B,8BAAA;AAAA,IAC7B,WAAA,CAA8C;AAAA,GACjD;AACA,EAAA,IAAI,uBAAA,EAAyB;AAC3B,IAAA,OAAQ,WAAA,CAA8C,eAAA;AAAA,EACxD;AAEA,EAAA,MAAM,IAAA,GAAO,eAAA;AAAA,IAMX,cAAA;AAAA,IACA,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,uBAAA,EAAwB;AAAA,IACnD;AAAA,MACE,gBAAgB,CAAC,EAAA,EAAI,EAAE,QAAA,EAAU,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA;AAAA;AAAA;AAAA,QAIvD,IAAI,cAA2C,EAAA,EAAI;AAAA,UACjD,GAAG,WAAA;AAAA,UACH,QAAA,EAAU,GAAA;AAAA,UACV,OAAA,EAAS;AAAA,SACH;AAAA;AAAA;AACZ,GACF;AAQA,EAAA,MAAM,WAAW,WAAA,EAAkB;AACnC,EAAA,MAAM,aAAa,MAAA,CAAO;AAAA,IACxB,MAAA,EAAQ;AAAA,MACN,IAAI,IAAA,CAAK,YAAA;AAAA,MACT,KAAK,IAAA,CAAK,YAAA;AAAA,MACV,SAAS,IAAA,CAAK;AAAA,KAChB;AAAA,IACA,QAAQ,CAAC,EAAE,IAAI,GAAA,EAAK,OAAA,EAAAA,UAAQ,KAAM;AAChC,MAAA,IAAI,CAAC,EAAA,IAAM,CAACA,QAAAA,EAAS;AACrB,MAAA,OAAO,GAAG,UAAA,CAAW;AAAA,QACnB,GAAG,WAAA;AAAA,QACH,QAAA,EAAU;AAAA,OACJ,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AACD,EAAA,MAAA,CAAO,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,YAAY,CAAA;AAM9C,EAAA,MAAM,MAAA,GAAqC;AAAA,IACzC,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,oBAAoB,IAAA,CAAK,kBAAA;AAAA,IACzB,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,WAAW,IAAA,CAAK,SAAA;AAAA,IAIhB,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,QAAA;AAAA,IACA,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,WAAW,IAAA,CAAK;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/createQuery.ts"],"names":["enabled"],"mappings":"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","file":"createQuery.js","sourcesContent":["import { attach, createEvent, sample } from 'effector'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { QueryClient } from '@tanstack/query-core'\nimport { createBaseQuery, warnMissingName } from './createBaseQuery'\nimport { resolveReactiveRefetchInterval } from './resolve'\nimport type {\n CreateQueryOptions,\n EffectorQueryKey,\n QueryResult,\n} from './types'\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n queryClient: QueryClient,\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n const TQueryKey extends EffectorQueryKey = EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryResult<TData, TError> {\n const [explicitClient, options] = parseQueryArgs<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >(arg1, arg2)\n const { queryKey, enabled, name, ...restOptions } = options\n\n if (!name) warnMissingName('createQuery')\n\n // If `refetchInterval` is a Store, pull it out for reactive wiring in\n // createBaseQuery — otherwise leave it in restOptions for the observer\n // constructor (handles plain values and function forms unchanged).\n const reactiveRefetchInterval = resolveReactiveRefetchInterval(\n (restOptions as { refetchInterval?: unknown }).refetchInterval,\n )\n if (reactiveRefetchInterval) {\n delete (restOptions as { refetchInterval?: unknown }).refetchInterval\n }\n\n const base = createBaseQuery<\n TData,\n TError,\n ReturnType<QueryObserver<TQueryFnData, TError, TData>['getCurrentResult']>,\n QueryObserver<TQueryFnData, TError, TData>\n >(\n explicitClient,\n { queryKey, enabled, name, reactiveRefetchInterval },\n {\n createObserver: (qc, { queryKey: key, enabled: isEnabled }) =>\n // Cast: restOptions's `refetchInterval` may still type as\n // `Store | number | false | fn`; the Store form is deleted at runtime\n // above, but TS can't narrow that here.\n new QueryObserver<TQueryFnData, TError, TData>(qc, {\n ...restOptions,\n queryKey: key,\n enabled: isEnabled,\n } as any),\n },\n )\n\n // Prefetch event: drives `queryClient.fetchQuery` directly (no Observer)\n // and **awaits** the result, so `allSettled(query.prefetch, { scope })` on\n // the server returns only after the cache has the data. Unlike `mounted`,\n // which kicks off a background subscription and resolves immediately, this\n // is the right primitive for SSR / route loaders. The current resolved key\n // + enabled is read from the scope via attach — reactive keys work.\n const prefetch = createEvent<void>()\n const prefetchFx = attach({\n source: {\n qc: base.$queryClient,\n key: base.$resolvedKey,\n enabled: base.$enabled,\n },\n effect: ({ qc, key, enabled }) => {\n if (!qc || !enabled) return\n return qc.fetchQuery({\n ...restOptions,\n queryKey: key,\n } as any)\n },\n })\n sample({ clock: prefetch, target: prefetchFx })\n\n // Lazy `observer` field for backward compatibility — returns the\n // default-scope observer (non-fork). Tests and advanced consumers that read\n // `query.observer` after `query.mounted()` see the live observer. For\n // fork-aware consumers, use `query.$observer` via `useUnit`.\n const result: QueryResult<TData, TError> = {\n $data: base.$data,\n $error: base.$error,\n $status: base.$status,\n $isPending: base.$isPending,\n $isFetching: base.$isFetching,\n $isSuccess: base.$isSuccess,\n $isError: base.$isError,\n $isPlaceholderData: base.$isPlaceholderData,\n $fetchStatus: base.$fetchStatus,\n $observer: base.$observer as unknown as QueryResult<\n TData,\n TError\n >['$observer'],\n $queryClient: base.$queryClient,\n refresh: base.refresh,\n prefetch,\n mounted: base.mounted,\n unmounted: base.unmounted,\n finished: base.finished,\n }\n\n // Internal: used by useSuspenseQuery to construct a transient observer\n // when the suspense hook renders before mountFx has populated the scope's\n // $observer (mountFx runs from useEffect, which is skipped while\n // suspended). Not part of the public API; not in TS types.\n Object.defineProperty(result, '__createObserver', {\n enumerable: false,\n value: (qc: QueryClient, init: { queryKey: any; enabled: boolean }) =>\n new QueryObserver<TQueryFnData, TError, TData>(qc, {\n ...restOptions,\n queryKey: init.queryKey,\n enabled: init.enabled,\n } as any),\n })\n Object.defineProperty(result, '__resolvedKey', {\n enumerable: false,\n value: base.$resolvedKey,\n })\n Object.defineProperty(result, '__enabled', {\n enumerable: false,\n value: base.$enabled,\n })\n\n return result\n}\n\nfunction parseQueryArgs<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends EffectorQueryKey,\n>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): [\n QueryClient | null,\n CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ]\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,7 @@ var createInfiniteQuery_cjs = require('./createInfiniteQuery.cjs');
|
|
|
5
5
|
var createQueries_cjs = require('./createQueries.cjs');
|
|
6
6
|
var createMutation_cjs = require('./createMutation.cjs');
|
|
7
7
|
var createInvalidate_cjs = require('./createInvalidate.cjs');
|
|
8
|
+
var createCacheAction_cjs = require('./createCacheAction.cjs');
|
|
8
9
|
var queryClient_cjs = require('./queryClient.cjs');
|
|
9
10
|
var prefetchQueries_cjs = require('./prefetchQueries.cjs');
|
|
10
11
|
|
|
@@ -30,6 +31,18 @@ Object.defineProperty(exports, "createInvalidate", {
|
|
|
30
31
|
enumerable: true,
|
|
31
32
|
get: function () { return createInvalidate_cjs.createInvalidate; }
|
|
32
33
|
});
|
|
34
|
+
Object.defineProperty(exports, "createCancel", {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: function () { return createCacheAction_cjs.createCancel; }
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "createRemove", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () { return createCacheAction_cjs.createRemove; }
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "createReset", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () { return createCacheAction_cjs.createReset; }
|
|
45
|
+
});
|
|
33
46
|
Object.defineProperty(exports, "$queryClient", {
|
|
34
47
|
enumerable: true,
|
|
35
48
|
get: function () { return queryClient_cjs.$queryClient; }
|
package/dist/index.d.cts
CHANGED
|
@@ -3,6 +3,7 @@ export { createInfiniteQuery } from './createInfiniteQuery.cjs';
|
|
|
3
3
|
export { createQueries } from './createQueries.cjs';
|
|
4
4
|
export { createMutation } from './createMutation.cjs';
|
|
5
5
|
export { CreateInvalidateOptions, createInvalidate } from './createInvalidate.cjs';
|
|
6
|
+
export { CacheActionOptions, CreateCancelOptions, CreateRemoveOptions, CreateResetOptions, createCancel, createRemove, createReset } from './createCacheAction.cjs';
|
|
6
7
|
export { $queryClient, setQueryClient } from './queryClient.cjs';
|
|
7
8
|
export { PrefetchQueriesConfig, PrefetchableQuery, prefetchQueries } from './prefetchQueries.cjs';
|
|
8
9
|
export { CreateInfiniteQueryOptions, CreateMutationOptions, CreateQueriesItemOptions, CreateQueriesOptions, CreateQueryOptions, EffectorQueryKey, InfiniteQueryResult, MutationResult, MutationStatus, QueriesResult, QueryItemState, QueryResult, StoreOrValue } from './types.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { createInfiniteQuery } from './createInfiniteQuery.js';
|
|
|
3
3
|
export { createQueries } from './createQueries.js';
|
|
4
4
|
export { createMutation } from './createMutation.js';
|
|
5
5
|
export { CreateInvalidateOptions, createInvalidate } from './createInvalidate.js';
|
|
6
|
+
export { CacheActionOptions, CreateCancelOptions, CreateRemoveOptions, CreateResetOptions, createCancel, createRemove, createReset } from './createCacheAction.js';
|
|
6
7
|
export { $queryClient, setQueryClient } from './queryClient.js';
|
|
7
8
|
export { PrefetchQueriesConfig, PrefetchableQuery, prefetchQueries } from './prefetchQueries.js';
|
|
8
9
|
export { CreateInfiniteQueryOptions, CreateMutationOptions, CreateQueriesItemOptions, CreateQueriesOptions, CreateQueryOptions, EffectorQueryKey, InfiniteQueryResult, MutationResult, MutationStatus, QueriesResult, QueryItemState, QueryResult, StoreOrValue } from './types.js';
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { createInfiniteQuery } from './createInfiniteQuery.js';
|
|
|
3
3
|
export { createQueries } from './createQueries.js';
|
|
4
4
|
export { createMutation } from './createMutation.js';
|
|
5
5
|
export { createInvalidate } from './createInvalidate.js';
|
|
6
|
+
export { createCancel, createRemove, createReset } from './createCacheAction.js';
|
|
6
7
|
export { $queryClient, setQueryClient } from './queryClient.js';
|
|
7
8
|
export { prefetchQueries } from './prefetchQueries.js';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/dist/types.d.cts
CHANGED
|
@@ -118,6 +118,30 @@ interface QueryResult<TData, TError = Error> {
|
|
|
118
118
|
* `$queryClient` and honors `fork({ values: [[$queryClient, qc]] })`.
|
|
119
119
|
*/
|
|
120
120
|
$queryClient: Store<QueryClient | null>;
|
|
121
|
+
/**
|
|
122
|
+
* Lifecycle events for `sample`-driven reactions to fetch completion.
|
|
123
|
+
*
|
|
124
|
+
* - `success` fires with the (post-`select`) data on every newly-finished
|
|
125
|
+
* successful fetch — fresh fetch, refetch, reactive key change, or a
|
|
126
|
+
* cross-scope `setQueryData`.
|
|
127
|
+
* - `failure` fires with the error on every failed fetch.
|
|
128
|
+
*
|
|
129
|
+
* Neither fires for the baseline state observed on `mounted()` (e.g.
|
|
130
|
+
* SSR-hydrated cache data) — the events track *new* fetches, not the
|
|
131
|
+
* initial observation. Each fork scope tracks its own baseline.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* sample({ clock: userQuery.finished.success, target: loadSettings })
|
|
135
|
+
* sample({
|
|
136
|
+
* clock: userQuery.finished.failure,
|
|
137
|
+
* fn: (err) => `Failed: ${err.message}`,
|
|
138
|
+
* target: showToast,
|
|
139
|
+
* })
|
|
140
|
+
*/
|
|
141
|
+
finished: {
|
|
142
|
+
success: Event<TData>;
|
|
143
|
+
failure: Event<TError>;
|
|
144
|
+
};
|
|
121
145
|
}
|
|
122
146
|
interface CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = Error, TPageParam = unknown, TData = InfiniteData<TQueryFnData, TPageParam>, TQueryKey extends EffectorQueryKey = EffectorQueryKey> extends Omit<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, ResolvedQueryKey<TQueryKey>, TPageParam>, 'queryKey' | 'enabled' | 'refetchInterval'> {
|
|
123
147
|
queryKey: TQueryKey;
|
|
@@ -158,6 +182,11 @@ interface InfiniteQueryResult<TData, TError = Error, TPageParam = unknown> {
|
|
|
158
182
|
$observer: Store<InfiniteQueryObserver<any, TError, TData, QueryKey, TPageParam> | null>;
|
|
159
183
|
/** See {@link QueryResult.$queryClient}. */
|
|
160
184
|
$queryClient: Store<QueryClient | null>;
|
|
185
|
+
/** See {@link QueryResult.finished}. */
|
|
186
|
+
finished: {
|
|
187
|
+
success: Event<TData>;
|
|
188
|
+
failure: Event<TError>;
|
|
189
|
+
};
|
|
161
190
|
}
|
|
162
191
|
type CreateMutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown> = MutationObserverOptions<TData, TError, TVariables, TOnMutateResult> & {
|
|
163
192
|
/** See {@link CreateQueryOptions.name}. */
|
package/dist/types.d.ts
CHANGED
|
@@ -118,6 +118,30 @@ interface QueryResult<TData, TError = Error> {
|
|
|
118
118
|
* `$queryClient` and honors `fork({ values: [[$queryClient, qc]] })`.
|
|
119
119
|
*/
|
|
120
120
|
$queryClient: Store<QueryClient | null>;
|
|
121
|
+
/**
|
|
122
|
+
* Lifecycle events for `sample`-driven reactions to fetch completion.
|
|
123
|
+
*
|
|
124
|
+
* - `success` fires with the (post-`select`) data on every newly-finished
|
|
125
|
+
* successful fetch — fresh fetch, refetch, reactive key change, or a
|
|
126
|
+
* cross-scope `setQueryData`.
|
|
127
|
+
* - `failure` fires with the error on every failed fetch.
|
|
128
|
+
*
|
|
129
|
+
* Neither fires for the baseline state observed on `mounted()` (e.g.
|
|
130
|
+
* SSR-hydrated cache data) — the events track *new* fetches, not the
|
|
131
|
+
* initial observation. Each fork scope tracks its own baseline.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* sample({ clock: userQuery.finished.success, target: loadSettings })
|
|
135
|
+
* sample({
|
|
136
|
+
* clock: userQuery.finished.failure,
|
|
137
|
+
* fn: (err) => `Failed: ${err.message}`,
|
|
138
|
+
* target: showToast,
|
|
139
|
+
* })
|
|
140
|
+
*/
|
|
141
|
+
finished: {
|
|
142
|
+
success: Event<TData>;
|
|
143
|
+
failure: Event<TError>;
|
|
144
|
+
};
|
|
121
145
|
}
|
|
122
146
|
interface CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = Error, TPageParam = unknown, TData = InfiniteData<TQueryFnData, TPageParam>, TQueryKey extends EffectorQueryKey = EffectorQueryKey> extends Omit<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, ResolvedQueryKey<TQueryKey>, TPageParam>, 'queryKey' | 'enabled' | 'refetchInterval'> {
|
|
123
147
|
queryKey: TQueryKey;
|
|
@@ -158,6 +182,11 @@ interface InfiniteQueryResult<TData, TError = Error, TPageParam = unknown> {
|
|
|
158
182
|
$observer: Store<InfiniteQueryObserver<any, TError, TData, QueryKey, TPageParam> | null>;
|
|
159
183
|
/** See {@link QueryResult.$queryClient}. */
|
|
160
184
|
$queryClient: Store<QueryClient | null>;
|
|
185
|
+
/** See {@link QueryResult.finished}. */
|
|
186
|
+
finished: {
|
|
187
|
+
success: Event<TData>;
|
|
188
|
+
failure: Event<TError>;
|
|
189
|
+
};
|
|
161
190
|
}
|
|
162
191
|
type CreateMutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown> = MutationObserverOptions<TData, TError, TVariables, TOnMutateResult> & {
|
|
163
192
|
/** See {@link CreateQueryOptions.name}. */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effector-tanstack-query/core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Effector bindings for TanStack Query — core factories (createQuery, createMutation, createInfiniteQuery, createQueries)",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Effector bindings for TanStack Query — core factories (createQuery, createMutation, createInfiniteQuery, createQueries) plus invalidate / cancel / remove / reset cache actions",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ilya Agarkov <ilya.al.ag@gmail.com>",
|
|
7
7
|
"repository": {
|
|
@@ -43,10 +43,11 @@
|
|
|
43
43
|
"!src/__tests__"
|
|
44
44
|
],
|
|
45
45
|
"sideEffects": false,
|
|
46
|
-
"
|
|
46
|
+
"devDependencies": {
|
|
47
47
|
"@tanstack/query-core": "^5.100.10"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
+
"@tanstack/query-core": "^5.0.0",
|
|
50
51
|
"effector": ">=23.0.0"
|
|
51
52
|
},
|
|
52
53
|
"scripts": {
|