@effect-app/vue 2.20.1 → 2.21.1
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 +12 -0
- package/dist/makeClient.d.ts +2 -2
- package/dist/mutate.d.ts +5 -20
- package/dist/mutate.d.ts.map +1 -1
- package/dist/mutate.js +11 -18
- package/package.json +1 -1
- package/src/mutate.ts +13 -38
package/CHANGELOG.md
CHANGED
package/dist/makeClient.d.ts
CHANGED
|
@@ -110,8 +110,8 @@ export declare const makeClient: <Locale extends string, R>(useIntl: MakeIntlRet
|
|
|
110
110
|
<Arg, E_7, A_12, Request_12 extends TaggedRequestClassAny>(self: RequestHandlerWithInput<Arg, A_12, E_7, R, Request_12>, arg: Arg | import("vue").WatchSource<Arg>, options?: import("./query.js").QueryObserverOptionsCustom<A_12, E_7, A_12, A_12, readonly unknown[], never> | undefined): readonly [ComputedRef<import("@effect-rx/rx/Result").Result<A_12, E_7>>, ComputedRef<A_12 | undefined>, (options?: import("@tanstack/vue-query").RefetchOptions) => Effect<import("@tanstack/vue-query").QueryObserverResult<A_12, import("./query.js").KnownFiberFailure<E_7>>>, import("@tanstack/vue-query").UseQueryReturnType<any, any>];
|
|
111
111
|
};
|
|
112
112
|
useSafeMutation: {
|
|
113
|
-
<I_1, E_8, A_13, R_9, Request_13 extends TaggedRequestClassAny, A2_9 = A_13, E2_9 = E_8, R2_9 = R_9>(self: RequestHandlerWithInput<I_1, A_13, E_8, R_9, Request_13>, options?: MutationOptions<A_13, E_8, R_9, A2_9, E2_9, R2_9, I_1>): readonly [Readonly<Ref<import("
|
|
114
|
-
<E_9, A_14, R_10, Request_14 extends TaggedRequestClassAny, A2_10 = A_14, E2_10 = E_9, R2_10 = R_10>(self: RequestHandler<A_14, E_9, R_10, Request_14>, options?: MutationOptions<A_14, E_9, R_10, A2_10, E2_10, R2_10>): readonly [Readonly<Ref<import("
|
|
113
|
+
<I_1, E_8, A_13, R_9, Request_13 extends TaggedRequestClassAny, A2_9 = A_13, E2_9 = E_8, R2_9 = R_9>(self: RequestHandlerWithInput<I_1, A_13, E_8, R_9, Request_13>, options?: MutationOptions<A_13, E_8, R_9, A2_9, E2_9, R2_9, I_1>): readonly [Readonly<Ref<import("@effect-rx/rx/Result").Result<A2_9, E2_9>>>, (i: I_1) => Effect<A2_9, E2_9, R2_9>];
|
|
114
|
+
<E_9, A_14, R_10, Request_14 extends TaggedRequestClassAny, A2_10 = A_14, E2_10 = E_9, R2_10 = R_10>(self: RequestHandler<A_14, E_9, R_10, Request_14>, options?: MutationOptions<A_14, E_9, R_10, A2_10, E2_10, R2_10>): readonly [Readonly<Ref<import("@effect-rx/rx/Result").Result<A2_10, E2_10>>>, Effect<A2_10, E2_10, R2_10>];
|
|
115
115
|
};
|
|
116
116
|
};
|
|
117
117
|
export {};
|
package/dist/mutate.d.ts
CHANGED
|
@@ -1,34 +1,19 @@
|
|
|
1
1
|
import * as Result from "@effect-rx/rx/Result";
|
|
2
2
|
import type { InvalidateOptions, InvalidateQueryFilters } from "@tanstack/vue-query";
|
|
3
|
-
import { Effect } from "effect-app";
|
|
3
|
+
import { Cause, Effect } from "effect-app";
|
|
4
4
|
import type { RequestHandler, RequestHandlerWithInput, TaggedRequestClassAny } from "effect-app/client/clientFor";
|
|
5
5
|
import type { ComputedRef, Ref } from "vue";
|
|
6
6
|
export declare const getQueryKey: (h: {
|
|
7
7
|
name: string;
|
|
8
8
|
}) => string[];
|
|
9
|
-
export declare function mutationResultToVue<A, E>(mutationResult:
|
|
9
|
+
export declare function mutationResultToVue<A, E>(mutationResult: Result.Result<A, E>): Res<A, E>;
|
|
10
10
|
export interface Res<A, E> {
|
|
11
11
|
readonly loading: boolean;
|
|
12
12
|
readonly data: A | undefined;
|
|
13
|
-
readonly error: E | undefined;
|
|
13
|
+
readonly error: Cause<E> | undefined;
|
|
14
14
|
}
|
|
15
15
|
export type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T);
|
|
16
16
|
export declare function make<A, E, R>(self: Effect<A, E, R>): readonly [import("vue").ShallowRef<Result.Result<A, E>, Result.Result<A, E>>, ComputedRef<A | undefined>, Effect.Effect<Result.Success<A, E> | Result.Failure<A, E>, never, R>];
|
|
17
|
-
export interface MutationInitial {
|
|
18
|
-
readonly _tag: "Initial";
|
|
19
|
-
}
|
|
20
|
-
export interface MutationLoading {
|
|
21
|
-
readonly _tag: "Loading";
|
|
22
|
-
}
|
|
23
|
-
export interface MutationSuccess<A> {
|
|
24
|
-
readonly _tag: "Success";
|
|
25
|
-
readonly data: A;
|
|
26
|
-
}
|
|
27
|
-
export interface MutationError<E> {
|
|
28
|
-
readonly _tag: "Error";
|
|
29
|
-
readonly error: E;
|
|
30
|
-
}
|
|
31
|
-
export type MutationResult<A, E> = MutationInitial | MutationLoading | MutationSuccess<A> | MutationError<E>;
|
|
32
17
|
export type MaybeRef<T> = Ref<T> | ComputedRef<T> | T;
|
|
33
18
|
type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
|
|
34
19
|
[Property in keyof T]: MaybeRefDeep<T[Property]>;
|
|
@@ -49,8 +34,8 @@ export interface MutationOptions<A, E, R, A2 = A, E2 = E, R2 = R, I = void> {
|
|
|
49
34
|
}[];
|
|
50
35
|
}
|
|
51
36
|
export declare const makeMutation: () => {
|
|
52
|
-
<I, E, A, R, Request extends TaggedRequestClassAny, A2 = A, E2 = E, R2 = R>(self: RequestHandlerWithInput<I, A, E, R, Request>, options?: MutationOptions<A, E, R, A2, E2, R2, I>): readonly [Readonly<Ref<
|
|
53
|
-
<E, A, R, Request extends TaggedRequestClassAny, A2 = A, E2 = E, R2 = R>(self: RequestHandler<A, E, R, Request>, options?: MutationOptions<A, E, R, A2, E2, R2>): readonly [Readonly<Ref<
|
|
37
|
+
<I, E, A, R, Request extends TaggedRequestClassAny, A2 = A, E2 = E, R2 = R>(self: RequestHandlerWithInput<I, A, E, R, Request>, options?: MutationOptions<A, E, R, A2, E2, R2, I>): readonly [Readonly<Ref<Result.Result<A2, E2>>>, (i: I) => Effect<A2, E2, R2>];
|
|
38
|
+
<E, A, R, Request extends TaggedRequestClassAny, A2 = A, E2 = E, R2 = R>(self: RequestHandler<A, E, R, Request>, options?: MutationOptions<A, E, R, A2, E2, R2>): readonly [Readonly<Ref<Result.Result<A2, E2>>>, Effect<A2, E2, R2>];
|
|
54
39
|
};
|
|
55
40
|
export interface MakeMutation2 extends ReturnType<typeof makeMutation> {
|
|
56
41
|
}
|
package/dist/mutate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEpF,OAAO,
|
|
1
|
+
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEjH,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAI3C,eAAO,MAAM,WAAW,MAAO;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,aAQ9C,CAAA;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAClC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAoBX;AAED,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;CACrC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AACtE,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,mLAiBlD;AAID,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACrD,KAAK,YAAY,CAAC,CAAC,IAAI,QAAQ,CAE7B,CAAC,SAAS,QAAQ,GAAG,CAAC,GAClB,CAAC,SAAS,MAAM,GAAG;KAChB,QAAQ,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACjD,GACD,CAAC,CACN,CAAA;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI;IACxE;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACvE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,KAAK;QAC1D,OAAO,CAAC,EAAE,YAAY,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAA;QAC1D,OAAO,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAA;KACtD,EAAE,CAAA;CACJ;AAaD,eAAO,MAAM,YAAY;KAMpB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,SAAS,qBAAqB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC9D,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,YACxC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAChD,SAAS,CACV,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EACpC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAC7B;KACA,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,SAAS,qBAAqB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC3D,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,YAC5B,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAC7C,SAAS,CACV,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EACpC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CACnB;CA8EJ,CAAA;AAGD,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,OAAO,YAAY,CAAC;CAAG"}
|
package/dist/mutate.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import * as Result from "@effect-rx/rx/Result";
|
|
3
3
|
import { useQueryClient } from "@tanstack/vue-query";
|
|
4
|
-
import {
|
|
4
|
+
import { Effect, Exit, Option } from "effect-app";
|
|
5
5
|
import { tuple } from "effect-app/Function";
|
|
6
6
|
import { computed, ref, shallowRef } from "vue";
|
|
7
7
|
import { makeQueryKey, reportRuntimeError } from "./lib.js";
|
|
@@ -17,26 +17,23 @@ export const getQueryKey = (h) => {
|
|
|
17
17
|
};
|
|
18
18
|
export function mutationResultToVue(mutationResult) {
|
|
19
19
|
switch (mutationResult._tag) {
|
|
20
|
-
case "
|
|
21
|
-
return { loading:
|
|
20
|
+
case "Initial": {
|
|
21
|
+
return { loading: mutationResult.waiting, data: undefined, error: undefined };
|
|
22
22
|
}
|
|
23
23
|
case "Success": {
|
|
24
24
|
return {
|
|
25
25
|
loading: false,
|
|
26
|
-
data: mutationResult.
|
|
26
|
+
data: mutationResult.value,
|
|
27
27
|
error: undefined
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
case "
|
|
30
|
+
case "Failure": {
|
|
31
31
|
return {
|
|
32
32
|
loading: false,
|
|
33
33
|
data: undefined,
|
|
34
|
-
error: mutationResult.
|
|
34
|
+
error: mutationResult.cause
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
case "Initial": {
|
|
38
|
-
return { loading: false, data: undefined, error: undefined };
|
|
39
|
-
}
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
export function make(self) {
|
|
@@ -66,19 +63,15 @@ export const makeMutation = () => {
|
|
|
66
63
|
*/
|
|
67
64
|
const useSafeMutation = (self, options) => {
|
|
68
65
|
const queryClient = useQueryClient();
|
|
69
|
-
const state = ref(
|
|
66
|
+
const state = ref(Result.initial());
|
|
70
67
|
const invalidateQueries = (filters, options) => Effect.promise(() => queryClient.invalidateQueries(filters, options));
|
|
71
68
|
function handleExit(exit) {
|
|
72
69
|
return Effect.sync(() => {
|
|
73
70
|
if (Exit.isSuccess(exit)) {
|
|
74
|
-
state.value =
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const err = Cause.failureOption(exit.cause);
|
|
78
|
-
if (Option.isSome(err)) {
|
|
79
|
-
state.value = { _tag: "Error", error: err.value };
|
|
71
|
+
state.value = Result.success(exit.value);
|
|
80
72
|
return;
|
|
81
73
|
}
|
|
74
|
+
state.value = Result.failure(exit.cause);
|
|
82
75
|
});
|
|
83
76
|
}
|
|
84
77
|
const invalidateCache = Effect.suspend(() => {
|
|
@@ -101,7 +94,7 @@ export const makeMutation = () => {
|
|
|
101
94
|
const mapHandler = options?.mapHandler ?? ((_) => _);
|
|
102
95
|
const handle = (self, name, i = void 0) => Effect
|
|
103
96
|
.sync(() => {
|
|
104
|
-
state.value =
|
|
97
|
+
state.value = Result.initial(true);
|
|
105
98
|
})
|
|
106
99
|
.pipe(Effect.zipRight(mapHandler(Effect.tapBoth(self, { onFailure: () => invalidateCache, onSuccess: () => invalidateCache }), i)), Effect.tapDefect(reportRuntimeError), Effect.onExit(handleExit), Effect.withSpan(`mutation ${name}`, { captureStackTrace: false }));
|
|
107
100
|
const handler = self.handler;
|
|
@@ -110,4 +103,4 @@ export const makeMutation = () => {
|
|
|
110
103
|
};
|
|
111
104
|
return useSafeMutation;
|
|
112
105
|
};
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxzQkFBc0IsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUUzRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFtQixFQUFFLEVBQUU7SUFDakQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMvQyw2RkFBNkY7SUFDN0Ysb0ZBQW9GO0lBQ3BGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNqRixJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsQ0FB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
|
package/package.json
CHANGED
package/src/mutate.ts
CHANGED
|
@@ -20,36 +20,33 @@ export const getQueryKey = (h: { name: string }) => {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export function mutationResultToVue<A, E>(
|
|
23
|
-
mutationResult:
|
|
23
|
+
mutationResult: Result.Result<A, E>
|
|
24
24
|
): Res<A, E> {
|
|
25
25
|
switch (mutationResult._tag) {
|
|
26
|
-
case "
|
|
27
|
-
return { loading:
|
|
26
|
+
case "Initial": {
|
|
27
|
+
return { loading: mutationResult.waiting, data: undefined, error: undefined }
|
|
28
28
|
}
|
|
29
29
|
case "Success": {
|
|
30
30
|
return {
|
|
31
31
|
loading: false,
|
|
32
|
-
data: mutationResult.
|
|
32
|
+
data: mutationResult.value,
|
|
33
33
|
error: undefined
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
case "
|
|
36
|
+
case "Failure": {
|
|
37
37
|
return {
|
|
38
38
|
loading: false,
|
|
39
39
|
data: undefined,
|
|
40
|
-
error: mutationResult.
|
|
40
|
+
error: mutationResult.cause
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
case "Initial": {
|
|
44
|
-
return { loading: false, data: undefined, error: undefined }
|
|
45
|
-
}
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
|
|
49
46
|
export interface Res<A, E> {
|
|
50
47
|
readonly loading: boolean
|
|
51
48
|
readonly data: A | undefined
|
|
52
|
-
readonly error: E | undefined
|
|
49
|
+
readonly error: Cause<E> | undefined
|
|
53
50
|
}
|
|
54
51
|
|
|
55
52
|
export type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T)
|
|
@@ -72,25 +69,7 @@ export function make<A, E, R>(self: Effect<A, E, R>) {
|
|
|
72
69
|
return tuple(result, latestSuccess, execute)
|
|
73
70
|
}
|
|
74
71
|
|
|
75
|
-
export interface MutationInitial {
|
|
76
|
-
readonly _tag: "Initial"
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export interface MutationLoading {
|
|
80
|
-
readonly _tag: "Loading"
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface MutationSuccess<A> {
|
|
84
|
-
readonly _tag: "Success"
|
|
85
|
-
readonly data: A
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export interface MutationError<E> {
|
|
89
|
-
readonly _tag: "Error"
|
|
90
|
-
readonly error: E
|
|
91
|
-
}
|
|
92
72
|
|
|
93
|
-
export type MutationResult<A, E> = MutationInitial | MutationLoading | MutationSuccess<A> | MutationError<E>
|
|
94
73
|
|
|
95
74
|
export type MaybeRef<T> = Ref<T> | ComputedRef<T> | T
|
|
96
75
|
type MaybeRefDeep<T> = MaybeRef<
|
|
@@ -139,14 +118,14 @@ export const makeMutation = () => {
|
|
|
139
118
|
self: RequestHandlerWithInput<I, A, E, R, Request>,
|
|
140
119
|
options?: MutationOptions<A, E, R, A2, E2, R2, I>
|
|
141
120
|
): readonly [
|
|
142
|
-
Readonly<Ref<
|
|
121
|
+
Readonly<Ref<Result.Result<A2, E2>>>,
|
|
143
122
|
(i: I) => Effect<A2, E2, R2>
|
|
144
123
|
]
|
|
145
124
|
<E, A, R, Request extends TaggedRequestClassAny, A2 = A, E2 = E, R2 = R>(
|
|
146
125
|
self: RequestHandler<A, E, R, Request>,
|
|
147
126
|
options?: MutationOptions<A, E, R, A2, E2, R2>
|
|
148
127
|
): readonly [
|
|
149
|
-
Readonly<Ref<
|
|
128
|
+
Readonly<Ref<Result.Result<A2, E2>>>,
|
|
150
129
|
Effect<A2, E2, R2>
|
|
151
130
|
]
|
|
152
131
|
} = <I, E, A, R, Request extends TaggedRequestClassAny, A2 = A, E2 = E, R2 = R>(
|
|
@@ -154,7 +133,7 @@ export const makeMutation = () => {
|
|
|
154
133
|
options?: MutationOptions<A, E, R, A2, E2, R2, I>
|
|
155
134
|
) => {
|
|
156
135
|
const queryClient = useQueryClient()
|
|
157
|
-
const state: Ref<
|
|
136
|
+
const state: Ref<Result.Result<A2, E2>> = ref<Result.Result<A2, E2>>(Result.initial()) as any
|
|
158
137
|
|
|
159
138
|
const invalidateQueries = (
|
|
160
139
|
filters?: MaybeRefDeep<InvalidateQueryFilters>,
|
|
@@ -164,15 +143,11 @@ export const makeMutation = () => {
|
|
|
164
143
|
function handleExit(exit: Exit.Exit<A2, E2>) {
|
|
165
144
|
return Effect.sync(() => {
|
|
166
145
|
if (Exit.isSuccess(exit)) {
|
|
167
|
-
state.value =
|
|
146
|
+
state.value = Result.success(exit.value)
|
|
168
147
|
return
|
|
169
148
|
}
|
|
170
149
|
|
|
171
|
-
|
|
172
|
-
if (Option.isSome(err)) {
|
|
173
|
-
state.value = { _tag: "Error", error: err.value }
|
|
174
|
-
return
|
|
175
|
-
}
|
|
150
|
+
state.value = Result.failure(exit.cause)
|
|
176
151
|
})
|
|
177
152
|
}
|
|
178
153
|
|
|
@@ -207,7 +182,7 @@ export const makeMutation = () => {
|
|
|
207
182
|
const handle = (self: Effect<A, E, R>, name: string, i: I | void = void 0) =>
|
|
208
183
|
Effect
|
|
209
184
|
.sync(() => {
|
|
210
|
-
state.value =
|
|
185
|
+
state.value = Result.initial(true)
|
|
211
186
|
})
|
|
212
187
|
.pipe(
|
|
213
188
|
Effect.zipRight(
|