@effect-app/vue 1.25.2 → 1.26.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.
@@ -0,0 +1,134 @@
1
+ import type { MutationResult } from "@effect-app/vue";
2
+ import { Result } from "@effect-app/vue";
3
+ import { type MaybeRefOrGetter, type Pausable, type UseIntervalFnOptions } from "@vueuse/core";
4
+ import type { Either } from "effect-app";
5
+ import { Cause, Effect, S } from "effect-app";
6
+ import { type SupportedErrors } from "effect-app/client";
7
+ import { type ComputedRef } from "vue";
8
+ import type { MakeIntlReturn } from "./makeIntl.js";
9
+ import type { MakeMutation2, MutationOptions } from "./mutate2.js";
10
+ /**
11
+ * Use this after handling an error yourself, still continueing on the Error track, but the error will not be reported.
12
+ */
13
+ export declare class SuppressErrors extends Cause.YieldableError {
14
+ readonly _tag = "SuppressErrors";
15
+ }
16
+ export type ResponseErrors = S.ParseResult.ParseError | SupportedErrors | SuppressErrors;
17
+ export declare function pauseWhileProcessing(iv: Pausable, pmf: () => Promise<unknown>): Promise<unknown>;
18
+ export declare function useIntervalPauseWhileProcessing(pmf: () => Promise<unknown>, interval?: MaybeRefOrGetter<number>, options?: Omit<UseIntervalFnOptions, "immediateCallback">): {
19
+ isActive: Readonly<import("vue").Ref<boolean, boolean>>;
20
+ };
21
+ export interface Opts<A> extends MutationOptions {
22
+ suppressErrorToast?: boolean;
23
+ suppressSuccessToast?: boolean;
24
+ successToast?: (a: A) => any;
25
+ }
26
+ export declare const withSuccess: {
27
+ <I, E extends ResponseErrors, A, X, R>(self: {
28
+ handler: (i: I) => Effect<A, E, R>;
29
+ name: string;
30
+ }, onSuccess: (a: A, i: I) => Promise<X>): {
31
+ handler: (i: I) => Effect<X, E, R>;
32
+ name: string;
33
+ };
34
+ <E extends ResponseErrors, A, X, R>(self: {
35
+ handler: Effect<A, E, R>;
36
+ name: string;
37
+ }, onSuccess: (_: A) => Promise<X>): {
38
+ handler: Effect<X, E, R>;
39
+ name: string;
40
+ };
41
+ };
42
+ export declare const withSuccessE: {
43
+ <I, E extends ResponseErrors, A, E2, X, R>(self: {
44
+ handler: (i: I) => Effect<A, E, R>;
45
+ name: string;
46
+ }, onSuccessE: (_: A, i: I) => Effect<X, E2>): {
47
+ handler: (i: I) => Effect<X, E | E2, R>;
48
+ name: string;
49
+ };
50
+ <E extends ResponseErrors, A, E2, X, R>(self: {
51
+ handler: Effect<A, E, R>;
52
+ name: string;
53
+ }, onSuccessE: (_: A) => Effect<X, E2>): {
54
+ handler: Effect<X, E | E2, R>;
55
+ name: string;
56
+ };
57
+ };
58
+ export interface Res<A, E> {
59
+ readonly loading: boolean;
60
+ readonly data: A | undefined;
61
+ readonly error: E | undefined;
62
+ }
63
+ type WithAction<A> = A & {
64
+ action: string;
65
+ };
66
+ type Resp<I, E, A> = readonly [
67
+ ComputedRef<Res<A, E>>,
68
+ WithAction<(I: I) => Promise<void>>
69
+ ];
70
+ type ActResp<E, A> = readonly [
71
+ ComputedRef<Res<A, E>>,
72
+ WithAction<() => Promise<void>>
73
+ ];
74
+ export declare function mutationResultToVue<A, E>(mutationResult: MutationResult<A, E>): Res<A, E>;
75
+ export declare const makeClient2: <Locale extends string, R>(useIntl: MakeIntlReturn<Locale>["useIntl"], useToast: () => {
76
+ error: (message: string) => void;
77
+ warning: (message: string) => void;
78
+ success: (message: string) => void;
79
+ }, useSafeMutation: MakeMutation2, messages?: Record<string, string | undefined>) => {
80
+ useSafeMutationWithState: <I, E, A>(self: {
81
+ handler: (i: I) => Effect<A, E, R>;
82
+ name: string;
83
+ }) => readonly [ComputedRef<Res<A, E>>, (i: I) => Effect<A, E, R>];
84
+ useAndHandleMutation: {
85
+ <I, E_1 extends ResponseErrors, A_1>(self: {
86
+ handler: (i: I) => Effect<A_1, E_1, R>;
87
+ name: string;
88
+ }, action: string, options?: Opts<A_1>): Resp<I, A_1, E_1>;
89
+ <E_2 extends ResponseErrors, A_2>(self: {
90
+ handler: Effect<A_2, E_2, R>;
91
+ name: string;
92
+ }, action: string, options?: Opts<A_2>): ActResp<E_2, A_2>;
93
+ };
94
+ makeUseAndHandleMutation: (onSuccess?: () => Promise<void>, defaultOptions?: Opts<any>) => {
95
+ <I, E_2 extends ResponseErrors, A_3>(self: {
96
+ handler: (i: I) => Effect<A_3, E_2, R>;
97
+ name: string;
98
+ }, action: string, options?: Opts<A_3>): Resp<I, A_3, E_2>;
99
+ <E_3 extends ResponseErrors, A_4>(self: {
100
+ handler: Effect<A_4, E_3, R>;
101
+ name: string;
102
+ }, action: string, options?: Opts<A_4>): ActResp<E_3, A_4>;
103
+ };
104
+ useHandleRequestWithToast: () => <E_3 extends ResponseErrors, A_5, Args extends unknown[]>(f: (...args: Args) => Promise<Either<A_5, E_3>>, action: string, options?: Opts<A_5>) => ((...a: Args) => Promise<void>) & {
105
+ action: string;
106
+ };
107
+ };
108
+ export declare const mapHandler: {
109
+ <I, E, R, A, E2, A2, R2>(self: {
110
+ handler: (i: I) => Effect<A, E, R>;
111
+ name: string;
112
+ mapPath: (i: I) => string;
113
+ }, map: (i: I) => (handler: Effect<A, E, R>) => Effect<A2, E2, R2>): {
114
+ handler: (i: I) => Effect<A2, E2, R2>;
115
+ name: string;
116
+ mapPath: (i: I) => string;
117
+ };
118
+ <E, A, R, E2, A2, R2>(self: {
119
+ handler: Effect<A, E, R>;
120
+ name: string;
121
+ mapPath: string;
122
+ }, map: (handler: Effect<A, E, R>) => Effect<A2, E2, R2>): {
123
+ handler: Effect<A2, E2, R2>;
124
+ name: string;
125
+ mapPath: string;
126
+ };
127
+ };
128
+ export declare function composeQueries<R extends Record<string, Result.Result<any, any>>>(results: R, renderPreviousOnFailure?: boolean): Result.Result<{
129
+ [Property in keyof R]: R[Property] extends Result.Result<infer A, any> ? A : never;
130
+ }, {
131
+ [Property in keyof R]: R[Property] extends Result.Result<any, infer E> ? E : never;
132
+ }[keyof R]>;
133
+ export {};
134
+ //# sourceMappingURL=makeClient2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeClient2.d.ts","sourceRoot":"","sources":["../src/makeClient2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { flow, pipe, tuple } from "@effect-app/core/Function";
3
+ import { Result } from "@effect-app/vue";
4
+ import * as Sentry from "@sentry/browser";
5
+ import { useIntervalFn } from "@vueuse/core";
6
+ import { Array, Cause, Effect, Match, Option, Runtime, S } from "effect-app";
7
+ import { Failure, Success } from "effect-app/Operations";
8
+ import { dropUndefinedT } from "effect-app/utils";
9
+ import { computed } from "vue";
10
+ /**
11
+ * Use this after handling an error yourself, still continueing on the Error track, but the error will not be reported.
12
+ */
13
+ export class SuppressErrors extends Cause.YieldableError {
14
+ _tag = "SuppressErrors";
15
+ }
16
+ export function pauseWhileProcessing(iv, pmf) {
17
+ return Promise
18
+ .resolve(iv.pause())
19
+ .then(() => pmf())
20
+ .finally(() => iv.resume());
21
+ }
22
+ export function useIntervalPauseWhileProcessing(pmf, interval, options) {
23
+ const iv = useIntervalFn(() => pauseWhileProcessing(iv, pmf), interval, options ? { ...options, immediateCallback: false } : options);
24
+ return {
25
+ isActive: iv.isActive
26
+ };
27
+ }
28
+ export const withSuccess = (self, onSuccess) => ({
29
+ ...self,
30
+ handler: typeof self.handler === "function"
31
+ ? (i) => pipe(self.handler(i), Effect.flatMap((_) => Effect.promise(() => onSuccess(_, i)).pipe(Effect.withSpan("onSuccess"))))
32
+ : Effect.flatMap(self.handler, (_) => Effect.promise(() => onSuccess(_)).pipe(Effect.withSpan("onSuccess")))
33
+ });
34
+ export const withSuccessE = (self, onSuccessE) => {
35
+ return {
36
+ ...self,
37
+ handler: typeof self.handler === "function"
38
+ ? (i) => pipe(self.handler(i), Effect.flatMap((_) => onSuccessE(_, i)))
39
+ : Effect.flatMap(self.handler, (_) => onSuccessE(_))
40
+ };
41
+ };
42
+ export function mutationResultToVue(mutationResult) {
43
+ switch (mutationResult._tag) {
44
+ case "Loading": {
45
+ return { loading: true, data: undefined, error: undefined };
46
+ }
47
+ case "Success": {
48
+ return {
49
+ loading: false,
50
+ data: mutationResult.data,
51
+ error: undefined
52
+ };
53
+ }
54
+ case "Error": {
55
+ return {
56
+ loading: false,
57
+ data: undefined,
58
+ error: mutationResult.error
59
+ };
60
+ }
61
+ case "Initial": {
62
+ return { loading: false, data: undefined, error: undefined };
63
+ }
64
+ }
65
+ }
66
+ export const makeClient2 = (useIntl, useToast, useSafeMutation, messages = {}) => {
67
+ const useHandleRequestWithToast = () => {
68
+ const toast = useToast();
69
+ const { intl } = useIntl();
70
+ return handleRequestWithToast;
71
+ /**
72
+ * Pass a function that returns a Promise.
73
+ * Returns an execution function which reports errors as Toast.
74
+ */
75
+ function handleRequestWithToast(f, action, options = { suppressErrorToast: false }) {
76
+ const message = messages[action] ?? action;
77
+ const warnMessage = intl.value.formatMessage({ id: "handle.with_warnings" }, { action: message });
78
+ const successMessage = intl.value.formatMessage({ id: "handle.success" }, { action: message });
79
+ const errorMessage = intl.value.formatMessage({ id: "handle.with_errors" }, { action: message });
80
+ return Object.assign(flow(f, (p) => p.then((r) => r._tag === "Right"
81
+ ? S.is(Failure)(r.right)
82
+ ? Promise
83
+ .resolve(toast.warning(warnMessage + r.right.message
84
+ ? "\n" + r.right.message
85
+ : ""))
86
+ .then((_) => { })
87
+ : Promise
88
+ .resolve(toast.success(successMessage
89
+ + (S.is(Success)(r.right) && r.right.message
90
+ ? "\n" + r.right.message
91
+ : "")))
92
+ .then((_) => { })
93
+ : r.left._tag === "SuppressErrors"
94
+ ? Promise.resolve(void 0)
95
+ : Promise
96
+ .resolve(!options.suppressErrorToast
97
+ && toast.error(`${errorMessage}:\n` + renderError(r.left)))
98
+ .then((_) => {
99
+ console.warn(r.left, r.left.toString());
100
+ }), (err) => {
101
+ if (Cause.isInterruptedException(err)
102
+ || (Runtime.isFiberFailure(err)
103
+ && Cause.isInterruptedOnly(err[Runtime.FiberFailureCauseId]))) {
104
+ return;
105
+ }
106
+ const extra = {
107
+ action,
108
+ message: `Unexpected Error trying to ${action}`
109
+ };
110
+ Sentry.captureException(err, {
111
+ extra
112
+ });
113
+ console.error(err, extra);
114
+ return toast.error(intl.value.formatMessage({ id: "handle.unexpected_error" }, {
115
+ action: message,
116
+ error: JSON.stringify(err, undefined, 2)
117
+ }));
118
+ })), { action });
119
+ }
120
+ function renderError(e) {
121
+ return Match.value(e).pipe(Match.tags({
122
+ // HttpErrorRequest: e =>
123
+ // intl.value.formatMessage(
124
+ // { id: "handle.request_error" },
125
+ // { error: `${e.error}` },
126
+ // ),
127
+ // HttpErrorResponse: e =>
128
+ // e.response.status >= 500 ||
129
+ // e.response.body._tag !== "Some" ||
130
+ // !e.response.body.value
131
+ // ? intl.value.formatMessage(
132
+ // { id: "handle.error_response" },
133
+ // {
134
+ // error: `${
135
+ // e.response.body._tag === "Some" && e.response.body.value
136
+ // ? parseError(e.response.body.value)
137
+ // : "Unknown"
138
+ // } (${e.response.status})`,
139
+ // },
140
+ // )
141
+ // : intl.value.formatMessage(
142
+ // { id: "handle.unexpected_error" },
143
+ // {
144
+ // error:
145
+ // JSON.stringify(e.response.body, undefined, 2) +
146
+ // "( " +
147
+ // e.response.status +
148
+ // ")",
149
+ // },
150
+ // ),
151
+ // ResponseError: e =>
152
+ // intl.value.formatMessage(
153
+ // { id: "handle.response_error" },
154
+ // { error: `${e.error}` },
155
+ // ),
156
+ ParseError: (e) => {
157
+ console.warn(e.toString());
158
+ return intl.value.formatMessage({ id: "validation.failed" });
159
+ }
160
+ }), Match.orElse((e) => intl.value.formatMessage({ id: "handle.unexpected_error" }, {
161
+ error: `${e.message ?? e._tag ?? e}`
162
+ })));
163
+ }
164
+ };
165
+ /**
166
+ * Pass a function that returns an Effect, e.g from a client action, give it a name, and optionally pass an onSuccess callback.
167
+ * Returns a tuple with state ref and execution function which reports errors as Toast.
168
+ */
169
+ const useAndHandleMutation = (self, action, options) => {
170
+ const handleRequestWithToast = useHandleRequestWithToast();
171
+ const [a, b] = useSafeMutation({
172
+ handler: Effect.isEffect(self.handler)
173
+ ? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
174
+ : (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args))),
175
+ name: self.name
176
+ }, dropUndefinedT({
177
+ queryInvalidation: options?.queryInvalidation
178
+ }));
179
+ return tuple(computed(() => mutationResultToVue(a.value)), handleRequestWithToast(b, action, options));
180
+ };
181
+ function makeUseAndHandleMutation(onSuccess, defaultOptions) {
182
+ return ((self, action, options) => {
183
+ return useAndHandleMutation({
184
+ handler: typeof self.handler === "function"
185
+ ? onSuccess
186
+ ? (i) => Effect.tap(self.handler(i), () => Effect.promise(onSuccess))
187
+ : self.handler
188
+ : onSuccess
189
+ ? Effect.tap(self.handler, () => Effect.promise(onSuccess))
190
+ : self.handler,
191
+ name: self.name
192
+ }, action, { ...defaultOptions, ...options });
193
+ });
194
+ }
195
+ const useSafeMutationWithState = (self) => {
196
+ const [a, b] = useSafeMutation(self);
197
+ return tuple(computed(() => mutationResultToVue(a.value)), b);
198
+ };
199
+ return {
200
+ useSafeMutationWithState,
201
+ useAndHandleMutation,
202
+ makeUseAndHandleMutation,
203
+ useHandleRequestWithToast
204
+ };
205
+ };
206
+ export const mapHandler = (self, map) => ({
207
+ ...self,
208
+ handler: typeof self.handler === "function"
209
+ ? (i) => map(i)(self.handler(i))
210
+ : map(self.handler)
211
+ });
212
+ export function composeQueries(results, renderPreviousOnFailure) {
213
+ const values = renderPreviousOnFailure
214
+ ? Object.values(results).map(orPrevious)
215
+ : Object.values(results);
216
+ const error = values.find(Result.isFailure);
217
+ if (error) {
218
+ return error;
219
+ }
220
+ const initial = Array.findFirst(values, (x) => x._tag === "Initial" ? Option.some(x) : Option.none());
221
+ if (initial.value !== undefined) {
222
+ return initial.value;
223
+ }
224
+ const loading = Array.findFirst(values, (x) => Result.isInitial(x) && x.waiting ? Option.some(x) : Option.none());
225
+ if (loading.value !== undefined) {
226
+ return loading.value;
227
+ }
228
+ const isRefreshing = values.some((x) => x.waiting);
229
+ const r = Object.entries(results).reduce((prev, [key, value]) => {
230
+ prev[key] = Result.value(value).value;
231
+ return prev;
232
+ }, {});
233
+ return Result.success(r, isRefreshing);
234
+ }
235
+ function orPrevious(result) {
236
+ return Result.isFailure(result) && Option.isSome(result.previousValue)
237
+ ? Result.success(result.previousValue.value, result.waiting)
238
+ : result;
239
+ }
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudDIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZUNsaWVudDIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRTdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFBd0MsYUFBYSxFQUE2QixNQUFNLGNBQWMsQ0FBQTtBQUU3RyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQW9CLE1BQU0sS0FBSyxDQUFBO0FBSWhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxLQUFLLENBQUMsY0FBYztJQUM3QyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7Q0FDakM7QUFJRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEVBQVksRUFDWixHQUEyQjtJQUUzQixPQUFPLE9BQU87U0FDWCxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNqQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FDN0MsR0FBMkIsRUFDM0IsUUFBbUMs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
@@ -0,0 +1,45 @@
1
+ import * as Result from "@effect-rx/rx/Result";
2
+ import type { InvalidateOptions, InvalidateQueryFilters } from "@tanstack/vue-query";
3
+ import { Effect } from "effect-app";
4
+ import type { ComputedRef, Ref } from "vue";
5
+ export type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T);
6
+ 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>];
7
+ export interface MutationInitial {
8
+ readonly _tag: "Initial";
9
+ }
10
+ export interface MutationLoading {
11
+ readonly _tag: "Loading";
12
+ }
13
+ export interface MutationSuccess<A> {
14
+ readonly _tag: "Success";
15
+ readonly data: A;
16
+ }
17
+ export interface MutationError<E> {
18
+ readonly _tag: "Error";
19
+ readonly error: E;
20
+ }
21
+ export type MutationResult<A, E> = MutationInitial | MutationLoading | MutationSuccess<A> | MutationError<E>;
22
+ export type MaybeRef<T> = Ref<T> | ComputedRef<T> | T;
23
+ type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
24
+ [Property in keyof T]: MaybeRefDeep<T[Property]>;
25
+ } : T>;
26
+ export interface MutationOptions {
27
+ queryInvalidation?: (defaultKey: string[], name: string) => {
28
+ filters?: MaybeRefDeep<InvalidateQueryFilters> | undefined;
29
+ options?: MaybeRefDeep<InvalidateOptions> | undefined;
30
+ }[];
31
+ }
32
+ export declare const makeMutation2: () => {
33
+ <I, E, A, R>(self: {
34
+ handler: (i: I) => Effect<A, E, R>;
35
+ name: string;
36
+ }, options?: MutationOptions): readonly [Readonly<Ref<MutationResult<A, E>>>, (i: I) => Effect<A, E, R>];
37
+ <E, A, R>(self: {
38
+ handler: Effect<A, E, R>;
39
+ name: string;
40
+ }, options?: MutationOptions): readonly [Readonly<Ref<MutationResult<A, E>>>, () => Effect<A, E, R>];
41
+ };
42
+ export interface MakeMutation2 extends ReturnType<typeof makeMutation2> {
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=mutate2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutate2.d.ts","sourceRoot":"","sources":["../src/mutate2.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEpF,OAAO,EAAS,MAAM,EAAgB,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAK3C,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;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CACjB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAE5G,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;IAC9B,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,aAAa;KAYrB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;;cATL,MAAM;iBAWA,eAAe,GACxB,SAAS,CACV,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1B;KACA,CAAC,EAAE,CAAC,EAAE,CAAC;;cAdgD,MAAM;iBAclB,eAAe,GAAG,SAAS,CACrE,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB;CAsFJ,CAAA;AAGD,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,OAAO,aAAa,CAAC;CAAG"}
@@ -0,0 +1,86 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { tuple } from "@effect-app/core/Function";
3
+ import * as Result from "@effect-rx/rx/Result";
4
+ import { useQueryClient } from "@tanstack/vue-query";
5
+ import { Cause, Effect, Exit, Option } from "effect-app";
6
+ import { computed, ref, shallowRef } from "vue";
7
+ import { reportRuntimeError } from "./internal.js";
8
+ import { getQueryKey } from "./mutate.js";
9
+ export function make(self) {
10
+ const result = shallowRef(Result.initial());
11
+ const execute = Effect
12
+ .sync(() => {
13
+ result.value = Result.waiting(result.value);
14
+ })
15
+ .pipe(Effect.andThen(self), Effect.exit, Effect.andThen(Result.fromExit), Effect.flatMap((r) => Effect.sync(() => result.value = r)));
16
+ const latestSuccess = computed(() => Option.getOrUndefined(Result.value(result.value)));
17
+ return tuple(result, latestSuccess, execute);
18
+ }
19
+ // TODO: more efficient invalidation, including args etc
20
+ // return Effect.promise(() => queryClient.invalidateQueries({
21
+ // predicate: (_) => nses.includes(_.queryKey.filter((_) => _.startsWith("$")).join("/"))
22
+ // }))
23
+ /*
24
+ // const nses: string[] = []
25
+ // for (let i = 0; i < ns.length; i++) {
26
+ // nses.push(ns.slice(0, i + 1).join("/"))
27
+ // }
28
+ */
29
+ export const makeMutation2 = () => {
30
+ /**
31
+ * Pass a function that returns an Effect, e.g from a client action, or an Effect
32
+ * Returns a tuple with state ref and execution function which reports errors as Toast.
33
+ */
34
+ const useSafeMutation = (self, options) => {
35
+ const queryClient = useQueryClient();
36
+ const state = ref({ _tag: "Initial" });
37
+ const invalidateQueries = (filters, options) => Effect.promise(() => queryClient.invalidateQueries(filters, options));
38
+ function handleExit(exit) {
39
+ return Effect.sync(() => {
40
+ if (Exit.isSuccess(exit)) {
41
+ state.value = { _tag: "Success", data: exit.value };
42
+ return;
43
+ }
44
+ const err = Cause.failureOption(exit.cause);
45
+ if (Option.isSome(err)) {
46
+ state.value = { _tag: "Error", error: err.value };
47
+ return;
48
+ }
49
+ });
50
+ }
51
+ const invalidateCache = Effect.suspend(() => {
52
+ const queryKey = getQueryKey(self.name);
53
+ if (options?.queryInvalidation) {
54
+ const opts = options.queryInvalidation(queryKey, self.name);
55
+ if (!opts.length) {
56
+ return Effect.void;
57
+ }
58
+ return Effect
59
+ .andThen(Effect.annotateCurrentSpan({ queryKey, opts }), Effect.forEach(opts, (_) => invalidateQueries(_.filters, _.options), { concurrency: "inherit" }))
60
+ .pipe(Effect.withSpan("client.query.invalidation", { captureStackTrace: false }));
61
+ }
62
+ if (!queryKey)
63
+ return Effect.void;
64
+ return Effect
65
+ .andThen(Effect.annotateCurrentSpan({ queryKey }), invalidateQueries({ queryKey }))
66
+ .pipe(Effect.withSpan("client.query.invalidation", { captureStackTrace: false }));
67
+ });
68
+ const exec = (fst) => {
69
+ let effect;
70
+ if (Effect.isEffect(self.handler)) {
71
+ effect = self.handler;
72
+ }
73
+ else {
74
+ effect = self.handler(fst);
75
+ }
76
+ return Effect
77
+ .sync(() => {
78
+ state.value = { _tag: "Loading" };
79
+ })
80
+ .pipe(Effect.zipRight(effect), Effect.tap(invalidateCache), Effect.tapDefect(reportRuntimeError), Effect.onExit(handleExit), Effect.withSpan(`mutation ${self.name}`, { captureStackTrace: false }));
81
+ };
82
+ return tuple(state, exec);
83
+ };
84
+ return useSafeMutation;
85
+ };
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tdXRhdGUyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDakQsT0FBTyxLQUFLLE1BQU0sTUFBTSxzQkFBc0IsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHekMsTUFBTSxVQUFVLElBQUksQ0FBVSxJQUFxQjtJQUNqRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBeUIsQ0FBQyxDQUFBO0lBRWxFLE1BQU0sT0FBTyxHQUFHLE1BQU07U0FDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0MsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUss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
@@ -0,0 +1,24 @@
1
+ import * as Result from "@effect-rx/rx/Result";
2
+ import type { QueryKey, QueryObserverOptions, QueryObserverResult, RefetchOptions, UseQueryReturnType } from "@tanstack/vue-query";
3
+ import { Cause, Effect, Runtime } from "effect-app";
4
+ import type { ComputedRef, Ref, WatchSource } from "vue";
5
+ export interface QueryObserverOptionsCustom<TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, "queryKey" | "queryFn"> {
6
+ }
7
+ export interface KnownFiberFailure<E> extends Runtime.FiberFailure {
8
+ readonly [Runtime.FiberFailureCauseId]: Cause.Cause<E>;
9
+ }
10
+ export declare const makeQuery2: <R>(runtime: Ref<Runtime.Runtime<R>>) => {
11
+ <E, A>(self: {
12
+ handler: Effect<A, E, R>;
13
+ mapPath: string;
14
+ name: string;
15
+ }, options?: QueryObserverOptionsCustom): readonly [ComputedRef<Result.Result<A, E>>, ComputedRef<A | undefined>, (options?: RefetchOptions) => Effect<QueryObserverResult<A, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
16
+ <Arg, E, A_1>(self: {
17
+ handler: (arg: Arg) => Effect<A_1, E, R>;
18
+ mapPath: (arg: Arg) => string;
19
+ name: string;
20
+ }, arg: Arg | WatchSource<Arg>, options?: QueryObserverOptionsCustom): readonly [ComputedRef<Result.Result<A_1, E>>, ComputedRef<A_1 | undefined>, (options?: RefetchOptions) => Effect<QueryObserverResult<A_1, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
21
+ };
22
+ export interface MakeQuery2<R> extends ReturnType<typeof makeQuery2<R>> {
23
+ }
24
+ //# sourceMappingURL=query2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query2.d.ts","sourceRoot":"","sources":["../src/query2.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,OAAO,EAAK,MAAM,YAAY,CAAA;AAG9D,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAIxD,MAAM,WAAW,0BAA0B,CACzC,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,YAAY,EACpB,UAAU,GAAG,YAAY,EACzB,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,UAAU,GAAG,KAAK,CAClB,SACA,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAClH;AAEF,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,YAAY;IAChE,QAAQ,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;CACvD;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAmItC,CAAC,EAAE,CAAC,QAClB;QACJ,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxB,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;KACb,YACS,0BAA0B,GACnC,SAAS,CACV,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAChC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,EAC1B,CAAC,OAAO,CAAC,EAAE,cAAc,KAAK,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAClF,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAC7B;KACqB,GAAG,EAAE,CAAC,aACpB;QACJ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,GAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;QAC7B,IAAI,EAAE,MAAM,CAAA;KACb,OACI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,YACjB,0BAA0B,GACnC,SAAS,CACV,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,EAChC,WAAW,CAAC,GAAC,GAAG,SAAS,CAAC,EAC1B,CAAC,OAAO,CAAC,EAAE,cAAc,KAAK,MAAM,CAAC,mBAAmB,CAAC,GAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAClF,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAC7B;CAkCF,CAAA;AAGD,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;CAAG"}