@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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @effect-app/vue
2
2
 
3
+ ## 1.26.1
4
+
5
+ ### Patch Changes
6
+
7
+ - fix mutation api
8
+ - Updated dependencies
9
+ - @effect-app/vue@1.26.1
10
+
11
+ ## 1.26.0
12
+
13
+ ### Minor Changes
14
+
15
+ - a4c0f16: play with effect helpers
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [a4c0f16]
20
+ - @effect-app/vue@1.26.0
21
+
3
22
  ## 1.25.2
4
23
 
5
24
  ### Patch Changes
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SuppressErrors = void 0;
7
+ exports.composeQueries = composeQueries;
8
+ exports.mapHandler = exports.makeClient2 = void 0;
9
+ exports.mutationResultToVue = mutationResultToVue;
10
+ exports.pauseWhileProcessing = pauseWhileProcessing;
11
+ exports.useIntervalPauseWhileProcessing = useIntervalPauseWhileProcessing;
12
+ var _Function = require("@effect-app/core/Function");
13
+ var _vue = require("@effect-app/vue");
14
+ var Sentry = _interopRequireWildcard(require("@sentry/browser"));
15
+ var _core = require("@vueuse/core");
16
+ var _effectApp = require("effect-app");
17
+ var _Operations = require("effect-app/Operations");
18
+ var _utils = require("effect-app/utils");
19
+ var _vue2 = require("vue");
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
+ /* eslint-disable @typescript-eslint/no-explicit-any */
23
+
24
+ /**
25
+ * Use this after handling an error yourself, still continueing on the Error track, but the error will not be reported.
26
+ */
27
+ class SuppressErrors extends _effectApp.Cause.YieldableError {
28
+ _tag = "SuppressErrors";
29
+ }
30
+ exports.SuppressErrors = SuppressErrors;
31
+ function pauseWhileProcessing(iv, pmf) {
32
+ return Promise.resolve(iv.pause()).then(() => pmf()).finally(() => iv.resume());
33
+ }
34
+ function useIntervalPauseWhileProcessing(pmf, interval, options) {
35
+ const iv = (0, _core.useIntervalFn)(() => pauseWhileProcessing(iv, pmf), interval, options ? {
36
+ ...options,
37
+ immediateCallback: false
38
+ } : options);
39
+ return {
40
+ isActive: iv.isActive
41
+ };
42
+ }
43
+ function mutationResultToVue(mutationResult) {
44
+ switch (mutationResult._tag) {
45
+ case "Loading":
46
+ {
47
+ return {
48
+ loading: true,
49
+ data: undefined,
50
+ error: undefined
51
+ };
52
+ }
53
+ case "Success":
54
+ {
55
+ return {
56
+ loading: false,
57
+ data: mutationResult.data,
58
+ error: undefined
59
+ };
60
+ }
61
+ case "Error":
62
+ {
63
+ return {
64
+ loading: false,
65
+ data: undefined,
66
+ error: mutationResult.error
67
+ };
68
+ }
69
+ case "Initial":
70
+ {
71
+ return {
72
+ loading: false,
73
+ data: undefined,
74
+ error: undefined
75
+ };
76
+ }
77
+ }
78
+ }
79
+ const makeClient2 = (useIntl, useToast, useSafeMutation, messages = {}) => {
80
+ const useHandleRequestWithToast = () => {
81
+ const toast = useToast();
82
+ const {
83
+ intl
84
+ } = useIntl();
85
+ return handleRequestWithToast;
86
+ /**
87
+ * Pass a function that returns a Promise.
88
+ * Returns an execution function which reports errors as Toast.
89
+ */
90
+ function handleRequestWithToast(f, action, options = {
91
+ suppressErrorToast: false
92
+ }) {
93
+ const message = messages[action] ?? action;
94
+ const warnMessage = intl.value.formatMessage({
95
+ id: "handle.with_warnings"
96
+ }, {
97
+ action: message
98
+ });
99
+ const successMessage = intl.value.formatMessage({
100
+ id: "handle.success"
101
+ }, {
102
+ action: message
103
+ });
104
+ const errorMessage = intl.value.formatMessage({
105
+ id: "handle.with_errors"
106
+ }, {
107
+ action: message
108
+ });
109
+ return Object.assign((0, _Function.flow)(f, _effectApp.Effect.onExit(_effectApp.Exit.matchEffect({
110
+ onSuccess: r => _effectApp.Effect.gen(function* () {
111
+ if (_effectApp.S.is(_Operations.Failure)(r)) {
112
+ toast.warning(warnMessage + r.message ? "\n" + r.message : "");
113
+ return;
114
+ }
115
+ toast.success(successMessage + (_effectApp.S.is(_Operations.Success)(r) && r.message ? "\n" + r.message : ""));
116
+ }),
117
+ onFailure: err => _effectApp.Effect.gen(function* () {
118
+ if (_effectApp.Cause.isInterruptedOnly(err)) {
119
+ return;
120
+ }
121
+ const fail = _effectApp.Cause.failureOption(err);
122
+ if (_effectApp.Option.isSome(fail)) {
123
+ if (fail._tag === "SuppressErrors") {
124
+ return _effectApp.Effect.succeed(void 0);
125
+ }
126
+ if (!options.suppressErrorToast) {
127
+ toast.error(`${errorMessage}:\n` + renderError(fail.value));
128
+ }
129
+ console.warn(fail, fail.toString());
130
+ return;
131
+ }
132
+ const extra = {
133
+ action,
134
+ message: `Unexpected Error trying to ${action}`
135
+ };
136
+ Sentry.captureException(err, {
137
+ extra
138
+ });
139
+ console.error(err, extra);
140
+ toast.error(intl.value.formatMessage({
141
+ id: "handle.unexpected_error"
142
+ }, {
143
+ action: message,
144
+ error: JSON.stringify(err, undefined, 2)
145
+ }));
146
+ })
147
+ }))), {
148
+ action
149
+ });
150
+ }
151
+ function renderError(e) {
152
+ return _effectApp.Match.value(e).pipe(_effectApp.Match.tags({
153
+ // HttpErrorRequest: e =>
154
+ // intl.value.formatMessage(
155
+ // { id: "handle.request_error" },
156
+ // { error: `${e.error}` },
157
+ // ),
158
+ // HttpErrorResponse: e =>
159
+ // e.response.status >= 500 ||
160
+ // e.response.body._tag !== "Some" ||
161
+ // !e.response.body.value
162
+ // ? intl.value.formatMessage(
163
+ // { id: "handle.error_response" },
164
+ // {
165
+ // error: `${
166
+ // e.response.body._tag === "Some" && e.response.body.value
167
+ // ? parseError(e.response.body.value)
168
+ // : "Unknown"
169
+ // } (${e.response.status})`,
170
+ // },
171
+ // )
172
+ // : intl.value.formatMessage(
173
+ // { id: "handle.unexpected_error" },
174
+ // {
175
+ // error:
176
+ // JSON.stringify(e.response.body, undefined, 2) +
177
+ // "( " +
178
+ // e.response.status +
179
+ // ")",
180
+ // },
181
+ // ),
182
+ // ResponseError: e =>
183
+ // intl.value.formatMessage(
184
+ // { id: "handle.response_error" },
185
+ // { error: `${e.error}` },
186
+ // ),
187
+ ParseError: e => {
188
+ console.warn(e.toString());
189
+ return intl.value.formatMessage({
190
+ id: "validation.failed"
191
+ });
192
+ }
193
+ }), _effectApp.Match.orElse(e => intl.value.formatMessage({
194
+ id: "handle.unexpected_error"
195
+ }, {
196
+ error: `${e.message ?? e._tag ?? e}`
197
+ })));
198
+ }
199
+ };
200
+ /**
201
+ * Pass a function that returns an Effect, e.g from a client action, give it a name, and optionally pass an onSuccess callback.
202
+ * Returns a tuple with state ref and execution function which reports errors as Toast.
203
+ */
204
+ const useAndHandleMutation = (self, action, options) => {
205
+ const handleRequestWithToast = useHandleRequestWithToast();
206
+ const [a, b] = useSafeMutation({
207
+ handler: _effectApp.Effect.isEffect(self.handler) ? (0, _Function.pipe)(_effectApp.Effect.annotateCurrentSpan({
208
+ action
209
+ }), _effectApp.Effect.andThen(self.handler)) : (...args) => (0, _Function.pipe)(_effectApp.Effect.annotateCurrentSpan({
210
+ action
211
+ }), _effectApp.Effect.andThen(self.handler(...args))),
212
+ name: self.name
213
+ }, (0, _utils.dropUndefinedT)({
214
+ queryInvalidation: options?.queryInvalidation
215
+ }));
216
+ return (0, _Function.tuple)((0, _vue2.computed)(() => mutationResultToVue(a.value)), handleRequestWithToast(b, action, options));
217
+ };
218
+ function makeUseAndHandleMutation(defaultOptions) {
219
+ return (self, action, options) => {
220
+ return useAndHandleMutation({
221
+ handler: self.handler,
222
+ name: self.name
223
+ }, action, {
224
+ ...defaultOptions,
225
+ ...options
226
+ });
227
+ };
228
+ }
229
+ const useSafeMutationWithState = self => {
230
+ const [a, b] = useSafeMutation(self);
231
+ return (0, _Function.tuple)((0, _vue2.computed)(() => mutationResultToVue(a.value)), b);
232
+ };
233
+ return {
234
+ useSafeMutationWithState,
235
+ useAndHandleMutation,
236
+ makeUseAndHandleMutation,
237
+ useHandleRequestWithToast
238
+ };
239
+ };
240
+ exports.makeClient2 = makeClient2;
241
+ const mapHandler = (self, map) => ({
242
+ ...self,
243
+ handler: typeof self.handler === "function" ? i => map(i)(self.handler(i)) : map(self.handler)
244
+ });
245
+ exports.mapHandler = mapHandler;
246
+ function composeQueries(results, renderPreviousOnFailure) {
247
+ const values = renderPreviousOnFailure ? Object.values(results).map(orPrevious) : Object.values(results);
248
+ const error = values.find(_vue.Result.isFailure);
249
+ if (error) {
250
+ return error;
251
+ }
252
+ const initial = _effectApp.Array.findFirst(values, x => x._tag === "Initial" ? _effectApp.Option.some(x) : _effectApp.Option.none());
253
+ if (initial.value !== undefined) {
254
+ return initial.value;
255
+ }
256
+ const loading = _effectApp.Array.findFirst(values, x => _vue.Result.isInitial(x) && x.waiting ? _effectApp.Option.some(x) : _effectApp.Option.none());
257
+ if (loading.value !== undefined) {
258
+ return loading.value;
259
+ }
260
+ const isRefreshing = values.some(x => x.waiting);
261
+ const r = Object.entries(results).reduce((prev, [key, value]) => {
262
+ prev[key] = _vue.Result.value(value).value;
263
+ return prev;
264
+ }, {});
265
+ return _vue.Result.success(r, isRefreshing);
266
+ }
267
+ function orPrevious(result) {
268
+ return _vue.Result.isFailure(result) && _effectApp.Option.isSome(result.previousValue) ? _vue.Result.success(result.previousValue.value, result.waiting) : result;
269
+ }
270
+ //# sourceMappingURL=makeClient2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeClient2.cjs","names":["_Function","require","_vue","Sentry","_interopRequireWildcard","_core","_effectApp","_Operations","_utils","_vue2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SuppressErrors","Cause","YieldableError","_tag","exports","pauseWhileProcessing","iv","pmf","Promise","resolve","pause","then","finally","resume","useIntervalPauseWhileProcessing","interval","options","useIntervalFn","immediateCallback","isActive","mutationResultToVue","mutationResult","loading","data","undefined","error","makeClient2","useIntl","useToast","useSafeMutation","messages","useHandleRequestWithToast","toast","intl","handleRequestWithToast","f","action","suppressErrorToast","message","warnMessage","value","formatMessage","id","successMessage","errorMessage","assign","flow","Effect","onExit","Exit","matchEffect","onSuccess","gen","S","is","Failure","warning","success","Success","onFailure","err","isInterruptedOnly","fail","failureOption","Option","isSome","succeed","renderError","console","warn","toString","extra","captureException","JSON","stringify","Match","pipe","tags","ParseError","orElse","useAndHandleMutation","self","b","handler","isEffect","annotateCurrentSpan","andThen","args","name","dropUndefinedT","queryInvalidation","tuple","computed","makeUseAndHandleMutation","defaultOptions","useSafeMutationWithState","mapHandler","map","composeQueries","results","renderPreviousOnFailure","values","orPrevious","find","Result","isFailure","initial","Array","findFirst","x","some","none","isInitial","waiting","isRefreshing","entries","reduce","prev","key","result","previousValue"],"sources":["../src/makeClient2.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.make = make;
7
+ exports.makeMutation2 = void 0;
8
+ var _Function = require("@effect-app/core/Function");
9
+ var Result = _interopRequireWildcard(require("@effect-rx/rx/Result"));
10
+ var _vueQuery = require("@tanstack/vue-query");
11
+ var _effectApp = require("effect-app");
12
+ var _vue = require("vue");
13
+ var _internal = require("./internal.cjs");
14
+ var _mutate = require("./mutate.cjs");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ /* eslint-disable @typescript-eslint/no-explicit-any */
18
+
19
+ function make(self) {
20
+ const result = (0, _vue.shallowRef)(Result.initial());
21
+ const execute = _effectApp.Effect.sync(() => {
22
+ result.value = Result.waiting(result.value);
23
+ }).pipe(_effectApp.Effect.andThen(self), _effectApp.Effect.exit, _effectApp.Effect.andThen(Result.fromExit), _effectApp.Effect.flatMap(r => _effectApp.Effect.sync(() => result.value = r)));
24
+ const latestSuccess = (0, _vue.computed)(() => _effectApp.Option.getOrUndefined(Result.value(result.value)));
25
+ return (0, _Function.tuple)(result, latestSuccess, execute);
26
+ }
27
+ // TODO: more efficient invalidation, including args etc
28
+ // return Effect.promise(() => queryClient.invalidateQueries({
29
+ // predicate: (_) => nses.includes(_.queryKey.filter((_) => _.startsWith("$")).join("/"))
30
+ // }))
31
+ /*
32
+ // const nses: string[] = []
33
+ // for (let i = 0; i < ns.length; i++) {
34
+ // nses.push(ns.slice(0, i + 1).join("/"))
35
+ // }
36
+ */
37
+ const makeMutation2 = () => {
38
+ /**
39
+ * Pass a function that returns an Effect, e.g from a client action, or an Effect
40
+ * Returns a tuple with state ref and execution function which reports errors as Toast.
41
+ */
42
+ const useSafeMutation = (self, options) => {
43
+ const queryClient = (0, _vueQuery.useQueryClient)();
44
+ const state = (0, _vue.ref)({
45
+ _tag: "Initial"
46
+ });
47
+ const invalidateQueries = (filters, options) => _effectApp.Effect.promise(() => queryClient.invalidateQueries(filters, options));
48
+ function handleExit(exit) {
49
+ return _effectApp.Effect.sync(() => {
50
+ if (_effectApp.Exit.isSuccess(exit)) {
51
+ state.value = {
52
+ _tag: "Success",
53
+ data: exit.value
54
+ };
55
+ return;
56
+ }
57
+ const err = _effectApp.Cause.failureOption(exit.cause);
58
+ if (_effectApp.Option.isSome(err)) {
59
+ state.value = {
60
+ _tag: "Error",
61
+ error: err.value
62
+ };
63
+ return;
64
+ }
65
+ });
66
+ }
67
+ const invalidateCache = _effectApp.Effect.suspend(() => {
68
+ const queryKey = (0, _mutate.getQueryKey)(self.name);
69
+ if (options?.queryInvalidation) {
70
+ const opts = options.queryInvalidation(queryKey, self.name);
71
+ if (!opts.length) {
72
+ return _effectApp.Effect.void;
73
+ }
74
+ return _effectApp.Effect.andThen(_effectApp.Effect.annotateCurrentSpan({
75
+ queryKey,
76
+ opts
77
+ }), _effectApp.Effect.forEach(opts, _ => invalidateQueries(_.filters, _.options), {
78
+ concurrency: "inherit"
79
+ })).pipe(_effectApp.Effect.withSpan("client.query.invalidation", {
80
+ captureStackTrace: false
81
+ }));
82
+ }
83
+ if (!queryKey) return _effectApp.Effect.void;
84
+ return _effectApp.Effect.andThen(_effectApp.Effect.annotateCurrentSpan({
85
+ queryKey
86
+ }), invalidateQueries({
87
+ queryKey
88
+ })).pipe(_effectApp.Effect.withSpan("client.query.invalidation", {
89
+ captureStackTrace: false
90
+ }));
91
+ });
92
+ const exec = fst => {
93
+ let effect;
94
+ if (_effectApp.Effect.isEffect(self.handler)) {
95
+ effect = self.handler;
96
+ } else {
97
+ effect = self.handler(fst);
98
+ }
99
+ return _effectApp.Effect.sync(() => {
100
+ state.value = {
101
+ _tag: "Loading"
102
+ };
103
+ }).pipe(_effectApp.Effect.zipRight(effect), _effectApp.Effect.tap(invalidateCache), _effectApp.Effect.tapDefect(_internal.reportRuntimeError), _effectApp.Effect.onExit(handleExit), _effectApp.Effect.withSpan(`mutation ${self.name}`, {
104
+ captureStackTrace: false
105
+ }));
106
+ };
107
+ return (0, _Function.tuple)(state, exec);
108
+ };
109
+ return useSafeMutation;
110
+ };
111
+ exports.makeMutation2 = makeMutation2;
112
+ //# sourceMappingURL=mutate2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutate2.cjs","names":["_Function","require","Result","_interopRequireWildcard","_vueQuery","_effectApp","_vue","_internal","_mutate","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","make","self","result","shallowRef","initial","execute","Effect","sync","value","waiting","pipe","andThen","exit","fromExit","flatMap","latestSuccess","computed","Option","getOrUndefined","tuple","makeMutation2","useSafeMutation","options","queryClient","useQueryClient","state","ref","_tag","invalidateQueries","filters","promise","handleExit","Exit","isSuccess","data","err","Cause","failureOption","cause","isSome","error","invalidateCache","suspend","queryKey","getQueryKey","name","queryInvalidation","opts","length","void","annotateCurrentSpan","forEach","_","concurrency","withSpan","captureStackTrace","exec","fst","effect","isEffect","handler","zipRight","tap","tapDefect","reportRuntimeError","onExit","exports"],"sources":["../src/mutate2.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.makeQuery2 = void 0;
7
+ var _httpClient = require("@effect-app/core/http/http-client");
8
+ var Result = _interopRequireWildcard(require("@effect-rx/rx/Result"));
9
+ var _vueQuery = require("@tanstack/vue-query");
10
+ var _effectApp = require("effect-app");
11
+ var _client = require("effect-app/client");
12
+ var _vue = require("vue");
13
+ var _internal = require("./internal.cjs");
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ /* eslint-disable @typescript-eslint/no-explicit-any */
17
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
18
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
19
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
20
+
21
+ const makeQuery2 = runtime => {
22
+ // TODO: options
23
+ // declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryReturnType<TData, TError>;
24
+ // declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryDefinedReturnType<TData, TError>;
25
+ // 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>;
26
+ const useSafeQuery_ = (q, arg, options = {} // TODO
27
+ ) => {
28
+ const runPromise = _effectApp.Runtime.runPromise(runtime.value);
29
+ const arr = arg;
30
+ const req = !arg ? undefined : typeof arr === "function" ? {
31
+ get value() {
32
+ return arr();
33
+ }
34
+ } : (0, _vue.ref)(arg);
35
+ const queryKey = (0, _internal.makeQueryKey)(q.name);
36
+ const handler = q.handler;
37
+ const r = (0, _vueQuery.useQuery)(_effectApp.Effect.isEffect(handler) ? {
38
+ ...options,
39
+ retry: (retryCount, error) => {
40
+ if (_effectApp.Runtime.isFiberFailure(error)) {
41
+ const cause = error[_effectApp.Runtime.FiberFailureCauseId];
42
+ const sq = _effectApp.Cause.squash(cause);
43
+ if (!(0, _httpClient.isHttpRequestError)(sq) && !(0, _httpClient.isHttpResponseError)(sq) && !_effectApp.S.is(_client.ServiceUnavailableError)(sq)) {
44
+ return false;
45
+ }
46
+ }
47
+ return retryCount < 5;
48
+ },
49
+ queryKey,
50
+ queryFn: ({
51
+ signal
52
+ }) => runPromise(handler.pipe(_effectApp.Effect.tapDefect(_internal.reportRuntimeError), _effectApp.Effect.withSpan(`query ${q.name}`, {
53
+ captureStackTrace: false
54
+ })), {
55
+ signal
56
+ })
57
+ } : {
58
+ ...options,
59
+ retry: (retryCount, error) => {
60
+ if (_effectApp.Runtime.isFiberFailure(error)) {
61
+ const cause = error[_effectApp.Runtime.FiberFailureCauseId];
62
+ const sq = _effectApp.Cause.squash(cause);
63
+ if (!(0, _httpClient.isHttpRequestError)(sq) && !(0, _httpClient.isHttpResponseError)(sq) && !_effectApp.S.is(_client.ServiceUnavailableError)(sq)) {
64
+ return false;
65
+ }
66
+ }
67
+ return retryCount < 5;
68
+ },
69
+ queryKey: [...queryKey, req],
70
+ queryFn: ({
71
+ signal
72
+ }) => runPromise(handler(req.value).pipe(_effectApp.Effect.tapDefect(_internal.reportRuntimeError), _effectApp.Effect.withSpan(`query ${q.name}`, {
73
+ captureStackTrace: false
74
+ })), {
75
+ signal
76
+ })
77
+ });
78
+ const result = (0, _vue.computed)(() => swrToQuery({
79
+ error: r.error.value ?? undefined,
80
+ data: r.data.value,
81
+ isValidating: r.isFetching.value
82
+ }));
83
+ const latestSuccess = (0, _vue.computed)(() => _effectApp.Option.getOrUndefined(Result.value(result.value)));
84
+ return [result, latestSuccess,
85
+ // one thing to keep in mind is that span will be disconnected as Context does not pass from outside.
86
+ options => _effectApp.Effect.promise(() => r.refetch(options)), r];
87
+ };
88
+ function swrToQuery(r) {
89
+ if (r.error) {
90
+ return Result.failureWithPrevious(r.error[_effectApp.Runtime.FiberFailureCauseId], r.data === undefined ? _effectApp.Option.none() : _effectApp.Option.some(Result.success(r.data)), r.isValidating);
91
+ }
92
+ if (r.data !== undefined) {
93
+ return Result.success(r.data, r.isValidating);
94
+ }
95
+ return Result.initial(r.isValidating);
96
+ }
97
+ function useSafeQuery(self,
98
+ /*
99
+ q:
100
+ | {
101
+ handler: (
102
+ req: I
103
+ ) => Effect<
104
+ A,
105
+ E,
106
+ R
107
+ >
108
+ mapPath: (req: I) => string
109
+ name: string
110
+ }
111
+ | {
112
+ handler: Effect<
113
+ A,
114
+ E,
115
+ R
116
+ >
117
+ mapPath: string
118
+ name: string
119
+ },
120
+ */
121
+ argOrOptions, options) {
122
+ return _effectApp.Effect.isEffect(self.handler) ? useSafeQuery_(self, undefined, argOrOptions) : useSafeQuery_(self, argOrOptions, options);
123
+ }
124
+ return useSafeQuery;
125
+ };
126
+ exports.makeQuery2 = makeQuery2;
127
+ //# sourceMappingURL=query2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query2.cjs","names":["_httpClient","require","Result","_interopRequireWildcard","_vueQuery","_effectApp","_client","_vue","_internal","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeQuery2","runtime","useSafeQuery_","q","arg","options","runPromise","Runtime","value","arr","req","undefined","ref","queryKey","makeQueryKey","name","handler","useQuery","Effect","isEffect","retry","retryCount","error","isFiberFailure","cause","FiberFailureCauseId","sq","Cause","squash","isHttpRequestError","isHttpResponseError","S","is","ServiceUnavailableError","queryFn","signal","pipe","tapDefect","reportRuntimeError","withSpan","captureStackTrace","result","computed","swrToQuery","data","isValidating","isFetching","latestSuccess","Option","getOrUndefined","promise","refetch","failureWithPrevious","none","some","success","initial","useSafeQuery","self","argOrOptions","exports"],"sources":["../src/query2.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}