@effect-app/vue 2.22.0 → 2.23.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/vue
2
2
 
3
+ ## 2.23.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 9185c11: add "asResult"
8
+
3
9
  ## 2.22.0
4
10
 
5
11
  ### Minor Changes
package/dist/mutate.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as Result from "@effect-rx/rx/Result";
2
2
  import type { InvalidateOptions, InvalidateQueryFilters } from "@tanstack/vue-query";
3
- import { Cause, Effect } from "effect-app";
3
+ import type { Cause } from "effect-app";
4
+ import { Effect } from "effect-app";
4
5
  import type { RequestHandler, RequestHandlerWithInput, TaggedRequestClassAny } from "effect-app/client/clientFor";
5
6
  import type { ComputedRef, Ref } from "vue";
6
7
  export declare const getQueryKey: (h: {
@@ -33,6 +34,7 @@ export interface MutationOptions<A, E, R, A2 = A, E2 = E, R2 = R, I = void> {
33
34
  options?: MaybeRefDeep<InvalidateOptions> | undefined;
34
35
  }[];
35
36
  }
37
+ export declare const asResult: <Args extends readonly any[], A, E, R>(handler: (...args: Args) => Effect<A, E, R>) => readonly [import("vue").ShallowRef<Result.Result<A, E>, Result.Result<A, E>>, (...args: Args) => Effect.Effect<A, E, R>];
36
38
  export declare const makeMutation: () => {
37
39
  <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
40
  <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>];
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
package/dist/mutate.js CHANGED
@@ -1,9 +1,9 @@
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 { Effect, Exit, Option } from "effect-app";
4
+ import { Effect, Option } from "effect-app";
5
5
  import { tuple } from "effect-app/Function";
6
- import { computed, ref, shallowRef } from "vue";
6
+ import { computed, shallowRef } from "vue";
7
7
  import { makeQueryKey, reportRuntimeError } from "./lib.js";
8
8
  export const getQueryKey = (h) => {
9
9
  const key = makeQueryKey(h);
@@ -56,6 +56,15 @@ export function make(self) {
56
56
  // nses.push(ns.slice(0, i + 1).join("/"))
57
57
  // }
58
58
  */
59
+ export const asResult = (handler) => {
60
+ const state = shallowRef(Result.initial());
61
+ const act = (...args) => Effect
62
+ .sync(() => {
63
+ state.value = Result.initial(true);
64
+ })
65
+ .pipe(Effect.zipRight(Effect.suspend(() => handler(...args))), Effect.onExit((exit) => Effect.sync(() => (state.value = Result.fromExit(exit)))));
66
+ return tuple(state, act);
67
+ };
59
68
  export const makeMutation = () => {
60
69
  /**
61
70
  * Pass a function that returns an Effect, e.g from a client action, or an Effect
@@ -63,17 +72,7 @@ export const makeMutation = () => {
63
72
  */
64
73
  const useSafeMutation = (self, options) => {
65
74
  const queryClient = useQueryClient();
66
- const state = ref(Result.initial());
67
75
  const invalidateQueries = (filters, options) => Effect.promise(() => queryClient.invalidateQueries(filters, options));
68
- function handleExit(exit) {
69
- return Effect.sync(() => {
70
- if (Exit.isSuccess(exit)) {
71
- state.value = Result.success(exit.value);
72
- return;
73
- }
74
- state.value = Result.failure(exit.cause);
75
- });
76
- }
77
76
  const invalidateCache = Effect.suspend(() => {
78
77
  const queryKey = getQueryKey(self);
79
78
  if (options?.queryInvalidation) {
@@ -92,15 +91,12 @@ export const makeMutation = () => {
92
91
  .pipe(Effect.withSpan("client.query.invalidation", { captureStackTrace: false }));
93
92
  });
94
93
  const mapHandler = options?.mapHandler ?? ((_) => _);
95
- const handle = (self, name, i = void 0) => Effect
96
- .sync(() => {
97
- state.value = Result.initial(true);
98
- })
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 }));
94
+ const [state, handle_] = asResult((self, i = void 0) => mapHandler(Effect.tapBoth(self, { onFailure: () => invalidateCache, onSuccess: () => invalidateCache }), i));
95
+ const handle = (self, name, i = void 0) => handle_(self, i).pipe(Effect.tapDefect(reportRuntimeError), Effect.withSpan(`mutation ${name}`, { captureStackTrace: false }));
100
96
  const handler = self.handler;
101
97
  const r = tuple(state, Effect.isEffect(handler) ? handle(handler, self.name) : (i) => handle(handler(i), self.name, i));
102
98
  return r;
103
99
  };
104
100
  return useSafeMutation;
105
101
  };
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxzQkFBc0IsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUUzRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFtQixFQUFFLEVBQUU7SUFDakQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMvQyw2RkFBNkY7SUFDN0Ysb0ZBQW9GO0lBQ3BGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNqRixJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsQ0FB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
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxzQkFBc0IsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFM0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBbUIsRUFBRSxFQUFFO0lBQ2pELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDL0MsNkZBQTZGO0lBQzdGLG9GQUFvRjtJQUNwRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDakYsSUFBSSxDQUFDLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN6RCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUMsQ0FBQTtBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsY0FBbUM7SUFFbkMsUUFBUSxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2YsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFBO1FBQy9FLENBQUM7UUFDRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDZixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSztnQkFDMUIsS0FBSyxFQUFFLFNBQVM7YUFDakIsQ0FBQTtRQUNILENBQUM7UUFDRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDZixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSzthQUM1QixDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBU0QsTUFBTSxVQUFVLElBQUksQ0FBVSxJQUFxQjtJQUNqRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBeUIsQ0FBQyxDQUFBO0lBRWxFLE1BQU0sT0FBTyxHQUFHLE1BQU07U0FDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0MsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMzRCxDQUFBO0lBRUgsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXZGLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDOUMsQ0FBQztBQTRCRCx3REFBd0Q7QUFDeEQsOERBQThEO0FBQzlELDJGQUEyRjtBQUMzRixNQUFNO0FBQ047Ozs7O2tCQUtrQjtBQUVsQixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsT0FBMkMsRUFDM0MsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBc0IsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFL0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQVUsRUFBRSxFQUFFLENBQzVCLE1BQU07U0FDSCxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BDLENBQUMsQ0FBQztTQUNELElBQUksQ0FDSCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNsRixDQUFBO0lBRUwsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQzFCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUU7SUFDL0I7OztPQUdHO0lBQ0gsTUFBTSxlQUFlLEdBZWpCLENBQ0YsSUFBcUYsRUFDckYsT0FBaUQsRUFDakQsRUFBRTtRQUNGLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO1FBRXBDLE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsT0FBOEMsRUFDOUMsT0FBeUMsRUFDekMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRTFFLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQzFDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUVsQyxJQUFJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFBO2dCQUNwQixDQUFDO2dCQUNELE9BQU8sTUFBTTtxQkFDVixPQUFPLENBQ04sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQzlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUNqRztxQkFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUNyRixDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFBO1lBRWpDLE9BQU8sTUFBTTtpQkFDVixPQUFPLENBQ04sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFDeEMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUNoQztpQkFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNyRixDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFcEQsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFxQixFQUFFLElBQWMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFFLFVBQVUsQ0FDNUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUM1RixDQUFNLENBQ2dCLENBQUMsQ0FBQTtRQUV6QixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQXFCLEVBQUUsSUFBWSxFQUFFLElBQWMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUMzRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNwQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUNsRSxDQUFBO1FBRUgsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTtRQUM1QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQ2IsS0FBSyxFQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNuRyxDQUFBO1FBRUQsT0FBTyxDQUFRLENBQUE7SUFDakIsQ0FBQyxDQUFBO0lBQ0QsT0FBTyxlQUFlLENBQUE7QUFDeEIsQ0FBQyxDQUFBIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue",
3
- "version": "2.22.0",
3
+ "version": "2.23.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
package/src/mutate.ts CHANGED
@@ -2,11 +2,12 @@
2
2
  import * as Result from "@effect-rx/rx/Result"
3
3
  import type { InvalidateOptions, InvalidateQueryFilters } from "@tanstack/vue-query"
4
4
  import { useQueryClient } from "@tanstack/vue-query"
5
- import { Cause, Effect, Exit, Option } from "effect-app"
5
+ import type { Cause } from "effect-app"
6
+ import { Effect, Option } from "effect-app"
6
7
  import type { RequestHandler, RequestHandlerWithInput, TaggedRequestClassAny } from "effect-app/client/clientFor"
7
8
  import { tuple } from "effect-app/Function"
8
9
  import type { ComputedRef, Ref } from "vue"
9
- import { computed, ref, shallowRef } from "vue"
10
+ import { computed, shallowRef } from "vue"
10
11
  import { makeQueryKey, reportRuntimeError } from "./lib.js"
11
12
 
12
13
  export const getQueryKey = (h: { name: string }) => {
@@ -69,8 +70,6 @@ export function make<A, E, R>(self: Effect<A, E, R>) {
69
70
  return tuple(result, latestSuccess, execute)
70
71
  }
71
72
 
72
-
73
-
74
73
  export type MaybeRef<T> = Ref<T> | ComputedRef<T> | T
75
74
  type MaybeRefDeep<T> = MaybeRef<
76
75
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
@@ -108,6 +107,24 @@ export interface MutationOptions<A, E, R, A2 = A, E2 = E, R2 = R, I = void> {
108
107
  // }
109
108
  */
110
109
 
110
+ export const asResult = <Args extends readonly any[], A, E, R>(
111
+ handler: (...args: Args) => Effect<A, E, R>
112
+ ) => {
113
+ const state = shallowRef<Result.Result<A, E>>(Result.initial())
114
+
115
+ const act = (...args: Args) =>
116
+ Effect
117
+ .sync(() => {
118
+ state.value = Result.initial(true)
119
+ })
120
+ .pipe(
121
+ Effect.zipRight(Effect.suspend(() => handler(...args))),
122
+ Effect.onExit((exit) => Effect.sync(() => (state.value = Result.fromExit(exit))))
123
+ )
124
+
125
+ return tuple(state, act)
126
+ }
127
+
111
128
  export const makeMutation = () => {
112
129
  /**
113
130
  * Pass a function that returns an Effect, e.g from a client action, or an Effect
@@ -133,24 +150,12 @@ export const makeMutation = () => {
133
150
  options?: MutationOptions<A, E, R, A2, E2, R2, I>
134
151
  ) => {
135
152
  const queryClient = useQueryClient()
136
- const state: Ref<Result.Result<A2, E2>> = ref<Result.Result<A2, E2>>(Result.initial()) as any
137
153
 
138
154
  const invalidateQueries = (
139
155
  filters?: MaybeRefDeep<InvalidateQueryFilters>,
140
156
  options?: MaybeRefDeep<InvalidateOptions>
141
157
  ) => Effect.promise(() => queryClient.invalidateQueries(filters, options))
142
158
 
143
- function handleExit(exit: Exit.Exit<A2, E2>) {
144
- return Effect.sync(() => {
145
- if (Exit.isSuccess(exit)) {
146
- state.value = Result.success(exit.value)
147
- return
148
- }
149
-
150
- state.value = Result.failure(exit.cause)
151
- })
152
- }
153
-
154
159
  const invalidateCache = Effect.suspend(() => {
155
160
  const queryKey = getQueryKey(self)
156
161
 
@@ -179,22 +184,16 @@ export const makeMutation = () => {
179
184
 
180
185
  const mapHandler = options?.mapHandler ?? ((_) => _)
181
186
 
187
+ const [state, handle_] = asResult((self: Effect<A, E, R>, i: I | void = void 0) => (mapHandler(
188
+ Effect.tapBoth(self, { onFailure: () => invalidateCache, onSuccess: () => invalidateCache }),
189
+ i as I
190
+ ) as Effect<A2, E2, R2>))
191
+
182
192
  const handle = (self: Effect<A, E, R>, name: string, i: I | void = void 0) =>
183
- Effect
184
- .sync(() => {
185
- state.value = Result.initial(true)
186
- })
187
- .pipe(
188
- Effect.zipRight(
189
- mapHandler(
190
- Effect.tapBoth(self, { onFailure: () => invalidateCache, onSuccess: () => invalidateCache }),
191
- i as I
192
- ) as Effect<A2, E2, R2>
193
- ),
194
- Effect.tapDefect(reportRuntimeError),
195
- Effect.onExit(handleExit),
196
- Effect.withSpan(`mutation ${name}`, { captureStackTrace: false })
197
- )
193
+ handle_(self, i).pipe(
194
+ Effect.tapDefect(reportRuntimeError),
195
+ Effect.withSpan(`mutation ${name}`, { captureStackTrace: false })
196
+ )
198
197
 
199
198
  const handler = self.handler
200
199
  const r = tuple(