@effect-app/vue 2.55.9 → 2.56.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 +17 -0
- package/dist/experimental/commander.d.ts +1 -1
- package/dist/experimental/commander.d.ts.map +1 -1
- package/dist/experimental/commander.js +9 -9
- package/dist/experimental/{makeExperimental.d.ts → makeUseCommand.d.ts} +2 -2
- package/dist/experimental/makeUseCommand.d.ts.map +1 -0
- package/dist/experimental/makeUseCommand.js +8 -0
- package/dist/form.d.ts +2 -28
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +3 -39
- package/dist/makeClient.d.ts +130 -47
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +310 -230
- package/dist/runtime.d.ts +4 -43
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +8 -28
- package/package.json +4 -4
- package/src/experimental/commander.ts +19 -15
- package/src/experimental/{makeExperimental.ts → makeUseCommand.ts} +1 -1
- package/src/form.ts +2 -60
- package/src/makeClient.ts +684 -597
- package/src/runtime.ts +7 -28
- package/test/dist/stubs.d.ts.map +1 -1
- package/test/dist/stubs.js +3 -3
- package/test/stubs.ts +2 -2
- package/dist/experimental/makeExperimental.d.ts.map +0 -1
- package/dist/experimental/makeExperimental.js +0 -8
package/dist/makeClient.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import * as Result from "@effect-atom/atom/Result";
|
|
3
3
|
import { isCancelledError } from "@tanstack/vue-query";
|
|
4
|
-
import { Cause, Effect, Exit, Match, Option, Runtime, S, Struct } from "effect-app";
|
|
4
|
+
import { Cause, Effect, Exit, Layer, ManagedRuntime, Match, Option, Runtime, S, Struct } from "effect-app";
|
|
5
5
|
import { ErrorSilenced } from "effect-app/client/errors";
|
|
6
6
|
import { constant, pipe, tuple } from "effect-app/Function";
|
|
7
7
|
import { OperationSuccess } from "effect-app/Operations";
|
|
8
8
|
import { dropUndefinedT } from "effect-app/utils";
|
|
9
|
-
import { computed, onBeforeUnmount, ref, watch } from "vue";
|
|
9
|
+
import { computed, getCurrentInstance, onBeforeUnmount, onUnmounted, ref, shallowRef, watch } from "vue";
|
|
10
10
|
import { reportMessage } from "./errorReporter.js";
|
|
11
|
+
import { Commander } from "./experimental/commander.js";
|
|
12
|
+
import { I18n } from "./experimental/intl.js";
|
|
13
|
+
import { makeUseCommand } from "./experimental/makeUseCommand.js";
|
|
14
|
+
import { Toast } from "./experimental/toast.js";
|
|
11
15
|
import { buildFieldInfoFromFieldsRoot } from "./form.js";
|
|
12
|
-
import {
|
|
16
|
+
import { reportRuntimeError } from "./lib.js";
|
|
13
17
|
import { asResult, makeMutation, mutationResultToVue } from "./mutate.js";
|
|
14
18
|
import { makeQuery } from "./query.js";
|
|
15
19
|
const tapHandler = (handler, map) => Effect.isEffect(handler) ? map(handler) : (i) => map(handler(i));
|
|
@@ -52,224 +56,252 @@ function handleRequest(f, name, action, options) {
|
|
|
52
56
|
? pipe(f, handleEffect(void 0))
|
|
53
57
|
: (i) => pipe(f(i), handleEffect(i)), { action });
|
|
54
58
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
59
|
+
const _useUnsafeMutation = makeMutation();
|
|
60
|
+
export const useUnsafeMutation = (self, options) => tapHandler(_useUnsafeMutation(self, options), Effect.withSpan(`mutation ${self.name}`, { captureStackTrace: false }));
|
|
61
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
62
|
+
export class LegacyMutation extends Effect.Service()("LegacyMutation", {
|
|
63
|
+
effect: Effect.gen(function* () {
|
|
64
|
+
const intl = yield* I18n;
|
|
65
|
+
const toast = yield* Toast;
|
|
66
|
+
return (runtime) => {
|
|
67
|
+
/**
|
|
68
|
+
* Effect results are converted to Exit, so errors are ignored by default.
|
|
69
|
+
* you should use the result ref to render errors!
|
|
70
|
+
*/
|
|
71
|
+
const _useSafeMutation = (self, options) => {
|
|
72
|
+
const unsafe = _useUnsafeMutation(self, options);
|
|
73
|
+
const [a, b] = asResult(tapHandler(unsafe, Effect.tapDefect(reportRuntimeError)));
|
|
74
|
+
return [
|
|
75
|
+
a,
|
|
76
|
+
tapHandler(b, Effect.withSpan(`mutation ${self.name}`, { captureStackTrace: false }))
|
|
77
|
+
];
|
|
78
|
+
};
|
|
79
|
+
const _useHandleRequestWithToast = () => {
|
|
80
|
+
return handleRequestWithToast;
|
|
81
|
+
/**
|
|
82
|
+
* Pass a function that returns a Promise.
|
|
83
|
+
* Returns an execution function which reports errors as Toast.
|
|
84
|
+
*/
|
|
85
|
+
function handleRequestWithToast(f, name, action, options = {}) {
|
|
86
|
+
const actionMessage = intl.formatMessage({ id: `action.${action}`, defaultMessage: action });
|
|
87
|
+
const defaultWarnMessage = intl.formatMessage({ id: "handle.with_warnings" }, { action: actionMessage });
|
|
88
|
+
const defaultSuccessMessage = intl.formatMessage({ id: "handle.success" }, { action: actionMessage });
|
|
89
|
+
const defaultErrorMessage = intl.formatMessage({ id: "handle.with_errors" }, { action: actionMessage });
|
|
90
|
+
return handleRequest(f, name, action, {
|
|
91
|
+
onSuccess: Effect.fnUntraced(function* (a, i) {
|
|
92
|
+
const message = options.successMessage ? yield* options.successMessage(a, i) : defaultSuccessMessage
|
|
93
|
+
+ (S.is(OperationSuccess)(a) && a.message
|
|
94
|
+
? "\n" + a.message
|
|
95
|
+
: "");
|
|
96
|
+
if (message) {
|
|
97
|
+
yield* toast.success(message);
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
onFail: Effect.fnUntraced(function* (e, i) {
|
|
101
|
+
if (!options.failMessage && e._tag === "OperationFailure") {
|
|
102
|
+
yield* toast.warning(defaultWarnMessage + e.message
|
|
103
|
+
? "\n" + e.message
|
|
104
|
+
: "");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const message = options.failMessage
|
|
108
|
+
? yield* options.failMessage(e, i)
|
|
109
|
+
: `${defaultErrorMessage}:\n` + renderError(e);
|
|
110
|
+
if (message) {
|
|
111
|
+
yield* toast.error(message);
|
|
112
|
+
}
|
|
113
|
+
}),
|
|
114
|
+
onDefect: Effect.fnUntraced(function* (cause, i) {
|
|
115
|
+
const message = options.defectMessage
|
|
116
|
+
? yield* options.defectMessage(cause, i)
|
|
117
|
+
: intl.formatMessage({ id: "handle.unexpected_error" }, {
|
|
118
|
+
action: actionMessage,
|
|
119
|
+
error: Cause.pretty(cause)
|
|
120
|
+
});
|
|
121
|
+
if (message) {
|
|
122
|
+
yield* toast.error(message);
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function renderError(e) {
|
|
128
|
+
return Match.value(e).pipe(Match.tags({
|
|
129
|
+
// HttpErrorRequest: e =>
|
|
130
|
+
// intl.value.formatMessage(
|
|
131
|
+
// { id: "handle.request_error" },
|
|
132
|
+
// { error: `${e.error}` },
|
|
133
|
+
// ),
|
|
134
|
+
// HttpErrorResponse: e =>
|
|
135
|
+
// e.response.status >= 500 ||
|
|
136
|
+
// e.response.body._tag !== "Some" ||
|
|
137
|
+
// !e.response.body.value
|
|
138
|
+
// ? intl.value.formatMessage(
|
|
139
|
+
// { id: "handle.error_response" },
|
|
140
|
+
// {
|
|
141
|
+
// error: `${
|
|
142
|
+
// e.response.body._tag === "Some" && e.response.body.value
|
|
143
|
+
// ? parseError(e.response.body.value)
|
|
144
|
+
// : "Unknown"
|
|
145
|
+
// } (${e.response.status})`,
|
|
146
|
+
// },
|
|
147
|
+
// )
|
|
148
|
+
// : intl.value.formatMessage(
|
|
149
|
+
// { id: "handle.unexpected_error" },
|
|
150
|
+
// {
|
|
151
|
+
// error:
|
|
152
|
+
// JSON.stringify(e.response.body, undefined, 2) +
|
|
153
|
+
// "( " +
|
|
154
|
+
// e.response.status +
|
|
155
|
+
// ")",
|
|
156
|
+
// },
|
|
157
|
+
// ),
|
|
158
|
+
// ResponseError: e =>
|
|
159
|
+
// intl.value.formatMessage(
|
|
160
|
+
// { id: "handle.response_error" },
|
|
161
|
+
// { error: `${e.error}` },
|
|
162
|
+
// ),
|
|
163
|
+
ParseError: (e) => {
|
|
164
|
+
console.warn(e.toString());
|
|
165
|
+
return intl.formatMessage({ id: "validation.failed" });
|
|
166
|
+
}
|
|
167
|
+
}), Match.orElse((e) => `${e.message ?? e._tag ?? e}`));
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
172
|
+
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
173
|
+
*/
|
|
174
|
+
const _useAndHandleMutationResult = (self, action, options) => {
|
|
175
|
+
const handleRequestWithToast = _useHandleRequestWithToast();
|
|
176
|
+
const handler = self.handler;
|
|
177
|
+
const [a, b] = asResult(_useUnsafeMutation({
|
|
178
|
+
...self,
|
|
179
|
+
handler: Effect.isEffect(handler)
|
|
180
|
+
? pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler))
|
|
181
|
+
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler(...args)))
|
|
182
|
+
}, options ? dropUndefinedT(options) : undefined));
|
|
183
|
+
return tuple(a, handleRequestWithToast(b, self.name, action, options));
|
|
184
|
+
};
|
|
185
|
+
//
|
|
186
|
+
/**
|
|
187
|
+
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
188
|
+
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
189
|
+
*/
|
|
190
|
+
const _useAndHandleMutation = (self, action, options) => {
|
|
191
|
+
const [a, b] = _useAndHandleMutationResult(self, action, options);
|
|
192
|
+
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
193
|
+
};
|
|
194
|
+
function _makeUseAndHandleMutation(defaultOptions) {
|
|
195
|
+
return ((self, action, options) => {
|
|
196
|
+
return _useAndHandleMutation(self, action, { ...defaultOptions, ...options });
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
201
|
+
* Messages for success, error and defect toasts can be provided in the Options.
|
|
202
|
+
*/
|
|
203
|
+
const _useAndHandleMutationSilently = _makeUseAndHandleMutation({
|
|
204
|
+
successMessage: suppressToast,
|
|
205
|
+
failMessage: suppressToast,
|
|
206
|
+
defectMessage: suppressToast
|
|
207
|
+
});
|
|
208
|
+
/**
|
|
209
|
+
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
210
|
+
* Actions for success, error and defect can be provided in the Options.
|
|
211
|
+
*/
|
|
212
|
+
const _useAndHandleMutationCustom = (self, action, options) => {
|
|
213
|
+
const [a, b] = asResult(_useUnsafeMutation({
|
|
214
|
+
...self,
|
|
215
|
+
handler: Effect.isEffect(self.handler)
|
|
216
|
+
? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
|
|
217
|
+
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args)))
|
|
218
|
+
}, options ? dropUndefinedT(options) : undefined));
|
|
219
|
+
return tuple(computed(() => mutationResultToVue(a.value)), handleRequest(b, self.name, action, {
|
|
220
|
+
onSuccess: suppressToast,
|
|
221
|
+
onDefect: suppressToast,
|
|
222
|
+
onFail: suppressToast,
|
|
223
|
+
...options
|
|
224
|
+
}));
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Effect results are converted to Exit, so errors are ignored by default.
|
|
228
|
+
* you should use the result ref to render errors!
|
|
229
|
+
*/
|
|
230
|
+
const _useSafeMutationWithState = (self, options) => {
|
|
231
|
+
const [a, b] = _useSafeMutation(self, options);
|
|
232
|
+
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
233
|
+
};
|
|
234
|
+
/** @deprecated use OmegaForm */
|
|
235
|
+
const _buildFormFromSchema = (s, state, onSubmit) => {
|
|
236
|
+
const fields = buildFieldInfoFromFieldsRoot(s).fields;
|
|
237
|
+
const schema = S.Struct(Struct.omit(s.fields, "_tag"));
|
|
238
|
+
const parse = S.decodeUnknown(schema);
|
|
239
|
+
const isDirty = ref(false);
|
|
240
|
+
const isValid = ref(true);
|
|
241
|
+
const isLoading = ref(false);
|
|
242
|
+
const runPromise = Runtime.runPromise(runtime);
|
|
243
|
+
const submit1 = (onSubmit) => async (e) => {
|
|
244
|
+
isLoading.value = true;
|
|
245
|
+
try {
|
|
246
|
+
const r = await e;
|
|
247
|
+
if (!r.valid)
|
|
248
|
+
return;
|
|
249
|
+
return await runPromise(onSubmit(new s(await runPromise(parse(state.value)))));
|
|
112
250
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const message = options.defectMessage
|
|
116
|
-
? yield* options.defectMessage(cause, i)
|
|
117
|
-
: intl.formatMessage({ id: "handle.unexpected_error" }, {
|
|
118
|
-
action: actionMessage,
|
|
119
|
-
error: Cause.pretty(cause)
|
|
120
|
-
});
|
|
121
|
-
if (message) {
|
|
122
|
-
toast.error(message);
|
|
251
|
+
finally {
|
|
252
|
+
isLoading.value = false;
|
|
123
253
|
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
172
|
-
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
173
|
-
*/
|
|
174
|
-
const _useAndHandleMutationResult = (self, action, options) => {
|
|
175
|
-
const handleRequestWithToast = _useHandleRequestWithToast();
|
|
176
|
-
const handler = self.handler;
|
|
177
|
-
const [a, b] = asResult(_useUnsafeMutation({
|
|
178
|
-
...self,
|
|
179
|
-
handler: Effect.isEffect(handler)
|
|
180
|
-
? pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler))
|
|
181
|
-
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler(...args)))
|
|
182
|
-
}, options ? dropUndefinedT(options) : undefined));
|
|
183
|
-
return tuple(a, handleRequestWithToast(b, self.name, action, options));
|
|
184
|
-
};
|
|
185
|
-
//
|
|
186
|
-
/**
|
|
187
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
188
|
-
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
189
|
-
*/
|
|
190
|
-
const _useAndHandleMutation = (self, action, options) => {
|
|
191
|
-
const [a, b] = _useAndHandleMutationResult(self, action, options);
|
|
192
|
-
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
193
|
-
};
|
|
194
|
-
function _makeUseAndHandleMutation(defaultOptions) {
|
|
195
|
-
return ((self, action, options) => {
|
|
196
|
-
return _useAndHandleMutation(self, action, { ...defaultOptions, ...options });
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
201
|
-
* Messages for success, error and defect toasts can be provided in the Options.
|
|
202
|
-
*/
|
|
203
|
-
const _useAndHandleMutationSilently = _makeUseAndHandleMutation({
|
|
204
|
-
successMessage: suppressToast,
|
|
205
|
-
failMessage: suppressToast,
|
|
206
|
-
defectMessage: suppressToast
|
|
207
|
-
});
|
|
208
|
-
/**
|
|
209
|
-
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
210
|
-
* Actions for success, error and defect can be provided in the Options.
|
|
211
|
-
*/
|
|
212
|
-
const _useAndHandleMutationCustom = (self, action, options) => {
|
|
213
|
-
const [a, b] = asResult(_useUnsafeMutation({
|
|
214
|
-
...self,
|
|
215
|
-
handler: Effect.isEffect(self.handler)
|
|
216
|
-
? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
|
|
217
|
-
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args)))
|
|
218
|
-
}, options ? dropUndefinedT(options) : undefined));
|
|
219
|
-
return tuple(computed(() => mutationResultToVue(a.value)), handleRequest(b, self.name, action, {
|
|
220
|
-
onSuccess: suppressToast,
|
|
221
|
-
onDefect: suppressToast,
|
|
222
|
-
onFail: suppressToast,
|
|
223
|
-
...options
|
|
224
|
-
}));
|
|
225
|
-
};
|
|
254
|
+
};
|
|
255
|
+
const submit = submit1(onSubmit);
|
|
256
|
+
watch(state, (v) => {
|
|
257
|
+
// TODO: do better
|
|
258
|
+
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
259
|
+
}, { deep: true });
|
|
260
|
+
const submitFromState = Effect.gen(function* () {
|
|
261
|
+
return yield* onSubmit(yield* parse(state.value));
|
|
262
|
+
});
|
|
263
|
+
return {
|
|
264
|
+
fields,
|
|
265
|
+
/** optimized for Vuetify v-form submit callback */
|
|
266
|
+
submit,
|
|
267
|
+
/** optimized for Native form submit callback or general use */
|
|
268
|
+
submitFromState,
|
|
269
|
+
isDirty,
|
|
270
|
+
isValid,
|
|
271
|
+
isLoading
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
return {
|
|
275
|
+
/** @deprecated use Command.fn */
|
|
276
|
+
useSafeMutationWithState: _useSafeMutationWithState,
|
|
277
|
+
/** @deprecated use Command.fn */
|
|
278
|
+
useAndHandleMutation: _useAndHandleMutation,
|
|
279
|
+
/** @deprecated use Command.fn */
|
|
280
|
+
useAndHandleMutationResult: _useAndHandleMutationResult,
|
|
281
|
+
/** @deprecated use Command.fn */
|
|
282
|
+
useAndHandleMutationSilently: _useAndHandleMutationSilently,
|
|
283
|
+
/** @deprecated use Command.fn */
|
|
284
|
+
useAndHandleMutationCustom: _useAndHandleMutationCustom,
|
|
285
|
+
/** @deprecated use Command.fn */
|
|
286
|
+
makeUseAndHandleMutation: _makeUseAndHandleMutation,
|
|
287
|
+
/** @deprecated use Command.fn */
|
|
288
|
+
useHandleRequestWithToast: _useHandleRequestWithToast,
|
|
289
|
+
/** @deprecated use OmegaForm */
|
|
290
|
+
buildFormFromSchema: _buildFormFromSchema,
|
|
291
|
+
/** @deprecated use Command.fn */
|
|
292
|
+
useSafeMutation: _useSafeMutation
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
})
|
|
296
|
+
}) {
|
|
297
|
+
}
|
|
298
|
+
const mkQuery = (runtime) => {
|
|
299
|
+
// making sure names do not collide with auto exports in nuxt apps, please do not rename..
|
|
226
300
|
/**
|
|
227
|
-
* Effect results are
|
|
228
|
-
* you should use the result ref to render errors!
|
|
301
|
+
* Effect results are passed to the caller, including errors.
|
|
229
302
|
*/
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
233
|
-
};
|
|
234
|
-
const _buildFormFromSchema = (s, state, onSubmit) => {
|
|
235
|
-
const fields = buildFieldInfoFromFieldsRoot(s).fields;
|
|
236
|
-
const schema = S.Struct(Struct.omit(s.fields, "_tag"));
|
|
237
|
-
const parse = S.decodeUnknown(schema);
|
|
238
|
-
const isDirty = ref(false);
|
|
239
|
-
const isValid = ref(true);
|
|
240
|
-
const isLoading = ref(false);
|
|
241
|
-
const runPromise = Runtime.runPromise(getRuntime(runtime));
|
|
242
|
-
const submit1 = (onSubmit) => async (e) => {
|
|
243
|
-
isLoading.value = true;
|
|
244
|
-
try {
|
|
245
|
-
const r = await e;
|
|
246
|
-
if (!r.valid)
|
|
247
|
-
return;
|
|
248
|
-
return await runPromise(onSubmit(new s(await runPromise(parse(state.value)))));
|
|
249
|
-
}
|
|
250
|
-
finally {
|
|
251
|
-
isLoading.value = false;
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
const submit = submit1(onSubmit);
|
|
255
|
-
watch(state, (v) => {
|
|
256
|
-
// TODO: do better
|
|
257
|
-
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
258
|
-
}, { deep: true });
|
|
259
|
-
const submitFromState = Effect.gen(function* () {
|
|
260
|
-
return yield* onSubmit(yield* parse(state.value));
|
|
261
|
-
});
|
|
262
|
-
return {
|
|
263
|
-
fields,
|
|
264
|
-
/** optimized for Vuetify v-form submit callback */
|
|
265
|
-
submit,
|
|
266
|
-
/** optimized for Native form submit callback or general use */
|
|
267
|
-
submitFromState,
|
|
268
|
-
isDirty,
|
|
269
|
-
isValid,
|
|
270
|
-
isLoading
|
|
271
|
-
};
|
|
272
|
-
};
|
|
303
|
+
// TODO
|
|
304
|
+
const _useSafeQuery = makeQuery(shallowRef(runtime));
|
|
273
305
|
function useSafeSuspenseQuery(self, argOrOptions, options) {
|
|
274
306
|
const [resultRef, latestRef, fetch, uqrt] = _useSafeQuery(self, argOrOptions, { ...options, suspense: true } // experimental_prefetchInRender: true }
|
|
275
307
|
);
|
|
@@ -307,19 +339,67 @@ _useIntl, _useToast, runtime, messages = {}) => {
|
|
|
307
339
|
return [resultRef, latestRef, fetch, uqrt];
|
|
308
340
|
});
|
|
309
341
|
}
|
|
342
|
+
return { useSafeQuery: _useSafeQuery, useSafeSuspenseQuery };
|
|
343
|
+
};
|
|
344
|
+
export const makeClient = (baseMrt, rootLayer) => {
|
|
345
|
+
const baseRt = Effect.runSync(baseMrt.runtimeEffect);
|
|
346
|
+
const getRt = () => {
|
|
347
|
+
const instance = getCurrentInstance();
|
|
348
|
+
if (!instance.__effa) {
|
|
349
|
+
const rt = ManagedRuntime.make(rootLayer, baseMrt.memoMap);
|
|
350
|
+
instance.__effa = { rt, rts: new Map() };
|
|
351
|
+
onUnmounted(() => rt.dispose());
|
|
352
|
+
}
|
|
353
|
+
return instance.__effa;
|
|
354
|
+
};
|
|
355
|
+
const makeRuntime = (l) => {
|
|
356
|
+
const ctx = getRt();
|
|
357
|
+
const rt = ManagedRuntime.make(Layer.mergeAll(l.pipe(Layer.provide(rootLayer)), rootLayer), ctx.rt.memoMap);
|
|
358
|
+
onUnmounted(() => rt.dispose());
|
|
359
|
+
return rt;
|
|
360
|
+
};
|
|
361
|
+
const get = (key, maker) => {
|
|
362
|
+
const ctx = getRt();
|
|
363
|
+
const existing = ctx.rts.get(key);
|
|
364
|
+
if (existing) {
|
|
365
|
+
return existing;
|
|
366
|
+
}
|
|
367
|
+
const made = maker();
|
|
368
|
+
ctx.rts.set(key, made);
|
|
369
|
+
return made;
|
|
370
|
+
};
|
|
371
|
+
// const getQuery = () => get("query", LegacyQuery.Default)
|
|
372
|
+
const getMutation = () => get("mutation", () => {
|
|
373
|
+
const mrt = makeRuntime(LegacyMutation.Default);
|
|
374
|
+
const mut = mrt.runSync(LegacyMutation);
|
|
375
|
+
const rt = Effect.runSync(mrt.runtimeEffect);
|
|
376
|
+
return mut(rt);
|
|
377
|
+
});
|
|
378
|
+
const useCommand = () => get("command", () => {
|
|
379
|
+
const mrt = makeRuntime(Commander.Default);
|
|
380
|
+
const cmd = mrt.runSync(makeUseCommand());
|
|
381
|
+
return cmd;
|
|
382
|
+
});
|
|
383
|
+
const keys = [
|
|
384
|
+
"useSafeMutationWithState",
|
|
385
|
+
"useAndHandleMutation",
|
|
386
|
+
"useAndHandleMutationResult",
|
|
387
|
+
"useAndHandleMutationSilently",
|
|
388
|
+
"useAndHandleMutationCustom",
|
|
389
|
+
"makeUseAndHandleMutation",
|
|
390
|
+
"useHandleRequestWithToast",
|
|
391
|
+
"buildFormFromSchema",
|
|
392
|
+
"useSafeMutation"
|
|
393
|
+
];
|
|
310
394
|
return {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
useSafeQuery: _useSafeQuery,
|
|
320
|
-
useSafeMutation: _useSafeMutation,
|
|
321
|
-
useUnsafeMutation: __useUnsafeMutation,
|
|
322
|
-
useSafeSuspenseQuery
|
|
395
|
+
useCommand,
|
|
396
|
+
...mkQuery(baseRt),
|
|
397
|
+
...keys.reduce((prev, cur) => {
|
|
398
|
+
prev[cur] = ((...args) => {
|
|
399
|
+
return getMutation()[cur](...args);
|
|
400
|
+
});
|
|
401
|
+
return prev;
|
|
402
|
+
}, {})
|
|
323
403
|
};
|
|
324
404
|
};
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQ2xELE9BQU8sRUFBNEIsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDeEosT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFbkYsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzRCxPQUFPLEVBQXlCLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQW9CLGVBQWUsRUFBWSxHQUFHLEVBQW1CLEtBQUssRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDMUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUF3QixtQkFBbUIsRUFBWSxNQUFNLGFBQWEsQ0FBQTtBQUN6RyxPQUFPLEVBQTBCLFNBQVMsRUFBbUMsTUFBTSxZQUFZLENBQUE7QUFFL0YsTUFBTSxVQUFVLEdBQUcsQ0FDakIsT0FBb0UsRUFDcEUsR0FBNkQsRUFDN0QsRUFBRSxDQUFDLE1BQU0s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
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQ2xELE9BQU8sRUFBNEIsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDeEosT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLDBCQUEwQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNELE9BQU8sRUFBeUIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUUvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBb0Isa0JBQWtCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBWSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDdEosT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFD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
|