@effect-app/vue 1.25.2 → 1.26.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.
@@ -0,0 +1,101 @@
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 { Cause, Effect, S } from "effect-app";
5
+ import { type SupportedErrors } from "effect-app/client";
6
+ import { type ComputedRef } from "vue";
7
+ import type { MakeIntlReturn } from "./makeIntl.js";
8
+ import type { MakeMutation2, MutationOptions } from "./mutate2.js";
9
+ /**
10
+ * Use this after handling an error yourself, still continueing on the Error track, but the error will not be reported.
11
+ */
12
+ export declare class SuppressErrors extends Cause.YieldableError {
13
+ readonly _tag = "SuppressErrors";
14
+ }
15
+ export type ResponseErrors = S.ParseResult.ParseError | SupportedErrors | SuppressErrors;
16
+ export declare function pauseWhileProcessing(iv: Pausable, pmf: () => Promise<unknown>): Promise<unknown>;
17
+ export declare function useIntervalPauseWhileProcessing(pmf: () => Promise<unknown>, interval?: MaybeRefOrGetter<number>, options?: Omit<UseIntervalFnOptions, "immediateCallback">): {
18
+ isActive: Readonly<import("vue").Ref<boolean, boolean>>;
19
+ };
20
+ export interface Opts<A> extends MutationOptions {
21
+ suppressErrorToast?: boolean;
22
+ suppressSuccessToast?: boolean;
23
+ successToast?: (a: A) => any;
24
+ }
25
+ export interface Res<A, E> {
26
+ readonly loading: boolean;
27
+ readonly data: A | undefined;
28
+ readonly error: E | undefined;
29
+ }
30
+ type WithAction<A> = A & {
31
+ action: string;
32
+ };
33
+ type Resp<I, E, A, R> = readonly [
34
+ ComputedRef<Res<A, E>>,
35
+ WithAction<(I: I) => Effect<A, E, R>>
36
+ ];
37
+ type ActResp<E, A, R> = readonly [
38
+ ComputedRef<Res<A, E>>,
39
+ WithAction<() => Effect<A, E, R>>
40
+ ];
41
+ export declare function mutationResultToVue<A, E>(mutationResult: MutationResult<A, E>): Res<A, E>;
42
+ export declare const makeClient2: <Locale extends string, R>(useIntl: MakeIntlReturn<Locale>["useIntl"], useToast: () => {
43
+ error: (message: string) => void;
44
+ warning: (message: string) => void;
45
+ success: (message: string) => void;
46
+ }, useSafeMutation: MakeMutation2, messages?: Record<string, string | undefined>) => {
47
+ useSafeMutationWithState: <I, E, A>(self: {
48
+ handler: (i: I) => Effect<A, E, R>;
49
+ name: string;
50
+ }) => readonly [ComputedRef<Res<A, E>>, (i: I) => Effect<A, E, R>];
51
+ useAndHandleMutation: {
52
+ <I, E_1 extends ResponseErrors, A_1, R_1>(self: {
53
+ handler: (i: I) => Effect<A_1, E_1, R_1>;
54
+ name: string;
55
+ }, action: string, options?: Opts<A_1>): Resp<I, A_1, E_1, R_1>;
56
+ <E_2 extends ResponseErrors, A_2, R_2>(self: {
57
+ handler: Effect<A_2, E_2, R_2>;
58
+ name: string;
59
+ }, action: string, options?: Opts<A_2>): ActResp<E_2, A_2, R_2>;
60
+ };
61
+ makeUseAndHandleMutation: (defaultOptions?: Opts<any>) => {
62
+ <I, E_2 extends ResponseErrors, A_3, R_3>(self: {
63
+ handler: (i: I) => Effect<A_3, E_2, R_3>;
64
+ name: string;
65
+ }, action: string, options?: Opts<A_3>): Resp<I, A_3, E_2, R_3>;
66
+ <E_3 extends ResponseErrors, A_4>(self: {
67
+ handler: Effect<A_4, E_3, R>;
68
+ name: string;
69
+ }, action: string, options?: Opts<A_4>): ActResp<E_3, A_4, R>;
70
+ };
71
+ useHandleRequestWithToast: () => <E_3 extends ResponseErrors, A_5, R_4, Args extends unknown[]>(f: (...args: Args) => Effect<A_5, E_3, R_4>, action: string, options?: Opts<A_5>) => ((...a: Args) => Effect.Effect<A_5, E_3, R_4>) & {
72
+ action: string;
73
+ };
74
+ };
75
+ export declare const mapHandler: {
76
+ <I, E, R, A, E2, A2, R2>(self: {
77
+ handler: (i: I) => Effect<A, E, R>;
78
+ name: string;
79
+ mapPath: (i: I) => string;
80
+ }, map: (i: I) => (handler: Effect<A, E, R>) => Effect<A2, E2, R2>): {
81
+ handler: (i: I) => Effect<A2, E2, R2>;
82
+ name: string;
83
+ mapPath: (i: I) => string;
84
+ };
85
+ <E, A, R, E2, A2, R2>(self: {
86
+ handler: Effect<A, E, R>;
87
+ name: string;
88
+ mapPath: string;
89
+ }, map: (handler: Effect<A, E, R>) => Effect<A2, E2, R2>): {
90
+ handler: Effect<A2, E2, R2>;
91
+ name: string;
92
+ mapPath: string;
93
+ };
94
+ };
95
+ export declare function composeQueries<R extends Record<string, Result.Result<any, any>>>(results: R, renderPreviousOnFailure?: boolean): Result.Result<{
96
+ [Property in keyof R]: R[Property] extends Result.Result<infer A, any> ? A : never;
97
+ }, {
98
+ [Property in keyof R]: R[Property] extends Result.Result<any, infer E> ? E : never;
99
+ }[keyof R]>;
100
+ export {};
101
+ //# 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,223 @@
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, Exit, Match, Option, 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 function mutationResultToVue(mutationResult) {
29
+ switch (mutationResult._tag) {
30
+ case "Loading": {
31
+ return { loading: true, data: undefined, error: undefined };
32
+ }
33
+ case "Success": {
34
+ return {
35
+ loading: false,
36
+ data: mutationResult.data,
37
+ error: undefined
38
+ };
39
+ }
40
+ case "Error": {
41
+ return {
42
+ loading: false,
43
+ data: undefined,
44
+ error: mutationResult.error
45
+ };
46
+ }
47
+ case "Initial": {
48
+ return { loading: false, data: undefined, error: undefined };
49
+ }
50
+ }
51
+ }
52
+ export const makeClient2 = (useIntl, useToast, useSafeMutation, messages = {}) => {
53
+ const useHandleRequestWithToast = () => {
54
+ const toast = useToast();
55
+ const { intl } = useIntl();
56
+ return handleRequestWithToast;
57
+ /**
58
+ * Pass a function that returns a Promise.
59
+ * Returns an execution function which reports errors as Toast.
60
+ */
61
+ function handleRequestWithToast(f, action, options = { suppressErrorToast: false }) {
62
+ const message = messages[action] ?? action;
63
+ const warnMessage = intl.value.formatMessage({ id: "handle.with_warnings" }, { action: message });
64
+ const successMessage = intl.value.formatMessage({ id: "handle.success" }, { action: message });
65
+ const errorMessage = intl.value.formatMessage({ id: "handle.with_errors" }, { action: message });
66
+ return Object.assign(flow(f, Effect.onExit(Exit.matchEffect({
67
+ onSuccess: (r) => Effect.gen(function* () {
68
+ if (S.is(Failure)(r)) {
69
+ toast.warning(warnMessage + r.message
70
+ ? "\n" + r.message
71
+ : "");
72
+ return;
73
+ }
74
+ toast.success(successMessage
75
+ + (S.is(Success)(r) && r.message
76
+ ? "\n" + r.message
77
+ : ""));
78
+ }),
79
+ onFailure: (err) => Effect.gen(function* () {
80
+ if (Cause.isInterruptedOnly(err)) {
81
+ return;
82
+ }
83
+ const fail = Cause.failureOption(err);
84
+ if (Option.isSome(fail)) {
85
+ if (fail._tag === "SuppressErrors") {
86
+ return Effect.succeed(void 0);
87
+ }
88
+ if (!options.suppressErrorToast) {
89
+ toast.error(`${errorMessage}:\n` + renderError(fail.value));
90
+ }
91
+ console.warn(fail, fail.toString());
92
+ return;
93
+ }
94
+ const extra = {
95
+ action,
96
+ message: `Unexpected Error trying to ${action}`
97
+ };
98
+ Sentry.captureException(err, {
99
+ extra
100
+ });
101
+ console.error(err, extra);
102
+ toast.error(intl.value.formatMessage({ id: "handle.unexpected_error" }, {
103
+ action: message,
104
+ error: JSON.stringify(err, undefined, 2)
105
+ }));
106
+ })
107
+ }))), { action });
108
+ }
109
+ function renderError(e) {
110
+ return Match.value(e).pipe(Match.tags({
111
+ // HttpErrorRequest: e =>
112
+ // intl.value.formatMessage(
113
+ // { id: "handle.request_error" },
114
+ // { error: `${e.error}` },
115
+ // ),
116
+ // HttpErrorResponse: e =>
117
+ // e.response.status >= 500 ||
118
+ // e.response.body._tag !== "Some" ||
119
+ // !e.response.body.value
120
+ // ? intl.value.formatMessage(
121
+ // { id: "handle.error_response" },
122
+ // {
123
+ // error: `${
124
+ // e.response.body._tag === "Some" && e.response.body.value
125
+ // ? parseError(e.response.body.value)
126
+ // : "Unknown"
127
+ // } (${e.response.status})`,
128
+ // },
129
+ // )
130
+ // : intl.value.formatMessage(
131
+ // { id: "handle.unexpected_error" },
132
+ // {
133
+ // error:
134
+ // JSON.stringify(e.response.body, undefined, 2) +
135
+ // "( " +
136
+ // e.response.status +
137
+ // ")",
138
+ // },
139
+ // ),
140
+ // ResponseError: e =>
141
+ // intl.value.formatMessage(
142
+ // { id: "handle.response_error" },
143
+ // { error: `${e.error}` },
144
+ // ),
145
+ ParseError: (e) => {
146
+ console.warn(e.toString());
147
+ return intl.value.formatMessage({ id: "validation.failed" });
148
+ }
149
+ }), Match.orElse((e) => intl.value.formatMessage({ id: "handle.unexpected_error" }, {
150
+ error: `${e.message ?? e._tag ?? e}`
151
+ })));
152
+ }
153
+ };
154
+ /**
155
+ * Pass a function that returns an Effect, e.g from a client action, give it a name, and optionally pass an onSuccess callback.
156
+ * Returns a tuple with state ref and execution function which reports errors as Toast.
157
+ */
158
+ const useAndHandleMutation = (self, action, options) => {
159
+ const handleRequestWithToast = useHandleRequestWithToast();
160
+ const [a, b] = useSafeMutation({
161
+ handler: Effect.isEffect(self.handler)
162
+ ? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
163
+ : (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args))),
164
+ name: self.name
165
+ }, dropUndefinedT({
166
+ queryInvalidation: options?.queryInvalidation
167
+ }));
168
+ return tuple(computed(() => mutationResultToVue(a.value)), handleRequestWithToast(b, action, options));
169
+ };
170
+ function makeUseAndHandleMutation(defaultOptions) {
171
+ return ((self, action, options) => {
172
+ return useAndHandleMutation({
173
+ handler: self.handler,
174
+ name: self.name
175
+ }, action, { ...defaultOptions, ...options });
176
+ });
177
+ }
178
+ const useSafeMutationWithState = (self) => {
179
+ const [a, b] = useSafeMutation(self);
180
+ return tuple(computed(() => mutationResultToVue(a.value)), b);
181
+ };
182
+ return {
183
+ useSafeMutationWithState,
184
+ useAndHandleMutation,
185
+ makeUseAndHandleMutation,
186
+ useHandleRequestWithToast
187
+ };
188
+ };
189
+ export const mapHandler = (self, map) => ({
190
+ ...self,
191
+ handler: typeof self.handler === "function"
192
+ ? (i) => map(i)(self.handler(i))
193
+ : map(self.handler)
194
+ });
195
+ export function composeQueries(results, renderPreviousOnFailure) {
196
+ const values = renderPreviousOnFailure
197
+ ? Object.values(results).map(orPrevious)
198
+ : Object.values(results);
199
+ const error = values.find(Result.isFailure);
200
+ if (error) {
201
+ return error;
202
+ }
203
+ const initial = Array.findFirst(values, (x) => x._tag === "Initial" ? Option.some(x) : Option.none());
204
+ if (initial.value !== undefined) {
205
+ return initial.value;
206
+ }
207
+ const loading = Array.findFirst(values, (x) => Result.isInitial(x) && x.waiting ? Option.some(x) : Option.none());
208
+ if (loading.value !== undefined) {
209
+ return loading.value;
210
+ }
211
+ const isRefreshing = values.some((x) => x.waiting);
212
+ const r = Object.entries(results).reduce((prev, [key, value]) => {
213
+ prev[key] = Result.value(value).value;
214
+ return prev;
215
+ }, {});
216
+ return Result.success(r, isRefreshing);
217
+ }
218
+ function orPrevious(result) {
219
+ return Result.isFailure(result) && Option.isSome(result.previousValue)
220
+ ? Result.success(result.previousValue.value, result.waiting)
221
+ : result;
222
+ }
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudDIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZUNsaWVudDIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRTdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFBd0MsYUFBYSxFQUE2QixNQUFNLGNBQWMsQ0FBQTtBQUM3RyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQW9CLE1BQU0sS0FBSyxDQUFBO0FBSWhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxLQUFLLENBQUMsY0FBYztJQUM3QyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7Q0FDakM7QUFJRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEVBQVksRUFDWixHQUEyQjtJQUUzQixPQUFPLE9BQU87U0FDWCxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNqQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FDN0MsR0FBMkIsRUFDM0IsUUFBbUMs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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"}