@effect-app/vue 0.130.0 → 0.131.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 +20 -0
- package/_cjs/_global.cjs +1 -2
- package/_cjs/_global.cjs.map +1 -1
- package/_cjs/form.cjs +12 -14
- package/_cjs/form.cjs.map +1 -1
- package/_cjs/hooks.cjs +27 -190
- package/_cjs/hooks.cjs.map +1 -1
- package/_cjs/internal.cjs +6 -5
- package/_cjs/internal.cjs.map +1 -1
- package/_cjs/mutate.cjs +105 -0
- package/_cjs/mutate.cjs.map +1 -0
- package/_cjs/query.cjs +53 -28
- package/_cjs/query.cjs.map +1 -1
- package/_cjs/routeParams.cjs +9 -12
- package/_cjs/routeParams.cjs.map +1 -1
- package/_cjs/runtime.cjs +19 -22
- package/_cjs/runtime.cjs.map +1 -1
- package/_src/_global.ts +1 -10
- package/_src/form.ts +9 -12
- package/_src/hooks.ts +2 -323
- package/_src/internal.ts +9 -4
- package/_src/mutate.ts +163 -0
- package/_src/query.ts +103 -32
- package/_src/routeParams.ts +6 -3
- package/_src/runtime.ts +18 -13
- package/_src/swrv.bak +196 -0
- package/dist/_global.d.ts.map +1 -1
- package/dist/_global.js +2 -10
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +15 -17
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -195
- package/dist/internal.d.ts +5 -4
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -3
- package/dist/mutate.d.ts +43 -0
- package/dist/mutate.d.ts.map +1 -0
- package/dist/mutate.js +101 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +62 -33
- package/dist/routeParams.d.ts.map +1 -1
- package/dist/routeParams.js +14 -15
- package/dist/runtime.d.ts +24 -23
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +27 -24
- package/package.json +13 -4
- package/tsconfig.json +1 -0
- package/tsconfig.json.bak +1 -0
- package/dist/_global.d.ts +0 -9
- package/dist/form.d.ts +0 -53
- package/dist/hooks.d.ts +0 -80
- package/dist/index.d.ts +0 -4
- package/dist/query.d.ts +0 -12
- package/dist/routeParams.d.ts +0 -14
package/dist/hooks.js
CHANGED
|
@@ -1,197 +1,5 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "effect-app/client";
|
|
2
|
-
import * as tsplus_module_2 from "effect/Cause";
|
|
3
|
-
import * as tsplus_module_3 from "effect/Effect";
|
|
4
|
-
import * as tsplus_module_4 from "effect-app/client/QueryResult";
|
|
5
|
-
import * as tsplus_module_5 from "effect/Option";
|
|
6
|
-
import * as tsplus_module_6 from "@effect-app/core/Function";
|
|
7
|
-
import * as tsplus_module_7 from "effect/Exit";
|
|
8
|
-
import * as tsplus_module_8 from "effect/Fiber";
|
|
9
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
|
-
import { Done, Initial, Loading } from "effect-app/client";
|
|
11
|
-
import { InterruptedException } from "effect/Cause";
|
|
12
|
-
import * as Either from "effect/Either";
|
|
13
|
-
import { FiberFailureCauseId, isFiberFailure } from "effect/Runtime";
|
|
14
|
-
import * as swrv from "swrv";
|
|
15
|
-
import { computed, ref, shallowRef } from "vue";
|
|
16
|
-
import { run } from "./internal.js";
|
|
17
2
|
export { isFailed, isInitializing, isSuccess } from "effect-app/client";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function swrToQuery(r) {
|
|
22
|
-
if (r.error) {
|
|
23
|
-
return r.isValidating
|
|
24
|
-
? tsplus_module_1.Refreshing.fail(r.error, r.data)
|
|
25
|
-
: Done.fail(r.error, r.data);
|
|
26
|
-
}
|
|
27
|
-
if (r.data !== undefined) {
|
|
28
|
-
return r.isValidating
|
|
29
|
-
? tsplus_module_1.Refreshing.succeed(r.data)
|
|
30
|
-
: Done.succeed(r.data);
|
|
31
|
-
}
|
|
32
|
-
return r.isValidating ? new Loading() : new Initial();
|
|
33
|
-
}
|
|
34
|
-
export function useMutate(self) {
|
|
35
|
-
const fn = () => run.value(self.handler).then((_) => _.body).catch((_) => {
|
|
36
|
-
if (!isFiberFailure(_))
|
|
37
|
-
throw _;
|
|
38
|
-
const cause = _[FiberFailureCauseId];
|
|
39
|
-
throw tsplus_module_2.squash(cause);
|
|
40
|
-
});
|
|
41
|
-
return () => mutate(self.mapPath, fn);
|
|
42
|
-
}
|
|
43
|
-
export function useMutateWithArg(self) {
|
|
44
|
-
const fn = (arg) => run.value(self.handler(arg)).then((_) => _.body).catch((_) => {
|
|
45
|
-
if (!isFiberFailure(_))
|
|
46
|
-
throw _;
|
|
47
|
-
const cause = _[FiberFailureCauseId];
|
|
48
|
-
throw tsplus_module_2.squash(cause);
|
|
49
|
-
});
|
|
50
|
-
return (arg) => mutate(self.mapPath(arg), fn(arg));
|
|
51
|
-
}
|
|
52
|
-
export function useSafeQuery(self, // {
|
|
53
|
-
// handler: (arg: Arg) => Effect<FetchResponse<A>, E, ApiConfig | HttpClient.Client.Default>
|
|
54
|
-
// mapPath: (arg: Arg) => string
|
|
55
|
-
// } | {
|
|
56
|
-
// handler: Effect<FetchResponse<A>, E, ApiConfig | HttpClient.Client.Default>
|
|
57
|
-
// mapPath: string
|
|
58
|
-
// },
|
|
59
|
-
arg, // Arg | WatchSource<Arg> | swrv.IConfig<A, fetcherFn<A>> | undefined,
|
|
60
|
-
config // swrv.IConfig<A, fetcherFn<A>> | undefined
|
|
61
|
-
) {
|
|
62
|
-
return tsplus_module_3.isEffect(self.handler)
|
|
63
|
-
? useSafeQuery_(self.mapPath, () => self.handler, arg)
|
|
64
|
-
: useSafeQueryWithArg_(self.handler, self.mapPath, arg, config);
|
|
65
|
-
}
|
|
66
|
-
export function useSafeQueryWithArg_(self, mapPath, arg, config) {
|
|
67
|
-
const arr = arg;
|
|
68
|
-
const r = typeof arr === "function"
|
|
69
|
-
? {
|
|
70
|
-
get value() {
|
|
71
|
-
return arr();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
: ref(arg);
|
|
75
|
-
return useSafeQuery_(computed(() => mapPath(r.value)), () => self(r.value), config);
|
|
76
|
-
}
|
|
77
|
-
export function useSafeQuery_(key, self, config) {
|
|
78
|
-
// const [result, latestSuccess, execute] = make(self)
|
|
79
|
-
// TODO: support with interruption
|
|
80
|
-
// const sem = Semaphore.unsafeMake(1)
|
|
81
|
-
// const lock = sem.withPermits(1)
|
|
82
|
-
// let fib: Fiber.FiberContext<E, FetchResponse<A>> | undefined = undefined
|
|
83
|
-
// const execute = self
|
|
84
|
-
// const runNew = execute.fork()
|
|
85
|
-
// .tap(newFiber =>
|
|
86
|
-
// Effect.sync(() => {
|
|
87
|
-
// fib = newFiber
|
|
88
|
-
// })
|
|
89
|
-
// )
|
|
90
|
-
// const ex = lock(
|
|
91
|
-
// Effect.suspend(() => {
|
|
92
|
-
// return fib
|
|
93
|
-
// ? Fiber.interrupt(fib).zipRight(runNew)
|
|
94
|
-
// : runNew
|
|
95
|
-
// })
|
|
96
|
-
// ).flatMap(Fiber.await)
|
|
97
|
-
// function execWithInterruption() {
|
|
98
|
-
// return ex.provide(Layers)
|
|
99
|
-
// .runPromise()
|
|
100
|
-
// .catch(err => {
|
|
101
|
-
// if (!Cause.isInterruptedException(err)) throw err
|
|
102
|
-
// return undefined
|
|
103
|
-
// })
|
|
104
|
-
// }
|
|
105
|
-
// const swr = useSWRV<A, E>(key, () => execWithInterruption().then(_ => _?.body as any)) // Effect.runPromise(self.provide(Layers))
|
|
106
|
-
const swr = useSWRV(key, () => run
|
|
107
|
-
.value(self())
|
|
108
|
-
.then((_) => _.body)
|
|
109
|
-
.catch((_) => {
|
|
110
|
-
if (!isFiberFailure(_))
|
|
111
|
-
throw _;
|
|
112
|
-
const cause = _[FiberFailureCauseId];
|
|
113
|
-
throw tsplus_module_2.squash(cause);
|
|
114
|
-
}), config);
|
|
115
|
-
const result = computed(() => swrToQuery({ data: swr.data.value, error: swr.error.value, isValidating: swr.isValidating.value })); // ref<QueryResult<E, A>>()
|
|
116
|
-
const latestSuccess = computed(() => {
|
|
117
|
-
const value = result.value;
|
|
118
|
-
return tsplus_module_4.isSuccess(value)
|
|
119
|
-
? Either.isRight(value.current)
|
|
120
|
-
? value.current.right
|
|
121
|
-
: tsplus_module_5.isSome(value.previous)
|
|
122
|
-
? value.previous.value
|
|
123
|
-
: undefined
|
|
124
|
-
: undefined;
|
|
125
|
-
});
|
|
126
|
-
return tsplus_module_6.tuple(result, latestSuccess, () => swr.mutate(), swr);
|
|
127
|
-
}
|
|
128
|
-
export function make(self) {
|
|
129
|
-
const result = shallowRef(new Initial());
|
|
130
|
-
const execute = tsplus_module_3.zipRight(tsplus_module_3.sync(() => {
|
|
131
|
-
result.value = tsplus_module_4.isInitializing(result.value)
|
|
132
|
-
? new Loading()
|
|
133
|
-
: new tsplus_module_1.Refreshing(result.value);
|
|
134
|
-
}), tsplus_module_4.queryResult(self.map((_) => _.body)))
|
|
135
|
-
.flatMap((r) => tsplus_module_3.sync(() => result.value = r));
|
|
136
|
-
const latestSuccess = computed(() => {
|
|
137
|
-
const value = result.value;
|
|
138
|
-
return tsplus_module_4.hasValue(value)
|
|
139
|
-
? Either.isRight(value.current)
|
|
140
|
-
? value.current.right
|
|
141
|
-
: tsplus_module_5.isSome(value.previous)
|
|
142
|
-
? value.previous.value
|
|
143
|
-
: undefined
|
|
144
|
-
: undefined;
|
|
145
|
-
});
|
|
146
|
-
return tsplus_module_6.tuple(result, latestSuccess, execute);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Pass a function that returns an Effect, e.g from a client action, or an Effect
|
|
150
|
-
* Returns a tuple with state ref and execution function which reports errors as Toast.
|
|
151
|
-
*/
|
|
152
|
-
export const useMutation = (self) => {
|
|
153
|
-
const state = ref({ _tag: "Initial" });
|
|
154
|
-
function handleExit(exit) {
|
|
155
|
-
return tsplus_module_3.sync(() => {
|
|
156
|
-
if (tsplus_module_7.isSuccess(exit)) {
|
|
157
|
-
state.value = { _tag: "Success", data: exit.value };
|
|
158
|
-
return Either.right(exit.value);
|
|
159
|
-
}
|
|
160
|
-
const err = tsplus_module_2.failureOption(exit.cause);
|
|
161
|
-
if (tsplus_module_5.isSome(err)) {
|
|
162
|
-
state.value = { _tag: "Error", error: err.value };
|
|
163
|
-
return Either.left(err.value);
|
|
164
|
-
}
|
|
165
|
-
const died = tsplus_module_2.dieOption(exit.cause);
|
|
166
|
-
if (died.value) {
|
|
167
|
-
throw died.value;
|
|
168
|
-
}
|
|
169
|
-
const interrupted = tsplus_module_2.interruptOption(exit.cause);
|
|
170
|
-
if (interrupted.value) {
|
|
171
|
-
throw new InterruptedException();
|
|
172
|
-
}
|
|
173
|
-
throw new Error("Invalid state");
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
const exec = (fst, snd) => {
|
|
177
|
-
let effect;
|
|
178
|
-
let abortSignal;
|
|
179
|
-
if (tsplus_module_3.isEffect(self.handler)) {
|
|
180
|
-
effect = self.handler;
|
|
181
|
-
abortSignal = fst;
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
effect = self.handler(fst);
|
|
185
|
-
abortSignal = snd;
|
|
186
|
-
}
|
|
187
|
-
return run.value(tsplus_module_3.fork(tsplus_module_3.exit(tsplus_module_3.zipRight(tsplus_module_3.sync(() => {
|
|
188
|
-
state.value = { _tag: "Loading" };
|
|
189
|
-
}), effect)).flatMap(handleExit)).flatMap((f) => {
|
|
190
|
-
const cancel = () => run.value(tsplus_module_8.interrupt(f));
|
|
191
|
-
abortSignal?.addEventListener("abort", () => void cancel().catch(console.error));
|
|
192
|
-
return tsplus_module_8.join(f);
|
|
193
|
-
}));
|
|
194
|
-
};
|
|
195
|
-
return tsplus_module_6.tuple(state, exec);
|
|
196
|
-
};
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL2hvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNuRCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEUsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFHNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQy9DLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFzQnZFLHNFQUFzRTtBQUN0RSxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBMkIsQ0FBQTtBQUN0RyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQTBCLENBQUE7QUFFeEcsU0FBUyxVQUFVLENBQ2pCLENBQXVFO0lBRXZFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLENBQUMsWUFBWTtZQUNu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
|
|
3
|
+
export * from "./mutate.js";
|
|
4
|
+
export * from "./query.js";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL2hvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RSxjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLFlBQVksQ0FBQSJ9
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Effect } from "effect/Effect";
|
|
2
|
-
import type { ApiConfig } from "effect-app/client";
|
|
3
1
|
import type * as HttpClient from "@effect/platform/Http/Client";
|
|
4
|
-
import type {
|
|
2
|
+
import type { Effect } from "effect-app";
|
|
3
|
+
import { Runtime } from "effect-app";
|
|
4
|
+
import type { ApiConfig } from "effect-app/client";
|
|
5
5
|
export declare const run: {
|
|
6
6
|
value<E, A>(_: Effect<A, E, ApiConfig | HttpClient.Client.Default>): Promise<A>;
|
|
7
7
|
};
|
|
8
|
-
export declare function initRuntime<A>(rt: Runtime<A | ApiConfig | HttpClient.Client.Default>): void;
|
|
8
|
+
export declare function initRuntime<A>(rt: Runtime.Runtime<A | ApiConfig | HttpClient.Client.Default>): void;
|
|
9
|
+
export declare const makeQueryKey: (name: string) => [string, ...string[]];
|
|
9
10
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../_src/internal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../_src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAQ,OAAO,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,eAAO,MAAM,GAAG;mBACC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,WAAW,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;CAGhF,CAAA;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,QAK5F;AAED,eAAO,MAAM,YAAY,SAAU,MAAM,0BACyC,CAAA"}
|
package/dist/internal.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { pipe, Runtime } from "effect-app";
|
|
2
2
|
export const run = {
|
|
3
3
|
value(_) {
|
|
4
4
|
throw new Error("Runtime not initialized, please run `initRuntime` first");
|
|
5
5
|
}
|
|
6
6
|
};
|
|
7
7
|
export function initRuntime(rt) {
|
|
8
|
+
const runPromise = Runtime.runPromise(rt);
|
|
8
9
|
run.value = function (self) {
|
|
9
|
-
return
|
|
10
|
+
return runPromise(self);
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
+
export const makeQueryKey = (name) => pipe(name.split("/"), (split) => split.map((_) => "$" + _)).join("/").split(".");
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL2ludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRzFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixLQUFLLENBQU8sQ0FBc0Q7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFBO0lBQzVFLENBQUM7Q0FDRixDQUFBO0FBQ0QsTUFBTSxVQUFVLFdBQVcsQ0FBSSxFQUE4RDtJQUMzRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsVUFBZSxJQUF5RDtRQUNsRixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUEifQ==
|
package/dist/mutate.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type * as HttpClient from "@effect/platform/Http/Client";
|
|
2
|
+
import { Effect } from "effect-app";
|
|
3
|
+
import type { ApiConfig, FetchResponse, QueryResult } from "effect-app/client";
|
|
4
|
+
import * as Either from "effect/Either";
|
|
5
|
+
import type { ComputedRef, Ref } from "vue";
|
|
6
|
+
export type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T);
|
|
7
|
+
export declare function make<R, E, A>(self: Effect<FetchResponse<A>, E, R>): readonly [import("vue").ShallowRef<QueryResult<E, A>>, ComputedRef<A | undefined>, Effect.Effect<QueryResult<E, A>, never, R>];
|
|
8
|
+
export interface MutationInitial {
|
|
9
|
+
readonly _tag: "Initial";
|
|
10
|
+
}
|
|
11
|
+
export interface MutationLoading {
|
|
12
|
+
readonly _tag: "Loading";
|
|
13
|
+
}
|
|
14
|
+
export interface MutationSuccess<A> {
|
|
15
|
+
readonly _tag: "Success";
|
|
16
|
+
readonly data: A;
|
|
17
|
+
}
|
|
18
|
+
export interface MutationError<E> {
|
|
19
|
+
readonly _tag: "Error";
|
|
20
|
+
readonly error: E;
|
|
21
|
+
}
|
|
22
|
+
export type MutationResult<E, A> = MutationInitial | MutationLoading | MutationSuccess<A> | MutationError<E>;
|
|
23
|
+
/**
|
|
24
|
+
* Pass a function that returns an Effect, e.g from a client action, or an Effect
|
|
25
|
+
* Returns a tuple with state ref and execution function which reports errors as Toast.
|
|
26
|
+
*/
|
|
27
|
+
export declare const useSafeMutation: {
|
|
28
|
+
<I, E, A>(self: {
|
|
29
|
+
handler: (i: I) => Effect<A, E, ApiConfig | HttpClient.Client.Default>;
|
|
30
|
+
name: string;
|
|
31
|
+
}): readonly [
|
|
32
|
+
Readonly<Ref<MutationResult<E, A>>>,
|
|
33
|
+
(i: I, abortSignal?: AbortSignal) => Promise<Either.Either<E, A>>
|
|
34
|
+
];
|
|
35
|
+
<E, A>(self: {
|
|
36
|
+
handler: Effect<A, E, ApiConfig | HttpClient.Client.Default>;
|
|
37
|
+
name: string;
|
|
38
|
+
}): readonly [
|
|
39
|
+
Readonly<Ref<MutationResult<E, A>>>,
|
|
40
|
+
(abortSignal?: AbortSignal) => Promise<Either.Either<E, A>>
|
|
41
|
+
];
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=mutate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../_src/mutate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAE/D,OAAO,EAAS,MAAM,EAAuB,MAAM,YAAY,CAAA;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAI3C,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAEtE,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,kIAwBjE;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;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE;IAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;QAClH,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CACE,CAAC,EAAE,CAAC,EACJ,WAAW,CAAC,EAAE,WAAW,KACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAClC,CAAA;IACD,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;QACrG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CACE,WAAW,CAAC,EAAE,WAAW,KACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAClC,CAAA;CAoFF,CAAA"}
|
package/dist/mutate.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { tuple } from "@effect-app/core/Function";
|
|
3
|
+
import { useQueryClient } from "@tanstack/vue-query";
|
|
4
|
+
import { Cause, Effect, Exit, Fiber, Option } from "effect-app";
|
|
5
|
+
import { hasValue, Initial, isInitializing, Loading, queryResult, Refreshing } from "effect-app/client";
|
|
6
|
+
import { InterruptedException } from "effect/Cause";
|
|
7
|
+
import * as Either from "effect/Either";
|
|
8
|
+
import { computed, ref, shallowRef } from "vue";
|
|
9
|
+
import { makeQueryKey, run } from "./internal.js";
|
|
10
|
+
export function make(self) {
|
|
11
|
+
const result = shallowRef(new Initial());
|
|
12
|
+
const execute = Effect
|
|
13
|
+
.sync(() => {
|
|
14
|
+
result.value = isInitializing(result.value)
|
|
15
|
+
? new Loading()
|
|
16
|
+
: new Refreshing(result.value);
|
|
17
|
+
})
|
|
18
|
+
.andThen(queryResult(self.map((_) => _.body)))
|
|
19
|
+
.flatMap((r) => Effect.sync(() => result.value = r));
|
|
20
|
+
const latestSuccess = computed(() => {
|
|
21
|
+
const value = result.value;
|
|
22
|
+
return hasValue(value)
|
|
23
|
+
? Either.isRight(value.current)
|
|
24
|
+
? value.current.right
|
|
25
|
+
: Option.isSome(value.previous)
|
|
26
|
+
? value.previous.value
|
|
27
|
+
: undefined
|
|
28
|
+
: undefined;
|
|
29
|
+
});
|
|
30
|
+
return tuple(result, latestSuccess, execute);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Pass a function that returns an Effect, e.g from a client action, or an Effect
|
|
34
|
+
* Returns a tuple with state ref and execution function which reports errors as Toast.
|
|
35
|
+
*/
|
|
36
|
+
export const useSafeMutation = (self) => {
|
|
37
|
+
const queryClient = useQueryClient();
|
|
38
|
+
const state = ref({ _tag: "Initial" });
|
|
39
|
+
function handleExit(exit) {
|
|
40
|
+
return Effect.sync(() => {
|
|
41
|
+
if (Exit.isSuccess(exit)) {
|
|
42
|
+
state.value = { _tag: "Success", data: exit.value };
|
|
43
|
+
return Either.right(exit.value);
|
|
44
|
+
}
|
|
45
|
+
const err = Cause.failureOption(exit.cause);
|
|
46
|
+
if (Option.isSome(err)) {
|
|
47
|
+
state.value = { _tag: "Error", error: err.value };
|
|
48
|
+
return Either.left(err.value);
|
|
49
|
+
}
|
|
50
|
+
const died = Cause.dieOption(exit.cause);
|
|
51
|
+
if (Option.isSome(died)) {
|
|
52
|
+
throw died.value;
|
|
53
|
+
}
|
|
54
|
+
const interrupted = Cause.interruptOption(exit.cause);
|
|
55
|
+
if (Option.isSome(interrupted)) {
|
|
56
|
+
throw new InterruptedException();
|
|
57
|
+
}
|
|
58
|
+
throw new Error("Invalid state");
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const exec = (fst, snd) => {
|
|
62
|
+
let effect;
|
|
63
|
+
let abortSignal;
|
|
64
|
+
if (Effect.isEffect(self.handler)) {
|
|
65
|
+
effect = self.handler;
|
|
66
|
+
abortSignal = fst;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
effect = self.handler(fst);
|
|
70
|
+
abortSignal = snd;
|
|
71
|
+
}
|
|
72
|
+
return run.value(Effect
|
|
73
|
+
.sync(() => {
|
|
74
|
+
state.value = { _tag: "Loading" };
|
|
75
|
+
})
|
|
76
|
+
.andThen(effect)
|
|
77
|
+
.tap(() => Effect.suspend(() => {
|
|
78
|
+
const key = makeQueryKey(self.name);
|
|
79
|
+
const ns = key.filter((_) => _.startsWith("$"));
|
|
80
|
+
const nses = [];
|
|
81
|
+
for (let i = 0; i < ns.length; i++) {
|
|
82
|
+
nses.push(ns.slice(0, i + 1).join("/"));
|
|
83
|
+
}
|
|
84
|
+
return Effect.promise(() => queryClient.invalidateQueries({ queryKey: [ns[0]] }));
|
|
85
|
+
// TODO: more efficient invalidation, including args etc
|
|
86
|
+
// return Effect.promise(() => queryClient.invalidateQueries({
|
|
87
|
+
// predicate: (_) => nses.includes(_.queryKey.filter((_) => _.startsWith("$")).join("/"))
|
|
88
|
+
// }))
|
|
89
|
+
}))
|
|
90
|
+
.pipe(Effect.exit)
|
|
91
|
+
.flatMap(handleExit)
|
|
92
|
+
.pipe(Effect.fork)
|
|
93
|
+
.flatMap((f) => {
|
|
94
|
+
const cancel = () => run.value(Fiber.interrupt(f));
|
|
95
|
+
abortSignal?.addEventListener("abort", () => void cancel().catch(console.error));
|
|
96
|
+
return Fiber.join(f);
|
|
97
|
+
}));
|
|
98
|
+
};
|
|
99
|
+
return tuple(state, exec);
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9tdXRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBRXZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUlqRCxNQUFNLFVBQVUsSUFBSSxDQUFVLElBQW9DO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLE9BQU8sRUFBdUIsQ0FBQyxDQUFBO0lBRTdELE1BQU0sT0FBTyxHQUFHLE1BQU07U0FDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE1BQU0sQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDekMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFO1lBQ2YsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxH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
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../_src/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../_src/query.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAS,MAAM,EAA2B,MAAM,YAAY,CAAA;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAGnD,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,EACD,OAAO,CAAC,EAAE,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,GACxD,SAAS;IACV,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1B,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACjF,CAAA;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EACpC,IAAI,EAAE;IACJ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAClF,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,EACD,GAAG,EAAE,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,GACxD,SAAS;IACV,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1B,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACjF,CAAA;AAsCD,eAAO,MAAM,aAAa;mBAIb,CAAC,KACH,OACH,cAAc,CAAC,CAAC,EAChB,CAAC,EACD,SAAS,GAAG,WAAW,OAAO,CAC/B;mBACc,CAAC,KAAK,MAAM;UACrB,MAAM;;aAGH,OACP,cAAc,CAAC,CAAC,EAChB,CAAC,EACD,SAAS,GAAG,WAAW,OAAO,CAC/B;aACQ,MAAM;UACT,MAAM;SAEV,CAAC,GAAG,YAAY,CAAC,CAAC,YACf,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,sJA6D7C,CAAA"}
|
package/dist/query.js
CHANGED
|
@@ -1,17 +1,43 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "effect/Cause";
|
|
2
|
-
import * as tsplus_module_2 from "effect-app/client/QueryResult";
|
|
3
|
-
import * as tsplus_module_3 from "effect/Either";
|
|
4
|
-
import * as tsplus_module_4 from "effect/Option";
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
8
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
9
1
|
import { useQuery } from "@tanstack/vue-query";
|
|
10
|
-
import { Effect, Runtime } from "effect-app";
|
|
11
|
-
import { Done, Initial, Loading, Refreshing } from "effect-app/client";
|
|
2
|
+
import { Cause, Effect, Either, Option, Runtime } from "effect-app";
|
|
3
|
+
import { Done, Initial, isSuccess, Loading, Refreshing } from "effect-app/client";
|
|
12
4
|
import { computed, ref } from "vue";
|
|
13
|
-
import { run } from "./internal.js";
|
|
14
|
-
export
|
|
5
|
+
import { makeQueryKey, run } from "./internal.js";
|
|
6
|
+
export function useSafeQuery(self,
|
|
7
|
+
/*
|
|
8
|
+
q:
|
|
9
|
+
| {
|
|
10
|
+
handler: (
|
|
11
|
+
req: I
|
|
12
|
+
) => Effect<
|
|
13
|
+
FetchResponse<A>,
|
|
14
|
+
E,
|
|
15
|
+
ApiConfig | HttpClient.Default
|
|
16
|
+
>
|
|
17
|
+
mapPath: (req: I) => string
|
|
18
|
+
name: string
|
|
19
|
+
}
|
|
20
|
+
| {
|
|
21
|
+
handler: Effect<
|
|
22
|
+
FetchResponse<A>,
|
|
23
|
+
E,
|
|
24
|
+
ApiConfig | HttpClient.Default
|
|
25
|
+
>
|
|
26
|
+
mapPath: string
|
|
27
|
+
name: string
|
|
28
|
+
},
|
|
29
|
+
*/
|
|
30
|
+
argOrOptions, options) {
|
|
31
|
+
return Effect.isEffect(self.handler)
|
|
32
|
+
? useSafeQuery_(self, undefined, argOrOptions)
|
|
33
|
+
: useSafeQuery_(self, argOrOptions, options);
|
|
34
|
+
}
|
|
35
|
+
// TODO: options
|
|
36
|
+
// declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryReturnType<TData, TError>;
|
|
37
|
+
// declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryDefinedReturnType<TData, TError>;
|
|
38
|
+
// declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, queryClient?: QueryClient): UseQueryReturnType<TData, TError>;
|
|
39
|
+
export const useSafeQuery_ = (q, arg, options = {} // TODO
|
|
40
|
+
) => {
|
|
15
41
|
const arr = arg;
|
|
16
42
|
const req = !arg
|
|
17
43
|
? undefined
|
|
@@ -22,9 +48,11 @@ export const useSafeQuery = (q, arg) => {
|
|
|
22
48
|
}
|
|
23
49
|
}
|
|
24
50
|
: ref(arg);
|
|
51
|
+
const queryKey = makeQueryKey(q.name);
|
|
25
52
|
const r = useQuery(Effect.isEffect(q.handler)
|
|
26
53
|
? {
|
|
27
|
-
|
|
54
|
+
...options,
|
|
55
|
+
queryKey,
|
|
28
56
|
queryFn: () => run
|
|
29
57
|
.value(q.handler)
|
|
30
58
|
.then((_) => _.body)
|
|
@@ -32,11 +60,12 @@ export const useSafeQuery = (q, arg) => {
|
|
|
32
60
|
if (!Runtime.isFiberFailure(_))
|
|
33
61
|
throw _;
|
|
34
62
|
const cause = _[Runtime.FiberFailureCauseId];
|
|
35
|
-
throw
|
|
63
|
+
throw Cause.squash(cause);
|
|
36
64
|
})
|
|
37
65
|
}
|
|
38
66
|
: {
|
|
39
|
-
|
|
67
|
+
...options,
|
|
68
|
+
queryKey: [...queryKey, req],
|
|
40
69
|
queryFn: () => run
|
|
41
70
|
.value(q.handler(req.value))
|
|
42
71
|
.then((_) => _.body)
|
|
@@ -44,22 +73,9 @@ export const useSafeQuery = (q, arg) => {
|
|
|
44
73
|
if (!Runtime.isFiberFailure(_))
|
|
45
74
|
throw _;
|
|
46
75
|
const cause = _[Runtime.FiberFailureCauseId];
|
|
47
|
-
throw
|
|
76
|
+
throw Cause.squash(cause);
|
|
48
77
|
})
|
|
49
78
|
});
|
|
50
|
-
function swrToQuery(r) {
|
|
51
|
-
if (r.error) {
|
|
52
|
-
return r.isValidating
|
|
53
|
-
? Refreshing.fail(r.error, r.data)
|
|
54
|
-
: Done.fail(r.error, r.data);
|
|
55
|
-
}
|
|
56
|
-
if (r.data !== undefined) {
|
|
57
|
-
return r.isValidating
|
|
58
|
-
? Refreshing.succeed(r.data)
|
|
59
|
-
: Done.succeed(r.data);
|
|
60
|
-
}
|
|
61
|
-
return r.isValidating ? new Loading() : new Initial();
|
|
62
|
-
}
|
|
63
79
|
const result = computed(() => swrToQuery({
|
|
64
80
|
error: r.error.value,
|
|
65
81
|
data: r.data.value,
|
|
@@ -67,14 +83,27 @@ export const useSafeQuery = (q, arg) => {
|
|
|
67
83
|
}));
|
|
68
84
|
const latestSuccess = computed(() => {
|
|
69
85
|
const value = result.value;
|
|
70
|
-
return
|
|
71
|
-
?
|
|
86
|
+
return isSuccess(value)
|
|
87
|
+
? Either.isRight(value.current)
|
|
72
88
|
? value.current.right
|
|
73
|
-
:
|
|
89
|
+
: Option.isSome(value.previous)
|
|
74
90
|
? value.previous.value
|
|
75
91
|
: undefined
|
|
76
92
|
: undefined;
|
|
77
93
|
});
|
|
78
94
|
return [result, latestSuccess, r.refetch];
|
|
79
95
|
};
|
|
80
|
-
|
|
96
|
+
function swrToQuery(r) {
|
|
97
|
+
if (r.error) {
|
|
98
|
+
return r.isValidating
|
|
99
|
+
? Refreshing.fail(r.error, r.data)
|
|
100
|
+
: Done.fail(r.error, r.data);
|
|
101
|
+
}
|
|
102
|
+
if (r.data !== undefined) {
|
|
103
|
+
return r.isValidating
|
|
104
|
+
? Refreshing.succeed(r.data)
|
|
105
|
+
: Done.succeed(r.data);
|
|
106
|
+
}
|
|
107
|
+
return r.isValidating ? new Loading() : new Initial();
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL3F1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRW5DLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBMkJqRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUFTO0FBQ1Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzQkU7QUFDRixZQUFrQixFQUNsQixPQUFhO0lBRWIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQztRQUM5QyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDaEQsQ0FBQztBQUVELGdCQUFnQjtBQUNoQixzUkFBc1I7QUFDdFIsMlJBQTJSO0FBQzNSLHVSQUF1UjtBQUN2UixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDM0IsQ0FvQkcsRUFDSCxHQUF3QixFQUN4QixVQUErQyxFQUFFLENBQUMsT0FBTztFQUN6RCxFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2YsTUFBTSxHQUFHLEdBQWlCLENBQUMsR0FBRztRQUM1QixDQUFDLENBQUMsU0FBUztR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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../_src/routeParams.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../_src/routeParams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,6BAM/D;AAED,eAAO,MAAM,cAAc,+DAA2C,CAAA;AAEtE,eAAO,MAAM,QAAQ,YAAa,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,sGAMzD,CAAA;AAED,eAAO,MAAM,eAAe,YAAa,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,sGAMhE,CAAA;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EACxF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAYA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,CAYA"}
|