@effector-tanstack-query/core 0.1.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/README.md +40 -0
- package/dist/createBaseQuery.cjs +208 -0
- package/dist/createBaseQuery.cjs.map +1 -0
- package/dist/createBaseQuery.d.cts +114 -0
- package/dist/createBaseQuery.d.ts +114 -0
- package/dist/createBaseQuery.js +204 -0
- package/dist/createBaseQuery.js.map +1 -0
- package/dist/createInfiniteQuery.cjs +193 -0
- package/dist/createInfiniteQuery.cjs.map +1 -0
- package/dist/createInfiniteQuery.d.cts +8 -0
- package/dist/createInfiniteQuery.d.ts +8 -0
- package/dist/createInfiniteQuery.js +191 -0
- package/dist/createInfiniteQuery.js.map +1 -0
- package/dist/createInvalidate.cjs +37 -0
- package/dist/createInvalidate.cjs.map +1 -0
- package/dist/createInvalidate.d.cts +50 -0
- package/dist/createInvalidate.d.ts +50 -0
- package/dist/createInvalidate.js +35 -0
- package/dist/createInvalidate.js.map +1 -0
- package/dist/createMutation.cjs +177 -0
- package/dist/createMutation.cjs.map +1 -0
- package/dist/createMutation.d.cts +7 -0
- package/dist/createMutation.d.ts +7 -0
- package/dist/createMutation.js +175 -0
- package/dist/createMutation.js.map +1 -0
- package/dist/createQuery.cjs +98 -0
- package/dist/createQuery.cjs.map +1 -0
- package/dist/createQuery.d.cts +8 -0
- package/dist/createQuery.d.ts +8 -0
- package/dist/createQuery.js +96 -0
- package/dist/createQuery.js.map +1 -0
- package/dist/index.cjs +36 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/queryClient.cjs +20 -0
- package/dist/queryClient.cjs.map +1 -0
- package/dist/queryClient.d.cts +15 -0
- package/dist/queryClient.d.ts +15 -0
- package/dist/queryClient.js +17 -0
- package/dist/queryClient.js.map +1 -0
- package/dist/resolve.cjs +37 -0
- package/dist/resolve.cjs.map +1 -0
- package/dist/resolve.d.cts +17 -0
- package/dist/resolve.d.ts +17 -0
- package/dist/resolve.js +33 -0
- package/dist/resolve.js.map +1 -0
- package/dist/types.cjs +4 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +209 -0
- package/dist/types.d.ts +209 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
- package/src/createBaseQuery.ts +428 -0
- package/src/createInfiniteQuery.ts +291 -0
- package/src/createInvalidate.ts +104 -0
- package/src/createMutation.ts +271 -0
- package/src/createQuery.ts +155 -0
- package/src/index.ts +17 -0
- package/src/queryClient.ts +23 -0
- package/src/resolve.ts +50 -0
- package/src/types.ts +270 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
2
|
+
import { CreateMutationOptions, MutationResult } from './types.js';
|
|
3
|
+
import 'effector';
|
|
4
|
+
|
|
5
|
+
declare function createMutation<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(arg1: QueryClient | CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, arg2?: CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>): MutationResult<TData, TError, TVariables>;
|
|
6
|
+
|
|
7
|
+
export { createMutation };
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { createStore, createEvent, attach, scopeBind, sample } from 'effector';
|
|
2
|
+
import { MutationObserver } from '@tanstack/query-core';
|
|
3
|
+
import { $queryClient } from './queryClient.js';
|
|
4
|
+
import { warnMissingName, sidConfig } from './createBaseQuery.js';
|
|
5
|
+
|
|
6
|
+
// src/createMutation.ts
|
|
7
|
+
function createMutation(arg1, arg2) {
|
|
8
|
+
const [explicitClient, options] = parseMutationArgs(arg1, arg2);
|
|
9
|
+
const { name, ...observerOptions } = options;
|
|
10
|
+
if (!name) warnMissingName("createMutation");
|
|
11
|
+
const $effectiveClient = explicitClient ? createStore(explicitClient, {
|
|
12
|
+
serialize: "ignore"
|
|
13
|
+
}) : $queryClient;
|
|
14
|
+
const dataUpdated = createEvent();
|
|
15
|
+
const errorUpdated = createEvent();
|
|
16
|
+
const statusUpdated = createEvent();
|
|
17
|
+
const variablesUpdated = createEvent();
|
|
18
|
+
const isPausedUpdated = createEvent();
|
|
19
|
+
const finishedSuccess = createEvent();
|
|
20
|
+
const finishedFailure = createEvent();
|
|
21
|
+
const $data = createStore(void 0, {
|
|
22
|
+
skipVoid: false,
|
|
23
|
+
...sidConfig(name, "$data")
|
|
24
|
+
}).on(dataUpdated, (_, v) => v);
|
|
25
|
+
const $error = createStore(null, {
|
|
26
|
+
skipVoid: false,
|
|
27
|
+
...sidConfig(name, "$error")
|
|
28
|
+
}).on(errorUpdated, (_, v) => v);
|
|
29
|
+
const $status = createStore("idle", {
|
|
30
|
+
...sidConfig(name, "$status")
|
|
31
|
+
}).on(statusUpdated, (_, v) => v);
|
|
32
|
+
const $variables = createStore(void 0, {
|
|
33
|
+
skipVoid: false,
|
|
34
|
+
...sidConfig(name, "$variables")
|
|
35
|
+
}).on(variablesUpdated, (_, v) => v);
|
|
36
|
+
const $isPaused = createStore(false, {
|
|
37
|
+
...sidConfig(name, "$isPaused")
|
|
38
|
+
}).on(isPausedUpdated, (_, v) => v);
|
|
39
|
+
const $isPending = $status.map((s) => s === "pending");
|
|
40
|
+
const $isSuccess = $status.map((s) => s === "success");
|
|
41
|
+
const $isError = $status.map((s) => s === "error");
|
|
42
|
+
const $isIdle = $status.map((s) => s === "idle");
|
|
43
|
+
const $observer = createStore(null, {
|
|
44
|
+
serialize: "ignore"
|
|
45
|
+
});
|
|
46
|
+
const observerCreated = createEvent();
|
|
47
|
+
$observer.on(observerCreated, (_, obs) => obs);
|
|
48
|
+
const observerSubscriptions = /* @__PURE__ */ new WeakMap();
|
|
49
|
+
const start = createEvent();
|
|
50
|
+
const unmounted = createEvent();
|
|
51
|
+
const startFx = attach({
|
|
52
|
+
source: { qc: $effectiveClient, observer: $observer },
|
|
53
|
+
effect: ({ qc, observer: existingObserver }) => {
|
|
54
|
+
if (!qc) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
"[@tanstack/query-effector] No QueryClient is set for createMutation. Call setQueryClient(qc) before start, pass it to fork({ values: [[$queryClient, qc]] }), or pass it explicitly to the factory."
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
const observer = existingObserver ?? new MutationObserver(
|
|
60
|
+
qc,
|
|
61
|
+
observerOptions
|
|
62
|
+
);
|
|
63
|
+
const dispatchData = scopeBind(dataUpdated, { safe: true });
|
|
64
|
+
const dispatchError = scopeBind(errorUpdated, { safe: true });
|
|
65
|
+
const dispatchStatus = scopeBind(statusUpdated, { safe: true });
|
|
66
|
+
const dispatchVariables = scopeBind(variablesUpdated, { safe: true });
|
|
67
|
+
const dispatchIsPaused = scopeBind(isPausedUpdated, { safe: true });
|
|
68
|
+
const dispatchFinishedSuccess = scopeBind(finishedSuccess, { safe: true });
|
|
69
|
+
const dispatchFinishedFailure = scopeBind(finishedFailure, { safe: true });
|
|
70
|
+
observerSubscriptions.get(observer)?.();
|
|
71
|
+
let prevStatus = "idle";
|
|
72
|
+
const unsubscribe = observer.subscribe((result) => {
|
|
73
|
+
dispatchData(result.data);
|
|
74
|
+
dispatchError(result.error);
|
|
75
|
+
dispatchStatus(result.status);
|
|
76
|
+
dispatchVariables(result.variables);
|
|
77
|
+
dispatchIsPaused(result.isPaused);
|
|
78
|
+
if (prevStatus === "pending") {
|
|
79
|
+
if (result.status === "success") {
|
|
80
|
+
dispatchFinishedSuccess({
|
|
81
|
+
params: result.variables,
|
|
82
|
+
result: result.data
|
|
83
|
+
});
|
|
84
|
+
} else if (result.status === "error") {
|
|
85
|
+
dispatchFinishedFailure({
|
|
86
|
+
params: result.variables,
|
|
87
|
+
error: result.error
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
prevStatus = result.status;
|
|
92
|
+
});
|
|
93
|
+
observerSubscriptions.set(observer, unsubscribe);
|
|
94
|
+
return observer;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
sample({ clock: start, target: startFx });
|
|
98
|
+
sample({ clock: startFx.doneData, target: observerCreated });
|
|
99
|
+
const unmountFx = attach({
|
|
100
|
+
source: $observer,
|
|
101
|
+
effect: (observer) => {
|
|
102
|
+
if (!observer) return;
|
|
103
|
+
observerSubscriptions.get(observer)?.();
|
|
104
|
+
observerSubscriptions.delete(observer);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
sample({ clock: unmounted, target: unmountFx });
|
|
108
|
+
const mutate = createEvent();
|
|
109
|
+
const mutateFx = attach({
|
|
110
|
+
source: $observer,
|
|
111
|
+
effect: (observer, variables) => {
|
|
112
|
+
if (!observer) return;
|
|
113
|
+
observer.mutate(variables).catch(() => {
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
sample({ clock: mutate, target: mutateFx });
|
|
118
|
+
const mutateWith = createEvent();
|
|
119
|
+
const mutateWithFx = attach({
|
|
120
|
+
source: $observer,
|
|
121
|
+
effect: (observer, {
|
|
122
|
+
variables,
|
|
123
|
+
...callbacks
|
|
124
|
+
}) => {
|
|
125
|
+
if (!observer) return;
|
|
126
|
+
observer.mutate(variables, callbacks).catch(() => {
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
sample({ clock: mutateWith, target: mutateWithFx });
|
|
131
|
+
const reset = createEvent();
|
|
132
|
+
const resetFx = attach({
|
|
133
|
+
source: $observer,
|
|
134
|
+
effect: (observer) => {
|
|
135
|
+
if (!observer) return;
|
|
136
|
+
observer.reset();
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
sample({ clock: reset, target: resetFx });
|
|
140
|
+
return {
|
|
141
|
+
$data,
|
|
142
|
+
$error,
|
|
143
|
+
$status,
|
|
144
|
+
$variables,
|
|
145
|
+
$isPaused,
|
|
146
|
+
$isPending,
|
|
147
|
+
$isSuccess,
|
|
148
|
+
$isError,
|
|
149
|
+
$isIdle,
|
|
150
|
+
$observer,
|
|
151
|
+
$queryClient: $effectiveClient,
|
|
152
|
+
mutate,
|
|
153
|
+
mutateWith,
|
|
154
|
+
reset,
|
|
155
|
+
start,
|
|
156
|
+
unmounted,
|
|
157
|
+
finished: {
|
|
158
|
+
success: finishedSuccess,
|
|
159
|
+
failure: finishedFailure
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function parseMutationArgs(arg1, arg2) {
|
|
164
|
+
if (arg2 !== void 0) {
|
|
165
|
+
return [arg1, arg2];
|
|
166
|
+
}
|
|
167
|
+
return [
|
|
168
|
+
null,
|
|
169
|
+
arg1
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export { createMutation };
|
|
174
|
+
//# sourceMappingURL=createMutation.js.map
|
|
175
|
+
//# sourceMappingURL=createMutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/createMutation.ts"],"names":[],"mappings":"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","file":"createMutation.js","sourcesContent":["import {\n attach,\n createEvent,\n createStore,\n sample,\n scopeBind,\n} from 'effector'\nimport type { Store } from 'effector'\nimport { MutationObserver } from '@tanstack/query-core'\nimport type { MutateOptions, QueryClient } from '@tanstack/query-core'\nimport { $queryClient } from './queryClient'\nimport { sidConfig, warnMissingName } from './createBaseQuery'\nimport type { CreateMutationOptions, MutationResult } from './types'\n\ntype MutationStatus = 'idle' | 'pending' | 'success' | 'error'\n\nexport function createMutation<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TOnMutateResult = unknown,\n>(\n arg1:\n | QueryClient\n | CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,\n arg2?: CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,\n): MutationResult<TData, TError, TVariables> {\n const [explicitClient, options] = parseMutationArgs<\n TData,\n TError,\n TVariables,\n TOnMutateResult\n >(arg1, arg2)\n\n const { name, ...observerOptions } = options\n\n if (!name) warnMissingName('createMutation')\n\n const $effectiveClient: Store<QueryClient | null> = explicitClient\n ? createStore(explicitClient as QueryClient | null, {\n serialize: 'ignore',\n })\n : $queryClient\n\n const dataUpdated = createEvent<TData | undefined>()\n const errorUpdated = createEvent<TError | null>()\n const statusUpdated = createEvent<MutationStatus>()\n const variablesUpdated = createEvent<TVariables | undefined>()\n const isPausedUpdated = createEvent<boolean>()\n const finishedSuccess = createEvent<{ params: TVariables; result: TData }>()\n const finishedFailure = createEvent<{ params: TVariables; error: TError }>()\n\n const $data = createStore<TData | undefined>(undefined, {\n skipVoid: false,\n ...sidConfig(name, '$data'),\n }).on(dataUpdated, (_, v) => v)\n const $error = createStore<TError | null>(null, {\n skipVoid: false,\n ...sidConfig(name, '$error'),\n }).on(errorUpdated, (_, v) => v)\n const $status = createStore<MutationStatus>('idle', {\n ...sidConfig(name, '$status'),\n }).on(statusUpdated, (_, v) => v)\n const $variables = createStore<TVariables | undefined>(undefined, {\n skipVoid: false,\n ...sidConfig(name, '$variables'),\n }).on(variablesUpdated, (_, v) => v)\n const $isPaused = createStore(false, {\n ...sidConfig(name, '$isPaused'),\n }).on(isPausedUpdated, (_, v) => v)\n\n // Derived stores via .map don't take sid — they recompute from $status on\n // the client after fork({ values }).\n const $isPending = $status.map((s) => s === 'pending')\n const $isSuccess = $status.map((s) => s === 'success')\n const $isError = $status.map((s) => s === 'error')\n const $isIdle = $status.map((s) => s === 'idle')\n\n // Per-scope observer — same pattern as createBaseQuery. Each fork scope\n // gets its own MutationObserver bound to its scope's QueryClient.\n type Observer = MutationObserver<TData, TError, TVariables, TOnMutateResult>\n const $observer = createStore<Observer | null>(null, {\n serialize: 'ignore',\n })\n const observerCreated = createEvent<Observer>()\n $observer.on(observerCreated, (_, obs) => obs)\n\n const observerSubscriptions = new WeakMap<Observer, () => void>()\n\n const start = createEvent<void>()\n const unmounted = createEvent<void>()\n\n const startFx = attach({\n source: { qc: $effectiveClient, observer: $observer },\n effect: ({ qc, observer: existingObserver }) => {\n if (!qc) {\n throw new Error(\n '[@tanstack/query-effector] No QueryClient is set for createMutation. Call setQueryClient(qc) before start, ' +\n 'pass it to fork({ values: [[$queryClient, qc]] }), or pass it explicitly to the factory.',\n )\n }\n\n const observer =\n existingObserver ??\n new MutationObserver<TData, TError, TVariables, TOnMutateResult>(\n qc,\n observerOptions,\n )\n\n const dispatchData = scopeBind(dataUpdated, { safe: true })\n const dispatchError = scopeBind(errorUpdated, { safe: true })\n const dispatchStatus = scopeBind(statusUpdated, { safe: true })\n const dispatchVariables = scopeBind(variablesUpdated, { safe: true })\n const dispatchIsPaused = scopeBind(isPausedUpdated, { safe: true })\n const dispatchFinishedSuccess = scopeBind(finishedSuccess, { safe: true })\n const dispatchFinishedFailure = scopeBind(finishedFailure, { safe: true })\n\n observerSubscriptions.get(observer)?.()\n\n // Track status transitions to emit `finished.success` / `finished.failure`\n // exactly once per pending → terminal transition. The observer holds at\n // most one inflight mutation at a time, so a single previous-status flag\n // is sufficient.\n let prevStatus: MutationStatus = 'idle'\n\n const unsubscribe = observer.subscribe((result) => {\n dispatchData(result.data)\n dispatchError(result.error)\n dispatchStatus(result.status)\n dispatchVariables(result.variables)\n dispatchIsPaused(result.isPaused)\n\n if (prevStatus === 'pending') {\n if (result.status === 'success') {\n dispatchFinishedSuccess({\n params: result.variables as TVariables,\n result: result.data as TData,\n })\n } else if (result.status === 'error') {\n dispatchFinishedFailure({\n params: result.variables as TVariables,\n error: result.error as TError,\n })\n }\n }\n prevStatus = result.status\n })\n\n observerSubscriptions.set(observer, unsubscribe)\n\n return observer\n },\n })\n\n sample({ clock: start, target: startFx })\n sample({ clock: startFx.doneData, target: observerCreated })\n\n // Mutation observers (unlike query observers) live across mount cycles —\n // their data state survives unmount and can be observed again on re-start.\n // Match that by keeping `$observer` populated; we only drop the\n // subscription so listeners stop receiving updates after unmount.\n const unmountFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observerSubscriptions.get(observer)?.()\n observerSubscriptions.delete(observer)\n },\n })\n sample({ clock: unmounted, target: unmountFx })\n\n const mutate = createEvent<TVariables>()\n\n // Fire-and-forget: don't return the promise so allSettled doesn't block\n // (would deadlock under fake timers since observer.mutate awaits the user's\n // mutationFn). Errors are tracked via the observer subscription which\n // updates $error/$status and emits `finished.failure`.\n const mutateFx = attach({\n source: $observer,\n effect: (observer, variables: TVariables) => {\n if (!observer) return\n observer.mutate(variables).catch(() => {})\n },\n })\n\n sample({ clock: mutate, target: mutateFx })\n\n // Per-call callbacks variant: forwards onSuccess/onError/onSettled to\n // observer.mutate(vars, opts). Use this for component-local reactions\n // that don't fit module-level `sample({ clock: finished.success })` wiring.\n const mutateWith = createEvent<{\n variables: TVariables\n onSuccess?: MutateOptions<TData, TError, TVariables>['onSuccess']\n onError?: MutateOptions<TData, TError, TVariables>['onError']\n onSettled?: MutateOptions<TData, TError, TVariables>['onSettled']\n }>()\n\n const mutateWithFx = attach({\n source: $observer,\n effect: (\n observer,\n {\n variables,\n ...callbacks\n }: {\n variables: TVariables\n onSuccess?: MutateOptions<TData, TError, TVariables>['onSuccess']\n onError?: MutateOptions<TData, TError, TVariables>['onError']\n onSettled?: MutateOptions<TData, TError, TVariables>['onSettled']\n },\n ) => {\n if (!observer) return\n observer.mutate(variables, callbacks).catch(() => {})\n },\n })\n\n sample({ clock: mutateWith, target: mutateWithFx })\n\n const reset = createEvent<void>()\n\n const resetFx = attach({\n source: $observer,\n effect: (observer) => {\n if (!observer) return\n observer.reset()\n },\n })\n\n sample({ clock: reset, target: resetFx })\n\n return {\n $data,\n $error,\n $status,\n $variables,\n $isPaused,\n $isPending,\n $isSuccess,\n $isError,\n $isIdle,\n $observer,\n $queryClient: $effectiveClient,\n mutate,\n mutateWith,\n reset,\n start,\n unmounted,\n finished: {\n success: finishedSuccess,\n failure: finishedFailure,\n },\n }\n}\n\nfunction parseMutationArgs<TData, TError, TVariables, TOnMutateResult>(\n arg1:\n | QueryClient\n | CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,\n arg2?: CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,\n): [\n QueryClient | null,\n CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,\n] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [\n null,\n arg1 as CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,\n ]\n}\n"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var effector = require('effector');
|
|
4
|
+
var queryCore = require('@tanstack/query-core');
|
|
5
|
+
var createBaseQuery_cjs = require('./createBaseQuery.cjs');
|
|
6
|
+
var resolve_cjs = require('./resolve.cjs');
|
|
7
|
+
|
|
8
|
+
// src/createQuery.ts
|
|
9
|
+
function createQuery(arg1, arg2) {
|
|
10
|
+
const [explicitClient, options] = parseQueryArgs(
|
|
11
|
+
arg1,
|
|
12
|
+
arg2
|
|
13
|
+
);
|
|
14
|
+
const { queryKey, enabled, name, ...restOptions } = options;
|
|
15
|
+
if (!name) createBaseQuery_cjs.warnMissingName("createQuery");
|
|
16
|
+
const reactiveRefetchInterval = resolve_cjs.resolveReactiveRefetchInterval(
|
|
17
|
+
restOptions.refetchInterval
|
|
18
|
+
);
|
|
19
|
+
if (reactiveRefetchInterval) {
|
|
20
|
+
delete restOptions.refetchInterval;
|
|
21
|
+
}
|
|
22
|
+
const base = createBaseQuery_cjs.createBaseQuery(
|
|
23
|
+
explicitClient,
|
|
24
|
+
{ queryKey, enabled, name, reactiveRefetchInterval },
|
|
25
|
+
{
|
|
26
|
+
createObserver: (qc, { queryKey: key, enabled: isEnabled }) => (
|
|
27
|
+
// Cast: restOptions's `refetchInterval` may still type as
|
|
28
|
+
// `Store | number | false | fn`; the Store form is deleted at runtime
|
|
29
|
+
// above, but TS can't narrow that here.
|
|
30
|
+
new queryCore.QueryObserver(qc, {
|
|
31
|
+
...restOptions,
|
|
32
|
+
queryKey: key,
|
|
33
|
+
enabled: isEnabled
|
|
34
|
+
})
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
const prefetch = effector.createEvent();
|
|
39
|
+
const prefetchFx = effector.attach({
|
|
40
|
+
source: {
|
|
41
|
+
qc: base.$queryClient,
|
|
42
|
+
key: base.$resolvedKey,
|
|
43
|
+
enabled: base.$enabled
|
|
44
|
+
},
|
|
45
|
+
effect: ({ qc, key, enabled: enabled2 }) => {
|
|
46
|
+
if (!qc || !enabled2) return;
|
|
47
|
+
return qc.fetchQuery({
|
|
48
|
+
...restOptions,
|
|
49
|
+
queryKey: key
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
effector.sample({ clock: prefetch, target: prefetchFx });
|
|
54
|
+
const result = {
|
|
55
|
+
$data: base.$data,
|
|
56
|
+
$error: base.$error,
|
|
57
|
+
$status: base.$status,
|
|
58
|
+
$isPending: base.$isPending,
|
|
59
|
+
$isFetching: base.$isFetching,
|
|
60
|
+
$isSuccess: base.$isSuccess,
|
|
61
|
+
$isError: base.$isError,
|
|
62
|
+
$isPlaceholderData: base.$isPlaceholderData,
|
|
63
|
+
$fetchStatus: base.$fetchStatus,
|
|
64
|
+
$observer: base.$observer,
|
|
65
|
+
$queryClient: base.$queryClient,
|
|
66
|
+
refresh: base.refresh,
|
|
67
|
+
prefetch,
|
|
68
|
+
mounted: base.mounted,
|
|
69
|
+
unmounted: base.unmounted
|
|
70
|
+
};
|
|
71
|
+
Object.defineProperty(result, "__createObserver", {
|
|
72
|
+
enumerable: false,
|
|
73
|
+
value: (qc, init) => new queryCore.QueryObserver(qc, {
|
|
74
|
+
...restOptions,
|
|
75
|
+
queryKey: init.queryKey,
|
|
76
|
+
enabled: init.enabled
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(result, "__resolvedKey", {
|
|
80
|
+
enumerable: false,
|
|
81
|
+
value: base.$resolvedKey
|
|
82
|
+
});
|
|
83
|
+
Object.defineProperty(result, "__enabled", {
|
|
84
|
+
enumerable: false,
|
|
85
|
+
value: base.$enabled
|
|
86
|
+
});
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
function parseQueryArgs(arg1, arg2) {
|
|
90
|
+
if (arg2 !== void 0) {
|
|
91
|
+
return [arg1, arg2];
|
|
92
|
+
}
|
|
93
|
+
return [null, arg1];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
exports.createQuery = createQuery;
|
|
97
|
+
//# sourceMappingURL=createQuery.cjs.map
|
|
98
|
+
//# sourceMappingURL=createQuery.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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 { CreateQueryOptions, QueryResult } from './types'\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n>(\n queryClient: QueryClient,\n options: CreateQueryOptions<TQueryFnData, TError, TData>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData>,\n): QueryResult<TData, TError> {\n const [explicitClient, options] = parseQueryArgs<TQueryFnData, TError, TData>(\n arg1,\n arg2,\n )\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 }\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<TQueryFnData, TError, TData>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData>,\n): [QueryClient | null, CreateQueryOptions<TQueryFnData, TError, TData>] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [null, arg1 as CreateQueryOptions<TQueryFnData, TError, TData>]\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
2
|
+
import { CreateQueryOptions, QueryResult } from './types.cjs';
|
|
3
|
+
import 'effector';
|
|
4
|
+
|
|
5
|
+
declare function createQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(options: CreateQueryOptions<TQueryFnData, TError, TData>): QueryResult<TData, TError>;
|
|
6
|
+
declare function createQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(queryClient: QueryClient, options: CreateQueryOptions<TQueryFnData, TError, TData>): QueryResult<TData, TError>;
|
|
7
|
+
|
|
8
|
+
export { createQuery };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
2
|
+
import { CreateQueryOptions, QueryResult } from './types.js';
|
|
3
|
+
import 'effector';
|
|
4
|
+
|
|
5
|
+
declare function createQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(options: CreateQueryOptions<TQueryFnData, TError, TData>): QueryResult<TData, TError>;
|
|
6
|
+
declare function createQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(queryClient: QueryClient, options: CreateQueryOptions<TQueryFnData, TError, TData>): QueryResult<TData, TError>;
|
|
7
|
+
|
|
8
|
+
export { createQuery };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { createEvent, attach, sample } from 'effector';
|
|
2
|
+
import { QueryObserver } from '@tanstack/query-core';
|
|
3
|
+
import { warnMissingName, createBaseQuery } from './createBaseQuery.js';
|
|
4
|
+
import { resolveReactiveRefetchInterval } from './resolve.js';
|
|
5
|
+
|
|
6
|
+
// src/createQuery.ts
|
|
7
|
+
function createQuery(arg1, arg2) {
|
|
8
|
+
const [explicitClient, options] = parseQueryArgs(
|
|
9
|
+
arg1,
|
|
10
|
+
arg2
|
|
11
|
+
);
|
|
12
|
+
const { queryKey, enabled, name, ...restOptions } = options;
|
|
13
|
+
if (!name) warnMissingName("createQuery");
|
|
14
|
+
const reactiveRefetchInterval = resolveReactiveRefetchInterval(
|
|
15
|
+
restOptions.refetchInterval
|
|
16
|
+
);
|
|
17
|
+
if (reactiveRefetchInterval) {
|
|
18
|
+
delete restOptions.refetchInterval;
|
|
19
|
+
}
|
|
20
|
+
const base = createBaseQuery(
|
|
21
|
+
explicitClient,
|
|
22
|
+
{ queryKey, enabled, name, reactiveRefetchInterval },
|
|
23
|
+
{
|
|
24
|
+
createObserver: (qc, { queryKey: key, enabled: isEnabled }) => (
|
|
25
|
+
// Cast: restOptions's `refetchInterval` may still type as
|
|
26
|
+
// `Store | number | false | fn`; the Store form is deleted at runtime
|
|
27
|
+
// above, but TS can't narrow that here.
|
|
28
|
+
new QueryObserver(qc, {
|
|
29
|
+
...restOptions,
|
|
30
|
+
queryKey: key,
|
|
31
|
+
enabled: isEnabled
|
|
32
|
+
})
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
const prefetch = createEvent();
|
|
37
|
+
const prefetchFx = attach({
|
|
38
|
+
source: {
|
|
39
|
+
qc: base.$queryClient,
|
|
40
|
+
key: base.$resolvedKey,
|
|
41
|
+
enabled: base.$enabled
|
|
42
|
+
},
|
|
43
|
+
effect: ({ qc, key, enabled: enabled2 }) => {
|
|
44
|
+
if (!qc || !enabled2) return;
|
|
45
|
+
return qc.fetchQuery({
|
|
46
|
+
...restOptions,
|
|
47
|
+
queryKey: key
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
sample({ clock: prefetch, target: prefetchFx });
|
|
52
|
+
const result = {
|
|
53
|
+
$data: base.$data,
|
|
54
|
+
$error: base.$error,
|
|
55
|
+
$status: base.$status,
|
|
56
|
+
$isPending: base.$isPending,
|
|
57
|
+
$isFetching: base.$isFetching,
|
|
58
|
+
$isSuccess: base.$isSuccess,
|
|
59
|
+
$isError: base.$isError,
|
|
60
|
+
$isPlaceholderData: base.$isPlaceholderData,
|
|
61
|
+
$fetchStatus: base.$fetchStatus,
|
|
62
|
+
$observer: base.$observer,
|
|
63
|
+
$queryClient: base.$queryClient,
|
|
64
|
+
refresh: base.refresh,
|
|
65
|
+
prefetch,
|
|
66
|
+
mounted: base.mounted,
|
|
67
|
+
unmounted: base.unmounted
|
|
68
|
+
};
|
|
69
|
+
Object.defineProperty(result, "__createObserver", {
|
|
70
|
+
enumerable: false,
|
|
71
|
+
value: (qc, init) => new QueryObserver(qc, {
|
|
72
|
+
...restOptions,
|
|
73
|
+
queryKey: init.queryKey,
|
|
74
|
+
enabled: init.enabled
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
Object.defineProperty(result, "__resolvedKey", {
|
|
78
|
+
enumerable: false,
|
|
79
|
+
value: base.$resolvedKey
|
|
80
|
+
});
|
|
81
|
+
Object.defineProperty(result, "__enabled", {
|
|
82
|
+
enumerable: false,
|
|
83
|
+
value: base.$enabled
|
|
84
|
+
});
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
function parseQueryArgs(arg1, arg2) {
|
|
88
|
+
if (arg2 !== void 0) {
|
|
89
|
+
return [arg1, arg2];
|
|
90
|
+
}
|
|
91
|
+
return [null, arg1];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { createQuery };
|
|
95
|
+
//# sourceMappingURL=createQuery.js.map
|
|
96
|
+
//# sourceMappingURL=createQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 { CreateQueryOptions, QueryResult } from './types'\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n>(\n queryClient: QueryClient,\n options: CreateQueryOptions<TQueryFnData, TError, TData>,\n): QueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData = unknown,\n TError = Error,\n TData = TQueryFnData,\n>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData>,\n): QueryResult<TData, TError> {\n const [explicitClient, options] = parseQueryArgs<TQueryFnData, TError, TData>(\n arg1,\n arg2,\n )\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 }\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<TQueryFnData, TError, TData>(\n arg1:\n | QueryClient\n | CreateQueryOptions<TQueryFnData, TError, TData>,\n arg2?: CreateQueryOptions<TQueryFnData, TError, TData>,\n): [QueryClient | null, CreateQueryOptions<TQueryFnData, TError, TData>] {\n if (arg2 !== undefined) {\n return [arg1 as QueryClient, arg2]\n }\n return [null, arg1 as CreateQueryOptions<TQueryFnData, TError, TData>]\n}\n"]}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var createQuery_cjs = require('./createQuery.cjs');
|
|
4
|
+
var createInfiniteQuery_cjs = require('./createInfiniteQuery.cjs');
|
|
5
|
+
var createMutation_cjs = require('./createMutation.cjs');
|
|
6
|
+
var createInvalidate_cjs = require('./createInvalidate.cjs');
|
|
7
|
+
var queryClient_cjs = require('./queryClient.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, "createQuery", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return createQuery_cjs.createQuery; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "createInfiniteQuery", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return createInfiniteQuery_cjs.createInfiniteQuery; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "createMutation", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return createMutation_cjs.createMutation; }
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, "createInvalidate", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return createInvalidate_cjs.createInvalidate; }
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports, "$queryClient", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function () { return queryClient_cjs.$queryClient; }
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "setQueryClient", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () { return queryClient_cjs.setQueryClient; }
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=index.cjs.map
|
|
36
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs","sourcesContent":[]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { createQuery } from './createQuery.cjs';
|
|
2
|
+
export { createInfiniteQuery } from './createInfiniteQuery.cjs';
|
|
3
|
+
export { createMutation } from './createMutation.cjs';
|
|
4
|
+
export { CreateInvalidateOptions, createInvalidate } from './createInvalidate.cjs';
|
|
5
|
+
export { $queryClient, setQueryClient } from './queryClient.cjs';
|
|
6
|
+
export { CreateInfiniteQueryOptions, CreateMutationOptions, CreateQueryOptions, EffectorQueryKey, InfiniteQueryResult, MutationResult, MutationStatus, QueryResult, StoreOrValue } from './types.cjs';
|
|
7
|
+
import '@tanstack/query-core';
|
|
8
|
+
import 'effector';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { createQuery } from './createQuery.js';
|
|
2
|
+
export { createInfiniteQuery } from './createInfiniteQuery.js';
|
|
3
|
+
export { createMutation } from './createMutation.js';
|
|
4
|
+
export { CreateInvalidateOptions, createInvalidate } from './createInvalidate.js';
|
|
5
|
+
export { $queryClient, setQueryClient } from './queryClient.js';
|
|
6
|
+
export { CreateInfiniteQueryOptions, CreateMutationOptions, CreateQueryOptions, EffectorQueryKey, InfiniteQueryResult, MutationResult, MutationStatus, QueryResult, StoreOrValue } from './types.js';
|
|
7
|
+
import '@tanstack/query-core';
|
|
8
|
+
import 'effector';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createQuery } from './createQuery.js';
|
|
2
|
+
export { createInfiniteQuery } from './createInfiniteQuery.js';
|
|
3
|
+
export { createMutation } from './createMutation.js';
|
|
4
|
+
export { createInvalidate } from './createInvalidate.js';
|
|
5
|
+
export { $queryClient, setQueryClient } from './queryClient.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var effector = require('effector');
|
|
4
|
+
|
|
5
|
+
// src/queryClient.ts
|
|
6
|
+
var $queryClient = effector.createStore(null, {
|
|
7
|
+
name: "@tanstack/query-effector.$queryClient",
|
|
8
|
+
sid: "@tanstack/query-effector.$queryClient",
|
|
9
|
+
// Carries a runtime-only object (`QueryClient` instance) — must not
|
|
10
|
+
// round-trip through `serialize(scope)`. Per-scope injection happens
|
|
11
|
+
// via `fork({ values: [[$queryClient, qc]] })` instead.
|
|
12
|
+
serialize: "ignore"
|
|
13
|
+
});
|
|
14
|
+
var setQueryClient = effector.createEvent();
|
|
15
|
+
$queryClient.on(setQueryClient, (_, qc) => qc);
|
|
16
|
+
|
|
17
|
+
exports.$queryClient = $queryClient;
|
|
18
|
+
exports.setQueryClient = setQueryClient;
|
|
19
|
+
//# sourceMappingURL=queryClient.cjs.map
|
|
20
|
+
//# sourceMappingURL=queryClient.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/queryClient.ts"],"names":["createStore","createEvent"],"mappings":";;;;;AAWO,IAAM,YAAA,GAAeA,qBAAgC,IAAA,EAAM;AAAA,EAChE,IAAA,EAAM,uCAAA;AAAA,EACN,GAAA,EAAK,uCAAA;AAAA;AAAA;AAAA;AAAA,EAIL,SAAA,EAAW;AACb,CAAC;AAEM,IAAM,iBAAiBC,oBAAA;AAE9B,YAAA,CAAa,EAAA,CAAG,cAAA,EAAgB,CAAC,CAAA,EAAG,OAAO,EAAE,CAAA","file":"queryClient.cjs","sourcesContent":["import { createEvent, createStore } from 'effector'\nimport type { QueryClient } from '@tanstack/query-core'\n\n/**\n * Holds the default `QueryClient` used when a factory (`createQuery`,\n * `createInfiniteQuery`, `createMutation`) is called without an explicit one.\n *\n * Per-scope isolation: under `fork({ values: [[$queryClient, qc]] })`, every\n * factory in that scope uses its own client. Observers are created lazily on\n * mount, reading this store via `attach`, so each scope gets its own observer.\n */\nexport const $queryClient = createStore<QueryClient | null>(null, {\n name: '@tanstack/query-effector.$queryClient',\n sid: '@tanstack/query-effector.$queryClient',\n // Carries a runtime-only object (`QueryClient` instance) — must not\n // round-trip through `serialize(scope)`. Per-scope injection happens\n // via `fork({ values: [[$queryClient, qc]] })` instead.\n serialize: 'ignore',\n})\n\nexport const setQueryClient = createEvent<QueryClient>()\n\n$queryClient.on(setQueryClient, (_, qc) => qc)\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as effector from 'effector';
|
|
2
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Holds the default `QueryClient` used when a factory (`createQuery`,
|
|
6
|
+
* `createInfiniteQuery`, `createMutation`) is called without an explicit one.
|
|
7
|
+
*
|
|
8
|
+
* Per-scope isolation: under `fork({ values: [[$queryClient, qc]] })`, every
|
|
9
|
+
* factory in that scope uses its own client. Observers are created lazily on
|
|
10
|
+
* mount, reading this store via `attach`, so each scope gets its own observer.
|
|
11
|
+
*/
|
|
12
|
+
declare const $queryClient: effector.StoreWritable<QueryClient | null>;
|
|
13
|
+
declare const setQueryClient: effector.EventCallable<QueryClient>;
|
|
14
|
+
|
|
15
|
+
export { $queryClient, setQueryClient };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as effector from 'effector';
|
|
2
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Holds the default `QueryClient` used when a factory (`createQuery`,
|
|
6
|
+
* `createInfiniteQuery`, `createMutation`) is called without an explicit one.
|
|
7
|
+
*
|
|
8
|
+
* Per-scope isolation: under `fork({ values: [[$queryClient, qc]] })`, every
|
|
9
|
+
* factory in that scope uses its own client. Observers are created lazily on
|
|
10
|
+
* mount, reading this store via `attach`, so each scope gets its own observer.
|
|
11
|
+
*/
|
|
12
|
+
declare const $queryClient: effector.StoreWritable<QueryClient | null>;
|
|
13
|
+
declare const setQueryClient: effector.EventCallable<QueryClient>;
|
|
14
|
+
|
|
15
|
+
export { $queryClient, setQueryClient };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createStore, createEvent } from 'effector';
|
|
2
|
+
|
|
3
|
+
// src/queryClient.ts
|
|
4
|
+
var $queryClient = createStore(null, {
|
|
5
|
+
name: "@tanstack/query-effector.$queryClient",
|
|
6
|
+
sid: "@tanstack/query-effector.$queryClient",
|
|
7
|
+
// Carries a runtime-only object (`QueryClient` instance) — must not
|
|
8
|
+
// round-trip through `serialize(scope)`. Per-scope injection happens
|
|
9
|
+
// via `fork({ values: [[$queryClient, qc]] })` instead.
|
|
10
|
+
serialize: "ignore"
|
|
11
|
+
});
|
|
12
|
+
var setQueryClient = createEvent();
|
|
13
|
+
$queryClient.on(setQueryClient, (_, qc) => qc);
|
|
14
|
+
|
|
15
|
+
export { $queryClient, setQueryClient };
|
|
16
|
+
//# sourceMappingURL=queryClient.js.map
|
|
17
|
+
//# sourceMappingURL=queryClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/queryClient.ts"],"names":[],"mappings":";;;AAWO,IAAM,YAAA,GAAe,YAAgC,IAAA,EAAM;AAAA,EAChE,IAAA,EAAM,uCAAA;AAAA,EACN,GAAA,EAAK,uCAAA;AAAA;AAAA;AAAA;AAAA,EAIL,SAAA,EAAW;AACb,CAAC;AAEM,IAAM,iBAAiB,WAAA;AAE9B,YAAA,CAAa,EAAA,CAAG,cAAA,EAAgB,CAAC,CAAA,EAAG,OAAO,EAAE,CAAA","file":"queryClient.js","sourcesContent":["import { createEvent, createStore } from 'effector'\nimport type { QueryClient } from '@tanstack/query-core'\n\n/**\n * Holds the default `QueryClient` used when a factory (`createQuery`,\n * `createInfiniteQuery`, `createMutation`) is called without an explicit one.\n *\n * Per-scope isolation: under `fork({ values: [[$queryClient, qc]] })`, every\n * factory in that scope uses its own client. Observers are created lazily on\n * mount, reading this store via `attach`, so each scope gets its own observer.\n */\nexport const $queryClient = createStore<QueryClient | null>(null, {\n name: '@tanstack/query-effector.$queryClient',\n sid: '@tanstack/query-effector.$queryClient',\n // Carries a runtime-only object (`QueryClient` instance) — must not\n // round-trip through `serialize(scope)`. Per-scope injection happens\n // via `fork({ values: [[$queryClient, qc]] })` instead.\n serialize: 'ignore',\n})\n\nexport const setQueryClient = createEvent<QueryClient>()\n\n$queryClient.on(setQueryClient, (_, qc) => qc)\n"]}
|