@effect-app/vue 4.0.0-beta.173 → 4.0.0-beta.175
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/CHANGELOG.md +41 -0
- package/dist/errorReporter.js +1 -1
- package/dist/lib.d.ts +4 -5
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +2 -2
- package/dist/makeClient.d.ts +5 -5
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +1 -1
- package/dist/mutate.d.ts +20 -14
- package/dist/mutate.d.ts.map +1 -1
- package/dist/mutate.js +55 -26
- package/package.json +3 -3
- package/src/errorReporter.ts +2 -2
- package/src/lib.ts +3 -7
- package/src/makeClient.ts +14 -8
- package/src/mutate.ts +128 -63
- package/test/dist/stubs.d.ts.map +1 -1
- package/test/dist/stubs.js +24 -3
- package/test/stubs.ts +26 -2
package/dist/mutate.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { matchQuery } from "@tanstack/query-core";
|
|
2
3
|
import { useQueryClient } from "@tanstack/vue-query";
|
|
3
4
|
import { Effect, Option } from "effect-app";
|
|
4
|
-
import { makeQueryKey } from "effect-app/client";
|
|
5
|
+
import { InvalidationKeysFromServer, makeInvalidationKeysService, makeQueryKey } from "effect-app/client";
|
|
5
6
|
import { tuple } from "effect-app/Function";
|
|
7
|
+
import * as Ref from "effect/Ref";
|
|
6
8
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
|
|
7
9
|
import { computed, shallowRef } from "vue";
|
|
8
10
|
export const getQueryKey = (h) => {
|
|
@@ -46,16 +48,6 @@ export function make(self) {
|
|
|
46
48
|
const latestSuccess = computed(() => Option.getOrUndefined(AsyncResult.value(result.value)));
|
|
47
49
|
return tuple(result, latestSuccess, execute);
|
|
48
50
|
}
|
|
49
|
-
// TODO: more efficient invalidation, including args etc
|
|
50
|
-
// return Effect.promise(() => queryClient.invalidateQueries({
|
|
51
|
-
// predicate: (_) => nses.includes(_.queryKey.filter((_) => _.startsWith("$")).join("/"))
|
|
52
|
-
// }))
|
|
53
|
-
/*
|
|
54
|
-
// const nses: string[] = []`
|
|
55
|
-
// for (let i = 0; i < ns.length; i++) {
|
|
56
|
-
// nses.push(ns.slice(0, i + 1).join("/"))
|
|
57
|
-
// }
|
|
58
|
-
*/
|
|
59
51
|
export const asResult = (handler) => {
|
|
60
52
|
const state = shallowRef(AsyncResult.initial());
|
|
61
53
|
const act = Effect.isEffect(handler)
|
|
@@ -73,33 +65,70 @@ export const asResult = (handler) => {
|
|
|
73
65
|
};
|
|
74
66
|
export const invalidateQueries = (queryClient, self, options) => {
|
|
75
67
|
const invalidateQueries = (filters, options) => Effect.currentSpan.pipe(Effect.orElseSucceed(() => null), Effect.flatMap((span) => Effect.promise(() => queryClient.invalidateQueries(filters, { ...options, updateMeta: { span } }))));
|
|
76
|
-
const
|
|
68
|
+
const getClientInvalidationTargets = (input, output) => {
|
|
77
69
|
const queryKey = getQueryKey(self);
|
|
78
|
-
if (options) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
70
|
+
if (options?.queryInvalidation) {
|
|
71
|
+
return options.queryInvalidation(queryKey, self.id, input, output).map((_) => ({
|
|
72
|
+
filters: _.filters,
|
|
73
|
+
options: _.options
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
if (!queryKey) {
|
|
77
|
+
return [];
|
|
86
78
|
}
|
|
87
|
-
|
|
79
|
+
return [{ filters: { queryKey }, options: undefined }];
|
|
80
|
+
};
|
|
81
|
+
const invalidateCache = (input, output, serverKeys) => Effect.suspend(() => {
|
|
82
|
+
const clientTargets = getClientInvalidationTargets(input, output);
|
|
83
|
+
const serverTargets = serverKeys.map((queryKey) => ({
|
|
84
|
+
filters: { queryKey },
|
|
85
|
+
options: undefined
|
|
86
|
+
}));
|
|
87
|
+
const allTargets = [...clientTargets, ...serverTargets];
|
|
88
|
+
if (!allTargets.length)
|
|
88
89
|
return Effect.void;
|
|
90
|
+
const groups = new Map();
|
|
91
|
+
for (const target of allTargets) {
|
|
92
|
+
const key = `${target.filters?.refetchType ?? ""}|${target.options?.cancelRefetch ?? ""}|${target.options?.throwOnError?.toString() ?? ""}`;
|
|
93
|
+
const existing = groups.get(key);
|
|
94
|
+
if (existing) {
|
|
95
|
+
existing.targets.push(target);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
groups.set(key, { targets: [target], refetchType: target.filters?.refetchType, options: target.options });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
89
101
|
return Effect
|
|
90
|
-
.andThen(Effect.annotateCurrentSpan({
|
|
102
|
+
.andThen(Effect.annotateCurrentSpan({ clientTargets, serverKeys }), Effect.forEach(groups.values(), ({ options, refetchType, targets }) => invalidateQueries({
|
|
103
|
+
...(refetchType !== undefined ? { refetchType } : {}),
|
|
104
|
+
predicate: (query) => targets.some((t) => t.filters ? matchQuery(t.filters, query) : true)
|
|
105
|
+
}, options), { discard: true, concurrency: "inherit" }))
|
|
91
106
|
.pipe(Effect.tap(
|
|
92
107
|
// hand over control back to the event loop so that state can be updated..
|
|
93
108
|
// TODO: should we do this in general on any mutation, regardless of invalidation?
|
|
94
109
|
Effect.sleep(0)), Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false }));
|
|
95
110
|
});
|
|
96
|
-
const
|
|
111
|
+
const select = options?.select;
|
|
112
|
+
const handle = (eff, input) => Effect.gen(function* () {
|
|
113
|
+
const keysRef = yield* Ref.make([]);
|
|
114
|
+
const result = yield* eff.pipe(Effect.provideService(InvalidationKeysFromServer, makeInvalidationKeysService(keysRef)), Effect.onExit((exit) => Effect.gen(function* () {
|
|
115
|
+
const serverKeys = yield* Ref.get(keysRef);
|
|
116
|
+
yield* invalidateCache(input, exit, serverKeys);
|
|
117
|
+
})));
|
|
118
|
+
if (select) {
|
|
119
|
+
return yield* select(result).pipe(Effect.onExit((exit) => Effect.gen(function* () {
|
|
120
|
+
const serverKeys = yield* Ref.get(keysRef);
|
|
121
|
+
yield* invalidateCache(input, exit, serverKeys);
|
|
122
|
+
})));
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
});
|
|
97
126
|
return handle;
|
|
98
127
|
};
|
|
99
128
|
export const makeMutation = () => {
|
|
100
129
|
const useMutation = (self, options) => {
|
|
101
130
|
const queryClient = useQueryClient();
|
|
102
|
-
const handle = invalidateQueries(queryClient, self, options
|
|
131
|
+
const handle = invalidateQueries(queryClient, self, options);
|
|
103
132
|
const handler = self.handler;
|
|
104
133
|
const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i), i);
|
|
105
134
|
return Object.assign(r, { id: self.id });
|
|
@@ -110,11 +139,11 @@ export const makeMutation = () => {
|
|
|
110
139
|
export const useMakeMutation = () => {
|
|
111
140
|
const queryClient = useQueryClient();
|
|
112
141
|
const useMutation = (self, options) => {
|
|
113
|
-
const handle = invalidateQueries(queryClient, self, options
|
|
142
|
+
const handle = invalidateQueries(queryClient, self, options);
|
|
114
143
|
const handler = self.handler;
|
|
115
144
|
const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i), i);
|
|
116
145
|
return Object.assign(r, { id: self.id });
|
|
117
146
|
};
|
|
118
147
|
return useMutation;
|
|
119
148
|
};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUF5RSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzSCxPQUFPLEVBQWMsTUFBTSxFQUFhLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sbUJBQW1CLENBQUE7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxXQUFXLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBb0IsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQTZDLEVBQUUsRUFBRTtJQUMzRSxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQy9DLDZGQUE2RjtJQUM3RixvRkFBb0Y7SUFDcEYsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ2pGLElBQUksQ0FBQyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdkQs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
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBeUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDM0gsT0FBTyxFQUFjLE1BQU0sRUFBYSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEUsT0FBTyxFQUF3QiwwQkFBMEIsRUFBRSwyQkFBMkIsRUFBRSxZQUFZLEVBQVksTUFBTSxtQkFBbUIsQ0FBQTtBQUV6SSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDM0MsT0FBTyxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUE7QUFDakMsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFvQixVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFNUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBNkMsRUFBRSxFQUFFO0lBQzNFLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDL0MsNkZBQTZGO0lBQzdGLG9GQUFvRjtJQUNwRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDakYsSUFBSSxDQUFDLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN2RCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUMsQ0FBQTtBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsY0FBNkM7SUFFN0MsUUFBUSxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQTtRQUMvRSxDQUFDO1FBQ0QsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxLQUFLO2dCQUMxQixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFBO1FBQ0gsQ0FBQztRQUNELEtBQUssU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSzthQUM1QixDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBUUQsTUFBTSxVQUFVLElBQUksQ0FBVSxJQUE0QjtJQUN4RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBbUMsQ0FBQyxDQUFBO0lBRWpGLE1BQU0sT0FBTyxHQUFHLE1BQU07U0FDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE1BQU0sQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEQsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMzRCxDQUFBO0lBRUgsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRTVGLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDOUMsQ0FBQztBQTZCRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBT2pCLENBQ0YsT0FBNkUsRUFDN0UsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBZ0MsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFOUUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQyxDQUFDLE1BQU07YUFDTCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsS0FBSyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pDLENBQUMsQ0FBQzthQUNELElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsTUFBTSxDQUFDLElBQUksRUFDWCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNwRixDQUNGLENBQUMsQ0FDSDtRQUNILENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBVSxFQUFFLEVBQUUsQ0FDbEIsTUFBTTthQUNILElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxLQUFLLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekMsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FDakMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNuQixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3BGLENBQ0YsQ0FBQyxDQUNILENBQUE7SUFFUCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBUSxDQUFBO0FBQ3ZELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLFdBQXdCLEVBQ3hCLElBQWdELEVBQ2hELE9BQTZCLEVBQzdCLEVBQUU7SUFNRixNQUFNLGlCQUFpQixHQUFHLENBQ3hCLE9BQWdDLEVBQ2hDLE9BQTJCLEVBQzNCLEVBQUUsQ0FDRixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNuRyxDQUNGLENBQUE7SUFFSCxNQUFNLDRCQUE0QixHQUFHLENBQ25DLEtBQWMsRUFDZCxNQUFtQyxFQUNBLEVBQUU7UUFDckMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRWxDLElBQUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7WUFDL0IsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0UsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO2dCQUNsQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87YUFDbkIsQ0FBQyxDQUFDLENBQUE7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO1FBRUQsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDeEQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBYyxFQUNkLE1BQW1DLEVBQ25DLFVBQTBDLEVBQzFDLEVBQUUsQ0FDRixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQixNQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakUsTUFBTSxhQUFhLEdBQXNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckYsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFO1lBQ3JCLE9BQU8sRUFBRSxTQUFTO1NBQ25CLENBQUMsQ0FBQyxDQUFBO1FBQ0gsTUFBTSxVQUFVLEdBQXNDLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQTtRQUUxRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFTMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUE7UUFDdkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxFQUFFLElBQ3JGLE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQzlDLEVBQUUsQ0FBQTtZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDaEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMvQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQzNHLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNO2FBQ1YsT0FBTyxDQUNOLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUN6RCxNQUFNLENBQUMsT0FBTyxDQUNaLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFDZixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQ3BDLGlCQUFpQixDQUNmO1lBQ0UsR0FBRyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDM0YsRUFDRCxPQUFPLENBQ1IsRUFDSCxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUMxQyxDQUNGO2FBQ0EsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHO1FBQ1IsMEVBQTBFO1FBQzFFLGtGQUFrRjtRQUNsRixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNoQixFQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDL0UsQ0FBQTtJQUNMLENBQUMsQ0FBQyxDQUFBO0lBRUosTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQTtJQUU5QixNQUFNLE1BQU0sR0FBRyxDQUFVLEdBQTJCLEVBQUUsS0FBZSxFQUFFLEVBQUUsQ0FDdkUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBaUMsRUFBRSxDQUFDLENBQUE7UUFDbkUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsRUFBRSwyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN2RixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDbEIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUMxQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNqRCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUE7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMvQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ2pELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQyxDQUFBO0lBRUosT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO0lBQy9CLE1BQU0sV0FBVyxHQWlCYixDQUNGLElBQTZGLEVBQzdGLE9BQTJDLEVBQzNDLEVBQUU7UUFDRixNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQTtRQUNwQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQWMsQ0FBQyxDQUFBO1FBQ25FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDNUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUV0RixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBUSxDQUFBO0lBQ2pELENBQUMsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO0lBRXBDLE1BQU0sV0FBVyxHQWlCYixDQUNGLElBQTZGLEVBQzdGLE9BQTJDLEVBQzNDLEVBQUU7UUFDRixNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQWMsQ0FBQyxDQUFBO1FBQ25FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDNUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUV0RixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBUSxDQUFBO0lBQ2pELENBQUMsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMsQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.175",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@vueuse/core": "^14.2.1",
|
|
12
12
|
"change-case": "^5.4.4",
|
|
13
13
|
"query-string": "^9.3.1",
|
|
14
|
-
"effect-app": "4.0.0-beta.
|
|
14
|
+
"effect-app": "4.0.0-beta.175"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@effect/atom-vue": "^4.0.0-beta.59",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@vitejs/plugin-vue": "^6.0.6",
|
|
28
28
|
"intl-messageformat": "^11.2.2",
|
|
29
29
|
"json5": "^2.2.3",
|
|
30
|
-
"typescript": "
|
|
30
|
+
"typescript": "~6.0.3",
|
|
31
31
|
"vite": "^8.0.10",
|
|
32
32
|
"vitest": "^4.1.5",
|
|
33
33
|
"@effect-app/eslint-shared-config": "0.6.0-beta.18"
|
package/src/errorReporter.ts
CHANGED
|
@@ -59,8 +59,8 @@ function reportSentry(
|
|
|
59
59
|
const scope = new Sentry.Scope()
|
|
60
60
|
scope.setLevel(level)
|
|
61
61
|
if (extras) scope.setContext("extras", extras)
|
|
62
|
-
scope.setContext("error", tryToReport(error)
|
|
63
|
-
scope.setContext("cause", tryToJson(error.originalCause)
|
|
62
|
+
scope.setContext("error", tryToReport(error))
|
|
63
|
+
scope.setContext("cause", tryToJson(error.originalCause))
|
|
64
64
|
Sentry.captureException(error, scope)
|
|
65
65
|
})
|
|
66
66
|
}
|
package/src/lib.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { useIntervalFn } from "@vueuse/core"
|
|
2
|
-
import
|
|
3
|
-
import { Cause } from "effect-app"
|
|
4
|
-
import type { Effect } from "effect-app"
|
|
1
|
+
import { type Pausable, useIntervalFn, type UseIntervalFnOptions } from "@vueuse/core"
|
|
2
|
+
import { Cause, type Effect } from "effect-app"
|
|
5
3
|
import type { Req } from "effect-app/client"
|
|
6
4
|
import type { RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor"
|
|
7
5
|
import { isHttpClientError } from "effect/unstable/http/HttpClientError"
|
|
8
|
-
import type
|
|
6
|
+
import { isProxy, isReactive, isRef, type MaybeRefOrGetter, toRaw } from "vue"
|
|
9
7
|
import { reportError } from "./errorReporter.js"
|
|
10
8
|
|
|
11
9
|
export * as AsyncResult from "effect/unstable/reactivity/AsyncResult"
|
|
@@ -80,8 +78,6 @@ export const mapHandler: {
|
|
|
80
78
|
: map(self.handler)
|
|
81
79
|
})
|
|
82
80
|
|
|
83
|
-
import { isProxy, isReactive, isRef, toRaw } from "vue"
|
|
84
|
-
|
|
85
81
|
export function deepToRaw<T>(sourceObj: T): T {
|
|
86
82
|
const objectIterator = (input: any): any => {
|
|
87
83
|
if (isRef(input)) {
|
package/src/makeClient.ts
CHANGED
|
@@ -306,10 +306,13 @@ export const useMutation: typeof _useMutation = <
|
|
|
306
306
|
A,
|
|
307
307
|
R,
|
|
308
308
|
Request extends Req,
|
|
309
|
-
Name extends string
|
|
309
|
+
Name extends string,
|
|
310
|
+
B = A,
|
|
311
|
+
E2 = never,
|
|
312
|
+
R2 = never
|
|
310
313
|
>(
|
|
311
314
|
self: RequestHandlerWithInput<I, A, E, R, Request, Name> | RequestHandler<A, E, R, Request, Name>,
|
|
312
|
-
options?: MutationOptionsBase
|
|
315
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
313
316
|
) =>
|
|
314
317
|
Object.assign(
|
|
315
318
|
mapHandler(
|
|
@@ -332,10 +335,13 @@ export const useMutationInt = (): typeof _useMutation => {
|
|
|
332
335
|
A,
|
|
333
336
|
R,
|
|
334
337
|
Request extends Req,
|
|
335
|
-
Name extends string
|
|
338
|
+
Name extends string,
|
|
339
|
+
B = A,
|
|
340
|
+
E2 = never,
|
|
341
|
+
R2 = never
|
|
336
342
|
>(
|
|
337
343
|
self: RequestHandlerWithInput<I, A, E, R, Request, Name> | RequestHandler<A, E, R, Request, Name>,
|
|
338
|
-
options?: MutationOptionsBase
|
|
344
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
339
345
|
) =>
|
|
340
346
|
Object.assign(
|
|
341
347
|
mapHandler(
|
|
@@ -667,8 +673,8 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
667
673
|
const fromRequest = fromRequestConfig
|
|
668
674
|
? ((defaultKey: string[], _name: string, input?: unknown, output?: unknown) =>
|
|
669
675
|
fromRequestConfig(defaultKey, queryResources as never, input as never, output as never).map((entry) => ({
|
|
670
|
-
filters: entry.filters
|
|
671
|
-
options: entry.options
|
|
676
|
+
filters: entry.filters,
|
|
677
|
+
options: entry.options
|
|
672
678
|
})))
|
|
673
679
|
: undefined
|
|
674
680
|
const mergedInvalidation = mergeInvalidation(fromRequest, invalidation?.[key])
|
|
@@ -762,8 +768,8 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
762
768
|
fromRequestConfig(defaultKey, queryResources as never, input as never, output as never).map((
|
|
763
769
|
entry
|
|
764
770
|
) => ({
|
|
765
|
-
filters: entry.filters
|
|
766
|
-
options: entry.options
|
|
771
|
+
filters: entry.filters,
|
|
772
|
+
options: entry.options
|
|
767
773
|
})))
|
|
768
774
|
: undefined
|
|
769
775
|
const mergedInvalidation = mergeInvalidation(fromRequest, invalidation?.[key])
|
package/src/mutate.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { matchQuery } from "@tanstack/query-core"
|
|
2
3
|
import { type InvalidateOptions, type InvalidateQueryFilters, type QueryClient, useQueryClient } from "@tanstack/vue-query"
|
|
3
4
|
import { type Cause, Effect, type Exit, Option } from "effect-app"
|
|
4
|
-
import { makeQueryKey, type Req } from "effect-app/client"
|
|
5
|
+
import { type InvalidationKey, InvalidationKeysFromServer, makeInvalidationKeysService, makeQueryKey, type Req } from "effect-app/client"
|
|
5
6
|
import type { ClientForOptions, RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor"
|
|
6
7
|
import { tuple } from "effect-app/Function"
|
|
8
|
+
import * as Ref from "effect/Ref"
|
|
7
9
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult"
|
|
8
10
|
import { computed, type ComputedRef, shallowRef } from "vue"
|
|
9
11
|
|
|
@@ -66,7 +68,7 @@ export function make<A, E, R>(self: Effect.Effect<A, E, R>) {
|
|
|
66
68
|
return tuple(result, latestSuccess, execute)
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
export interface MutationOptionsBase {
|
|
71
|
+
export interface MutationOptionsBase<A = unknown, B = A, E2 = never, R2 = never> {
|
|
70
72
|
/**
|
|
71
73
|
* By default we invalidate one level of the query key, e.g $project/$configuration.get, we invalidate $project.
|
|
72
74
|
* This can be overridden by providing a function that returns an array of filters and options.
|
|
@@ -75,30 +77,24 @@ export interface MutationOptionsBase {
|
|
|
75
77
|
filters?: InvalidateQueryFilters | undefined
|
|
76
78
|
options?: InvalidateOptions | undefined
|
|
77
79
|
}[]
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/** @deprecated prefer more basic @see MutationOptionsBase and separate useMutation from Command.fn */
|
|
81
|
-
export interface MutationOptions<A, E, R, A2 = A, E2 = E, R2 = R, I = void> extends MutationOptionsBase {
|
|
82
80
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
81
|
+
* Run an additional Effect after the mutation succeeds. Its output becomes the
|
|
82
|
+
* final result returned to the caller. Query cache is invalidated once on
|
|
83
|
+
* mutation exit and again after this Effect completes. Useful for long-running
|
|
84
|
+
* operations (e.g. polling a background job) where you want the caller to
|
|
85
|
+
* receive the downstream result and the cache to refresh once it is ready.
|
|
85
86
|
*
|
|
86
|
-
* @
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* useMutation(startExportCommand, {
|
|
90
|
+
* select: (result) => pollUntilDone(result.jobId)
|
|
91
|
+
* // caller receives the pollUntilDone output, not the original result
|
|
92
|
+
* })
|
|
93
|
+
* ```
|
|
87
94
|
*/
|
|
88
|
-
|
|
95
|
+
select?: (result: A) => Effect.Effect<B, E2, R2>
|
|
89
96
|
}
|
|
90
97
|
|
|
91
|
-
// TODO: more efficient invalidation, including args etc
|
|
92
|
-
// return Effect.promise(() => queryClient.invalidateQueries({
|
|
93
|
-
// predicate: (_) => nses.includes(_.queryKey.filter((_) => _.startsWith("$")).join("/"))
|
|
94
|
-
// }))
|
|
95
|
-
/*
|
|
96
|
-
// const nses: string[] = []`
|
|
97
|
-
// for (let i = 0; i < ns.length; i++) {
|
|
98
|
-
// nses.push(ns.slice(0, i + 1).join("/"))
|
|
99
|
-
// }
|
|
100
|
-
*/
|
|
101
|
-
|
|
102
98
|
export const asResult: {
|
|
103
99
|
<A, E, R>(
|
|
104
100
|
handler: Effect.Effect<A, E, R>
|
|
@@ -144,8 +140,13 @@ export const asResult: {
|
|
|
144
140
|
export const invalidateQueries = (
|
|
145
141
|
queryClient: QueryClient,
|
|
146
142
|
self: { id: string; options?: ClientForOptions },
|
|
147
|
-
options?: MutationOptionsBase
|
|
143
|
+
options?: MutationOptionsBase
|
|
148
144
|
) => {
|
|
145
|
+
type InvalidationTarget = {
|
|
146
|
+
readonly filters: InvalidateQueryFilters | undefined
|
|
147
|
+
readonly options: InvalidateOptions | undefined
|
|
148
|
+
}
|
|
149
|
+
|
|
149
150
|
const invalidateQueries = (
|
|
150
151
|
filters?: InvalidateQueryFilters,
|
|
151
152
|
options?: InvalidateOptions
|
|
@@ -157,29 +158,76 @@ export const invalidateQueries = (
|
|
|
157
158
|
)
|
|
158
159
|
)
|
|
159
160
|
|
|
160
|
-
const
|
|
161
|
+
const getClientInvalidationTargets = (
|
|
162
|
+
input: unknown,
|
|
163
|
+
output: Exit.Exit<unknown, unknown>
|
|
164
|
+
): ReadonlyArray<InvalidationTarget> => {
|
|
165
|
+
const queryKey = getQueryKey(self)
|
|
166
|
+
|
|
167
|
+
if (options?.queryInvalidation) {
|
|
168
|
+
return options.queryInvalidation(queryKey, self.id, input, output).map((_) => ({
|
|
169
|
+
filters: _.filters,
|
|
170
|
+
options: _.options
|
|
171
|
+
}))
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (!queryKey) {
|
|
175
|
+
return []
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return [{ filters: { queryKey }, options: undefined }]
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const invalidateCache = (
|
|
182
|
+
input: unknown,
|
|
183
|
+
output: Exit.Exit<unknown, unknown>,
|
|
184
|
+
serverKeys: ReadonlyArray<InvalidationKey>
|
|
185
|
+
) =>
|
|
161
186
|
Effect.suspend(() => {
|
|
162
|
-
const
|
|
187
|
+
const clientTargets = getClientInvalidationTargets(input, output)
|
|
188
|
+
const serverTargets: ReadonlyArray<InvalidationTarget> = serverKeys.map((queryKey) => ({
|
|
189
|
+
filters: { queryKey },
|
|
190
|
+
options: undefined
|
|
191
|
+
}))
|
|
192
|
+
const allTargets: ReadonlyArray<InvalidationTarget> = [...clientTargets, ...serverTargets]
|
|
193
|
+
|
|
194
|
+
if (!allTargets.length) return Effect.void
|
|
163
195
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
196
|
+
// Group targets by refetchType + options so each group can be merged into a single
|
|
197
|
+
// invalidateQueries call using a predicate, reducing N calls to 1 in the common case.
|
|
198
|
+
type Group = {
|
|
199
|
+
targets: Array<InvalidationTarget>
|
|
200
|
+
refetchType: InvalidateQueryFilters["refetchType"]
|
|
201
|
+
options: InvalidateOptions | undefined
|
|
202
|
+
}
|
|
203
|
+
const groups = new Map<string, Group>()
|
|
204
|
+
for (const target of allTargets) {
|
|
205
|
+
const key = `${target.filters?.refetchType ?? ""}|${target.options?.cancelRefetch ?? ""}|${
|
|
206
|
+
target.options?.throwOnError?.toString() ?? ""
|
|
207
|
+
}`
|
|
208
|
+
const existing = groups.get(key)
|
|
209
|
+
if (existing) {
|
|
210
|
+
existing.targets.push(target)
|
|
211
|
+
} else {
|
|
212
|
+
groups.set(key, { targets: [target], refetchType: target.filters?.refetchType, options: target.options })
|
|
168
213
|
}
|
|
169
|
-
return Effect
|
|
170
|
-
.andThen(
|
|
171
|
-
Effect.annotateCurrentSpan({ queryKey, opts }),
|
|
172
|
-
Effect.forEach(opts, (_) => invalidateQueries(_.filters, _.options), { concurrency: "inherit" })
|
|
173
|
-
)
|
|
174
|
-
.pipe(Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false }))
|
|
175
214
|
}
|
|
176
215
|
|
|
177
|
-
if (!queryKey) return Effect.void
|
|
178
|
-
|
|
179
216
|
return Effect
|
|
180
217
|
.andThen(
|
|
181
|
-
Effect.annotateCurrentSpan({
|
|
182
|
-
|
|
218
|
+
Effect.annotateCurrentSpan({ clientTargets, serverKeys }),
|
|
219
|
+
Effect.forEach(
|
|
220
|
+
groups.values(),
|
|
221
|
+
({ options, refetchType, targets }) =>
|
|
222
|
+
invalidateQueries(
|
|
223
|
+
{
|
|
224
|
+
...(refetchType !== undefined ? { refetchType } : {}),
|
|
225
|
+
predicate: (query) => targets.some((t) => t.filters ? matchQuery(t.filters, query) : true)
|
|
226
|
+
},
|
|
227
|
+
options
|
|
228
|
+
),
|
|
229
|
+
{ discard: true, concurrency: "inherit" }
|
|
230
|
+
)
|
|
183
231
|
)
|
|
184
232
|
.pipe(
|
|
185
233
|
Effect.tap(
|
|
@@ -191,15 +239,32 @@ export const invalidateQueries = (
|
|
|
191
239
|
)
|
|
192
240
|
})
|
|
193
241
|
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
242
|
+
const select = options?.select
|
|
243
|
+
|
|
244
|
+
const handle = <A, E, R>(eff: Effect.Effect<A, E, R>, input?: unknown) =>
|
|
245
|
+
Effect.gen(function*() {
|
|
246
|
+
const keysRef = yield* Ref.make<ReadonlyArray<InvalidationKey>>([])
|
|
247
|
+
const result = yield* eff.pipe(
|
|
248
|
+
Effect.provideService(InvalidationKeysFromServer, makeInvalidationKeysService(keysRef)),
|
|
249
|
+
Effect.onExit((exit) =>
|
|
250
|
+
Effect.gen(function*() {
|
|
251
|
+
const serverKeys = yield* Ref.get(keysRef)
|
|
252
|
+
yield* invalidateCache(input, exit, serverKeys)
|
|
253
|
+
})
|
|
200
254
|
)
|
|
201
255
|
)
|
|
202
|
-
|
|
256
|
+
if (select) {
|
|
257
|
+
return yield* select(result).pipe(
|
|
258
|
+
Effect.onExit((exit) =>
|
|
259
|
+
Effect.gen(function*() {
|
|
260
|
+
const serverKeys = yield* Ref.get(keysRef)
|
|
261
|
+
yield* invalidateCache(input, exit, serverKeys)
|
|
262
|
+
})
|
|
263
|
+
)
|
|
264
|
+
)
|
|
265
|
+
}
|
|
266
|
+
return result
|
|
267
|
+
})
|
|
203
268
|
|
|
204
269
|
return handle
|
|
205
270
|
}
|
|
@@ -210,24 +275,24 @@ export const makeMutation = () => {
|
|
|
210
275
|
* Pass a function that returns an Effect, e.g from a client action
|
|
211
276
|
* Executes query cache invalidation based on default rules or provided option.
|
|
212
277
|
*/
|
|
213
|
-
<I, E, A, R, Request extends Req, Id extends string>(
|
|
278
|
+
<I, E, A, R, Request extends Req, Id extends string, B = A, E2 = never, R2 = never>(
|
|
214
279
|
self: RequestHandlerWithInput<I, A, E, R, Request, Id>,
|
|
215
|
-
options?: MutationOptionsBase
|
|
216
|
-
): ((i: I) => Effect.Effect<
|
|
280
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
281
|
+
): ((i: I) => Effect.Effect<B, E | E2, R | R2>) & { readonly id: Id }
|
|
217
282
|
/**
|
|
218
283
|
* Pass an Effect, e.g from a client action
|
|
219
284
|
* Executes query cache invalidation based on default rules or provided option.
|
|
220
285
|
*/
|
|
221
|
-
<E, A, R, Request extends Req, Id extends string>(
|
|
286
|
+
<E, A, R, Request extends Req, Id extends string, B = A, E2 = never, R2 = never>(
|
|
222
287
|
self: RequestHandler<A, E, R, Request, Id>,
|
|
223
|
-
options?: MutationOptionsBase
|
|
224
|
-
): Effect.Effect<
|
|
225
|
-
} = <I, E, A, R, Request extends Req, Id extends string>(
|
|
288
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
289
|
+
): Effect.Effect<B, E | E2, R | R2> & { readonly id: Id }
|
|
290
|
+
} = <I, E, A, R, Request extends Req, Id extends string, B = A, E2 = never, R2 = never>(
|
|
226
291
|
self: RequestHandlerWithInput<I, A, E, R, Request, Id> | RequestHandler<A, E, R, Request, Id>,
|
|
227
|
-
options?: MutationOptionsBase
|
|
292
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
228
293
|
) => {
|
|
229
294
|
const queryClient = useQueryClient()
|
|
230
|
-
const handle = invalidateQueries(queryClient, self, options
|
|
295
|
+
const handle = invalidateQueries(queryClient, self, options as any)
|
|
231
296
|
const handler = self.handler
|
|
232
297
|
const r = Effect.isEffect(handler) ? handle(handler) : (i: I) => handle(handler(i), i)
|
|
233
298
|
|
|
@@ -245,23 +310,23 @@ export const useMakeMutation = () => {
|
|
|
245
310
|
* Pass a function that returns an Effect, e.g from a client action
|
|
246
311
|
* Executes query cache invalidation based on default rules or provided option.
|
|
247
312
|
*/
|
|
248
|
-
<I, E, A, R, Request extends Req, Id extends string>(
|
|
313
|
+
<I, E, A, R, Request extends Req, Id extends string, B = A, E2 = never, R2 = never>(
|
|
249
314
|
self: RequestHandlerWithInput<I, A, E, R, Request, Id>,
|
|
250
|
-
options?: MutationOptionsBase
|
|
251
|
-
): ((i: I) => Effect.Effect<
|
|
315
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
316
|
+
): ((i: I) => Effect.Effect<B, E | E2, R | R2>) & { readonly id: Id }
|
|
252
317
|
/**
|
|
253
318
|
* Pass an Effect, e.g from a client action
|
|
254
319
|
* Executes query cache invalidation based on default rules or provided option.
|
|
255
320
|
*/
|
|
256
|
-
<E, A, R, Request extends Req, Id extends string>(
|
|
321
|
+
<E, A, R, Request extends Req, Id extends string, B = A, E2 = never, R2 = never>(
|
|
257
322
|
self: RequestHandler<A, E, R, Request, Id>,
|
|
258
|
-
options?: MutationOptionsBase
|
|
259
|
-
): Effect.Effect<
|
|
260
|
-
} = <I, E, A, R, Request extends Req, Id extends string>(
|
|
323
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
324
|
+
): Effect.Effect<B, E | E2, R | R2> & { readonly id: Id }
|
|
325
|
+
} = <I, E, A, R, Request extends Req, Id extends string, B = A, E2 = never, R2 = never>(
|
|
261
326
|
self: RequestHandlerWithInput<I, A, E, R, Request, Id> | RequestHandler<A, E, R, Request, Id>,
|
|
262
|
-
options?: MutationOptionsBase
|
|
327
|
+
options?: MutationOptionsBase<A, B, E2, R2>
|
|
263
328
|
) => {
|
|
264
|
-
const handle = invalidateQueries(queryClient, self, options
|
|
329
|
+
const handle = invalidateQueries(queryClient, self, options as any)
|
|
265
330
|
const handler = self.handler
|
|
266
331
|
const r = Effect.isEffect(handler) ? handle(handler) : (i: I) => handle(handler(i), i)
|
|
267
332
|
|
package/test/dist/stubs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"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"}
|