@effect-app/vue 2.77.4 → 2.77.6
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 +12 -0
- package/dist/experimental/commander.d.ts +3 -3
- package/dist/experimental/makeUseCommand.d.ts +1 -1
- package/dist/makeClient.d.ts +173 -164
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +254 -255
- package/package.json +1 -1
- package/src/makeClient.ts +623 -621
package/dist/makeClient.js
CHANGED
|
@@ -74,270 +74,272 @@ export const useMutationInt = () => {
|
|
|
74
74
|
const _useMutation = useMakeMutation();
|
|
75
75
|
return (self, options) => Object.assign(mapHandler(_useMutation(self, options), Effect.withSpan(`mutation ${self.id}`, { captureStackTrace: false })), { id: self.id });
|
|
76
76
|
};
|
|
77
|
+
export class LegacyMutationImpl {
|
|
78
|
+
getRuntime;
|
|
79
|
+
toast;
|
|
80
|
+
intl;
|
|
81
|
+
constructor(getRuntime, toast, intl) {
|
|
82
|
+
this.getRuntime = getRuntime;
|
|
83
|
+
this.toast = toast;
|
|
84
|
+
this.intl = intl;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Effect results are converted to Exit, so errors are ignored by default.
|
|
88
|
+
* you should use the result ref to render errors!
|
|
89
|
+
* @deprecated use `Command.fn` and friends instead
|
|
90
|
+
*/
|
|
91
|
+
useSafeMutation = (self, options) => {
|
|
92
|
+
const unsafe = _useMutation(self, options);
|
|
93
|
+
const mh = options?.mapHandler ?? identity;
|
|
94
|
+
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
95
|
+
return [
|
|
96
|
+
a,
|
|
97
|
+
mapHandler(b, Effect.withSpan(`mutation ${self.id}`, { captureStackTrace: false }))
|
|
98
|
+
];
|
|
99
|
+
};
|
|
100
|
+
/** handles errors as toasts and reports defects
|
|
101
|
+
* @deprecated use `Command.fn` and friends instead
|
|
102
|
+
*/
|
|
103
|
+
useHandleRequestWithToast = () => {
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
105
|
+
const self = this;
|
|
106
|
+
return handleRequestWithToast;
|
|
107
|
+
/**
|
|
108
|
+
* Pass a function that returns a Promise.
|
|
109
|
+
* Returns an execution function which reports errors as Toast.
|
|
110
|
+
*/
|
|
111
|
+
function handleRequestWithToast(f, id, action, options = {}) {
|
|
112
|
+
const actionMessage = self.intl.formatMessage({ id: `action.${action}`, defaultMessage: action });
|
|
113
|
+
const defaultWarnMessage = self.intl.formatMessage({ id: "handle.with_warnings" }, { action: actionMessage });
|
|
114
|
+
const defaultSuccessMessage = self.intl.formatMessage({ id: "handle.success" }, { action: actionMessage });
|
|
115
|
+
const defaultErrorMessage = self.intl.formatMessage({ id: "handle.with_errors" }, { action: actionMessage });
|
|
116
|
+
return handleRequest(f, id, action, {
|
|
117
|
+
onSuccess: Effect.fnUntraced(function* (a, i) {
|
|
118
|
+
const message = options.successMessage ? yield* options.successMessage(a, i) : defaultSuccessMessage
|
|
119
|
+
+ (S.is(OperationSuccess)(a) && a.message
|
|
120
|
+
? "\n" + a.message
|
|
121
|
+
: "");
|
|
122
|
+
if (message) {
|
|
123
|
+
yield* self.toast.success(message);
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
onFail: Effect.fnUntraced(function* (e, i) {
|
|
127
|
+
if (!options.failMessage && e._tag === "OperationFailure") {
|
|
128
|
+
yield* self.toast.warning(defaultWarnMessage + e.message
|
|
129
|
+
? "\n" + e.message
|
|
130
|
+
: "");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const message = options.failMessage
|
|
134
|
+
? yield* options.failMessage(e, i)
|
|
135
|
+
: `${defaultErrorMessage}:\n` + renderError(e);
|
|
136
|
+
if (message) {
|
|
137
|
+
yield* self.toast.error(message);
|
|
138
|
+
}
|
|
139
|
+
}),
|
|
140
|
+
onDefect: Effect.fnUntraced(function* (cause, i) {
|
|
141
|
+
const message = options.defectMessage
|
|
142
|
+
? yield* options.defectMessage(cause, i)
|
|
143
|
+
: self.intl.formatMessage({ id: "handle.unexpected_error" }, {
|
|
144
|
+
action: actionMessage,
|
|
145
|
+
error: Cause.pretty(cause)
|
|
146
|
+
});
|
|
147
|
+
if (message) {
|
|
148
|
+
yield* self.toast.error(message);
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function renderError(e) {
|
|
154
|
+
return Match.value(e).pipe(Match.tags({
|
|
155
|
+
// HttpErrorRequest: e =>
|
|
156
|
+
// this.intl.value.formatMessage(
|
|
157
|
+
// { id: "handle.request_error" },
|
|
158
|
+
// { error: `${e.error}` },
|
|
159
|
+
// ),
|
|
160
|
+
// HttpErrorResponse: e =>
|
|
161
|
+
// e.response.status >= 500 ||
|
|
162
|
+
// e.response.body._tag !== "Some" ||
|
|
163
|
+
// !e.response.body.value
|
|
164
|
+
// ? this.intl.value.formatMessage(
|
|
165
|
+
// { id: "handle.error_response" },
|
|
166
|
+
// {
|
|
167
|
+
// error: `${
|
|
168
|
+
// e.response.body._tag === "Some" && e.response.body.value
|
|
169
|
+
// ? parseError(e.response.body.value)
|
|
170
|
+
// : "Unknown"
|
|
171
|
+
// } (${e.response.status})`,
|
|
172
|
+
// },
|
|
173
|
+
// )
|
|
174
|
+
// : this.intl.value.formatMessage(
|
|
175
|
+
// { id: "handle.unexpected_error" },
|
|
176
|
+
// {
|
|
177
|
+
// error:
|
|
178
|
+
// JSON.stringify(e.response.body, undefined, 2) +
|
|
179
|
+
// "( " +
|
|
180
|
+
// e.response.status +
|
|
181
|
+
// ")",
|
|
182
|
+
// },
|
|
183
|
+
// ),
|
|
184
|
+
// ResponseError: e =>
|
|
185
|
+
// this.intl.value.formatMessage(
|
|
186
|
+
// { id: "handle.response_error" },
|
|
187
|
+
// { error: `${e.error}` },
|
|
188
|
+
// ),
|
|
189
|
+
ParseError: (e) => {
|
|
190
|
+
console.warn(e.toString());
|
|
191
|
+
return self.intl.formatMessage({ id: "validation.failed" });
|
|
192
|
+
}
|
|
193
|
+
}), Match.orElse((e) => `${e.message ?? e._tag ?? e}`));
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
198
|
+
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
199
|
+
* @deprecated use `Command.fn` and friends instead
|
|
200
|
+
*/
|
|
201
|
+
useAndHandleMutationResult = (self, action, options) => {
|
|
202
|
+
const handleRequestWithToast = this.useHandleRequestWithToast();
|
|
203
|
+
const handler = self.handler;
|
|
204
|
+
const unsafe = _useMutation({
|
|
205
|
+
...self,
|
|
206
|
+
handler: Effect.isEffect(handler)
|
|
207
|
+
? pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler))
|
|
208
|
+
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler(...args)))
|
|
209
|
+
}, options ? dropUndefinedT(options) : undefined);
|
|
210
|
+
const mh = options?.mapHandler ?? identity;
|
|
211
|
+
// Effect.tapDefect(reportRuntimeError) handled in toast handler,
|
|
212
|
+
const [a, b] = asResult(mapHandler(unsafe, mh));
|
|
213
|
+
return tuple(a, handleRequestWithToast(b, self.id, action, options));
|
|
214
|
+
};
|
|
215
|
+
//
|
|
216
|
+
/**
|
|
217
|
+
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
218
|
+
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
219
|
+
*
|
|
220
|
+
* @deprecated use `Command.fn` and friends instead
|
|
221
|
+
*/
|
|
222
|
+
useAndHandleMutation = (self, action, options) => {
|
|
223
|
+
const [a, b] = this.useAndHandleMutationResult(self, action, options);
|
|
224
|
+
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
225
|
+
};
|
|
226
|
+
/** @deprecated use `Command.fn` and friends instead */
|
|
227
|
+
makeUseAndHandleMutation = (defaultOptions) => ((self, action, options) => {
|
|
228
|
+
return this.useAndHandleMutation(self, action, { ...defaultOptions, ...options });
|
|
229
|
+
});
|
|
230
|
+
/**
|
|
231
|
+
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
232
|
+
* Messages for success, error and defect toasts can be provided in the Options.
|
|
233
|
+
* @deprecated use `Command.fn` and friends instead
|
|
234
|
+
*/
|
|
235
|
+
useAndHandleMutationSilently = this.makeUseAndHandleMutation({
|
|
236
|
+
successMessage: suppressToast,
|
|
237
|
+
failMessage: suppressToast,
|
|
238
|
+
defectMessage: suppressToast
|
|
239
|
+
});
|
|
240
|
+
/**
|
|
241
|
+
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
242
|
+
* Actions for success, error and defect can be provided in the Options.
|
|
243
|
+
* @deprecated use `Command.fn` and friends instead
|
|
244
|
+
*/
|
|
245
|
+
useAndHandleMutationCustom = (self, action, options) => {
|
|
246
|
+
const unsafe = _useMutation({
|
|
247
|
+
...self,
|
|
248
|
+
handler: Effect.isEffect(self.handler)
|
|
249
|
+
? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
|
|
250
|
+
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args)))
|
|
251
|
+
}, options ? dropUndefinedT(options) : undefined);
|
|
252
|
+
const mh = options?.mapHandler ?? identity;
|
|
253
|
+
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
254
|
+
return tuple(computed(() => mutationResultToVue(a.value)), handleRequest(b, self.id, action, {
|
|
255
|
+
onSuccess: suppressToast,
|
|
256
|
+
onDefect: suppressToast,
|
|
257
|
+
onFail: suppressToast,
|
|
258
|
+
...options
|
|
259
|
+
}));
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* Effect results are converted to Exit, so errors are ignored by default.
|
|
263
|
+
* you should use the result ref to render errors!
|
|
264
|
+
* @deprecated use `Command.fn` and friends instead
|
|
265
|
+
*/
|
|
266
|
+
useSafeMutationWithState = (self, options) => {
|
|
267
|
+
const [a, b] = this.useSafeMutation(self, options);
|
|
268
|
+
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
269
|
+
};
|
|
270
|
+
/** @deprecated use OmegaForm */
|
|
271
|
+
buildFormFromSchema = (s, state, onSubmit) => {
|
|
272
|
+
const fields = buildFieldInfoFromFieldsRoot(s).fields;
|
|
273
|
+
const schema = S.Struct(Struct.omit(s.fields, "_tag"));
|
|
274
|
+
const parse = S.decodeUnknown(schema);
|
|
275
|
+
const isDirty = ref(false);
|
|
276
|
+
const isValid = ref(true);
|
|
277
|
+
const isLoading = ref(false);
|
|
278
|
+
const runPromise = Runtime.runPromise(this.getRuntime());
|
|
279
|
+
const submit1 = (onSubmit) => async (e) => {
|
|
280
|
+
isLoading.value = true;
|
|
281
|
+
try {
|
|
282
|
+
const r = await e;
|
|
283
|
+
if (!r.valid)
|
|
284
|
+
return;
|
|
285
|
+
return await runPromise(onSubmit(new s(await runPromise(parse(state.value)))));
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
isLoading.value = false;
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
const submit = submit1(onSubmit);
|
|
292
|
+
watch(state, (v) => {
|
|
293
|
+
// TODO: do better
|
|
294
|
+
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
295
|
+
}, { deep: true });
|
|
296
|
+
const submitFromState = Effect.gen(function* () {
|
|
297
|
+
return yield* onSubmit(yield* parse(state.value));
|
|
298
|
+
});
|
|
299
|
+
const submitFromStatePromise = () => runPromise(submitFromState);
|
|
300
|
+
return {
|
|
301
|
+
fields,
|
|
302
|
+
/** optimized for Vuetify v-form submit callback */
|
|
303
|
+
submit,
|
|
304
|
+
/** optimized for Native form submit callback or general use */
|
|
305
|
+
submitFromState,
|
|
306
|
+
submitFromStatePromise,
|
|
307
|
+
isDirty,
|
|
308
|
+
isValid,
|
|
309
|
+
isLoading
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
}
|
|
77
313
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
78
314
|
export class LegacyMutation extends Effect.Service()("LegacyMutation", {
|
|
79
315
|
effect: Effect.gen(function* () {
|
|
80
316
|
const intl = yield* I18n;
|
|
81
317
|
const toast = yield* Toast;
|
|
82
|
-
return (getRuntime) =>
|
|
83
|
-
/**
|
|
84
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
85
|
-
* you should use the result ref to render errors!
|
|
86
|
-
*/
|
|
87
|
-
const _useSafeMutation = (self, options) => {
|
|
88
|
-
const unsafe = _useMutation(self, options);
|
|
89
|
-
const mh = options?.mapHandler ?? identity;
|
|
90
|
-
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
91
|
-
return [
|
|
92
|
-
a,
|
|
93
|
-
mapHandler(b, Effect.withSpan(`mutation ${self.id}`, { captureStackTrace: false }))
|
|
94
|
-
];
|
|
95
|
-
};
|
|
96
|
-
/** handles errors as toasts and reports defects */
|
|
97
|
-
const _useHandleRequestWithToast = () => {
|
|
98
|
-
return handleRequestWithToast;
|
|
99
|
-
/**
|
|
100
|
-
* Pass a function that returns a Promise.
|
|
101
|
-
* Returns an execution function which reports errors as Toast.
|
|
102
|
-
*/
|
|
103
|
-
function handleRequestWithToast(f, id, action, options = {}) {
|
|
104
|
-
const actionMessage = intl.formatMessage({ id: `action.${action}`, defaultMessage: action });
|
|
105
|
-
const defaultWarnMessage = intl.formatMessage({ id: "handle.with_warnings" }, { action: actionMessage });
|
|
106
|
-
const defaultSuccessMessage = intl.formatMessage({ id: "handle.success" }, { action: actionMessage });
|
|
107
|
-
const defaultErrorMessage = intl.formatMessage({ id: "handle.with_errors" }, { action: actionMessage });
|
|
108
|
-
return handleRequest(f, id, action, {
|
|
109
|
-
onSuccess: Effect.fnUntraced(function* (a, i) {
|
|
110
|
-
const message = options.successMessage ? yield* options.successMessage(a, i) : defaultSuccessMessage
|
|
111
|
-
+ (S.is(OperationSuccess)(a) && a.message
|
|
112
|
-
? "\n" + a.message
|
|
113
|
-
: "");
|
|
114
|
-
if (message) {
|
|
115
|
-
yield* toast.success(message);
|
|
116
|
-
}
|
|
117
|
-
}),
|
|
118
|
-
onFail: Effect.fnUntraced(function* (e, i) {
|
|
119
|
-
if (!options.failMessage && e._tag === "OperationFailure") {
|
|
120
|
-
yield* toast.warning(defaultWarnMessage + e.message
|
|
121
|
-
? "\n" + e.message
|
|
122
|
-
: "");
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
const message = options.failMessage
|
|
126
|
-
? yield* options.failMessage(e, i)
|
|
127
|
-
: `${defaultErrorMessage}:\n` + renderError(e);
|
|
128
|
-
if (message) {
|
|
129
|
-
yield* toast.error(message);
|
|
130
|
-
}
|
|
131
|
-
}),
|
|
132
|
-
onDefect: Effect.fnUntraced(function* (cause, i) {
|
|
133
|
-
const message = options.defectMessage
|
|
134
|
-
? yield* options.defectMessage(cause, i)
|
|
135
|
-
: intl.formatMessage({ id: "handle.unexpected_error" }, {
|
|
136
|
-
action: actionMessage,
|
|
137
|
-
error: Cause.pretty(cause)
|
|
138
|
-
});
|
|
139
|
-
if (message) {
|
|
140
|
-
yield* toast.error(message);
|
|
141
|
-
}
|
|
142
|
-
})
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
function renderError(e) {
|
|
146
|
-
return Match.value(e).pipe(Match.tags({
|
|
147
|
-
// HttpErrorRequest: e =>
|
|
148
|
-
// intl.value.formatMessage(
|
|
149
|
-
// { id: "handle.request_error" },
|
|
150
|
-
// { error: `${e.error}` },
|
|
151
|
-
// ),
|
|
152
|
-
// HttpErrorResponse: e =>
|
|
153
|
-
// e.response.status >= 500 ||
|
|
154
|
-
// e.response.body._tag !== "Some" ||
|
|
155
|
-
// !e.response.body.value
|
|
156
|
-
// ? intl.value.formatMessage(
|
|
157
|
-
// { id: "handle.error_response" },
|
|
158
|
-
// {
|
|
159
|
-
// error: `${
|
|
160
|
-
// e.response.body._tag === "Some" && e.response.body.value
|
|
161
|
-
// ? parseError(e.response.body.value)
|
|
162
|
-
// : "Unknown"
|
|
163
|
-
// } (${e.response.status})`,
|
|
164
|
-
// },
|
|
165
|
-
// )
|
|
166
|
-
// : intl.value.formatMessage(
|
|
167
|
-
// { id: "handle.unexpected_error" },
|
|
168
|
-
// {
|
|
169
|
-
// error:
|
|
170
|
-
// JSON.stringify(e.response.body, undefined, 2) +
|
|
171
|
-
// "( " +
|
|
172
|
-
// e.response.status +
|
|
173
|
-
// ")",
|
|
174
|
-
// },
|
|
175
|
-
// ),
|
|
176
|
-
// ResponseError: e =>
|
|
177
|
-
// intl.value.formatMessage(
|
|
178
|
-
// { id: "handle.response_error" },
|
|
179
|
-
// { error: `${e.error}` },
|
|
180
|
-
// ),
|
|
181
|
-
ParseError: (e) => {
|
|
182
|
-
console.warn(e.toString());
|
|
183
|
-
return intl.formatMessage({ id: "validation.failed" });
|
|
184
|
-
}
|
|
185
|
-
}), Match.orElse((e) => `${e.message ?? e._tag ?? e}`));
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
/**
|
|
189
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
190
|
-
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
191
|
-
*/
|
|
192
|
-
const _useAndHandleMutationResult = (self, action, options) => {
|
|
193
|
-
const handleRequestWithToast = _useHandleRequestWithToast();
|
|
194
|
-
const handler = self.handler;
|
|
195
|
-
const unsafe = _useMutation({
|
|
196
|
-
...self,
|
|
197
|
-
handler: Effect.isEffect(handler)
|
|
198
|
-
? pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler))
|
|
199
|
-
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler(...args)))
|
|
200
|
-
}, options ? dropUndefinedT(options) : undefined);
|
|
201
|
-
const mh = options?.mapHandler ?? identity;
|
|
202
|
-
// Effect.tapDefect(reportRuntimeError) handled in toast handler,
|
|
203
|
-
const [a, b] = asResult(mapHandler(unsafe, mh));
|
|
204
|
-
return tuple(a, handleRequestWithToast(b, self.id, action, options));
|
|
205
|
-
};
|
|
206
|
-
//
|
|
207
|
-
/**
|
|
208
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
209
|
-
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
210
|
-
*/
|
|
211
|
-
const _useAndHandleMutation = (self, action, options) => {
|
|
212
|
-
const [a, b] = _useAndHandleMutationResult(self, action, options);
|
|
213
|
-
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
214
|
-
};
|
|
215
|
-
function _makeUseAndHandleMutation(defaultOptions) {
|
|
216
|
-
return ((self, action, options) => {
|
|
217
|
-
return _useAndHandleMutation(self, action, { ...defaultOptions, ...options });
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
222
|
-
* Messages for success, error and defect toasts can be provided in the Options.
|
|
223
|
-
*/
|
|
224
|
-
const _useAndHandleMutationSilently = _makeUseAndHandleMutation({
|
|
225
|
-
successMessage: suppressToast,
|
|
226
|
-
failMessage: suppressToast,
|
|
227
|
-
defectMessage: suppressToast
|
|
228
|
-
});
|
|
229
|
-
/**
|
|
230
|
-
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
231
|
-
* Actions for success, error and defect can be provided in the Options.
|
|
232
|
-
*/
|
|
233
|
-
const _useAndHandleMutationCustom = (self, action, options) => {
|
|
234
|
-
const unsafe = _useMutation({
|
|
235
|
-
...self,
|
|
236
|
-
handler: Effect.isEffect(self.handler)
|
|
237
|
-
? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
|
|
238
|
-
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args)))
|
|
239
|
-
}, options ? dropUndefinedT(options) : undefined);
|
|
240
|
-
const mh = options?.mapHandler ?? identity;
|
|
241
|
-
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
242
|
-
return tuple(computed(() => mutationResultToVue(a.value)), handleRequest(b, self.id, action, {
|
|
243
|
-
onSuccess: suppressToast,
|
|
244
|
-
onDefect: suppressToast,
|
|
245
|
-
onFail: suppressToast,
|
|
246
|
-
...options
|
|
247
|
-
}));
|
|
248
|
-
};
|
|
249
|
-
/**
|
|
250
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
251
|
-
* you should use the result ref to render errors!
|
|
252
|
-
*/
|
|
253
|
-
const _useSafeMutationWithState = (self, options) => {
|
|
254
|
-
const [a, b] = _useSafeMutation(self, options);
|
|
255
|
-
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
256
|
-
};
|
|
257
|
-
/** @deprecated use OmegaForm */
|
|
258
|
-
const _buildFormFromSchema = (s, state, onSubmit) => {
|
|
259
|
-
const fields = buildFieldInfoFromFieldsRoot(s).fields;
|
|
260
|
-
const schema = S.Struct(Struct.omit(s.fields, "_tag"));
|
|
261
|
-
const parse = S.decodeUnknown(schema);
|
|
262
|
-
const isDirty = ref(false);
|
|
263
|
-
const isValid = ref(true);
|
|
264
|
-
const isLoading = ref(false);
|
|
265
|
-
const runPromise = Runtime.runPromise(getRuntime());
|
|
266
|
-
const submit1 = (onSubmit) => async (e) => {
|
|
267
|
-
isLoading.value = true;
|
|
268
|
-
try {
|
|
269
|
-
const r = await e;
|
|
270
|
-
if (!r.valid)
|
|
271
|
-
return;
|
|
272
|
-
return await runPromise(onSubmit(new s(await runPromise(parse(state.value)))));
|
|
273
|
-
}
|
|
274
|
-
finally {
|
|
275
|
-
isLoading.value = false;
|
|
276
|
-
}
|
|
277
|
-
};
|
|
278
|
-
const submit = submit1(onSubmit);
|
|
279
|
-
watch(state, (v) => {
|
|
280
|
-
// TODO: do better
|
|
281
|
-
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
282
|
-
}, { deep: true });
|
|
283
|
-
const submitFromState = Effect.gen(function* () {
|
|
284
|
-
return yield* onSubmit(yield* parse(state.value));
|
|
285
|
-
});
|
|
286
|
-
const submitFromStatePromise = () => runPromise(submitFromState);
|
|
287
|
-
return {
|
|
288
|
-
fields,
|
|
289
|
-
/** optimized for Vuetify v-form submit callback */
|
|
290
|
-
submit,
|
|
291
|
-
/** optimized for Native form submit callback or general use */
|
|
292
|
-
submitFromState,
|
|
293
|
-
submitFromStatePromise,
|
|
294
|
-
isDirty,
|
|
295
|
-
isValid,
|
|
296
|
-
isLoading
|
|
297
|
-
};
|
|
298
|
-
};
|
|
299
|
-
return {
|
|
300
|
-
/** @deprecated use Command.fn */
|
|
301
|
-
useSafeMutationWithState: _useSafeMutationWithState,
|
|
302
|
-
/** @deprecated use Command.fn */
|
|
303
|
-
useAndHandleMutation: _useAndHandleMutation,
|
|
304
|
-
/** @deprecated use Command.fn */
|
|
305
|
-
useAndHandleMutationResult: _useAndHandleMutationResult,
|
|
306
|
-
/** @deprecated use Command.fn */
|
|
307
|
-
useAndHandleMutationSilently: _useAndHandleMutationSilently,
|
|
308
|
-
/** @deprecated use Command.fn */
|
|
309
|
-
useAndHandleMutationCustom: _useAndHandleMutationCustom,
|
|
310
|
-
/** @deprecated use Command.fn */
|
|
311
|
-
makeUseAndHandleMutation: _makeUseAndHandleMutation,
|
|
312
|
-
/**
|
|
313
|
-
* handles errors as toasts and reports defects
|
|
314
|
-
* @deprecated use Command.fn
|
|
315
|
-
*/
|
|
316
|
-
useHandleRequestWithToast: _useHandleRequestWithToast,
|
|
317
|
-
/** @deprecated use OmegaForm */
|
|
318
|
-
buildFormFromSchema: _buildFormFromSchema,
|
|
319
|
-
/** @deprecated use Command.fn */
|
|
320
|
-
useSafeMutation: _useSafeMutation
|
|
321
|
-
};
|
|
322
|
-
};
|
|
318
|
+
return (getRuntime) => new LegacyMutationImpl(getRuntime, toast, intl);
|
|
323
319
|
})
|
|
324
320
|
}) {
|
|
325
321
|
}
|
|
326
|
-
|
|
327
|
-
|
|
322
|
+
export class QueryImpl {
|
|
323
|
+
getRuntime;
|
|
324
|
+
constructor(getRuntime) {
|
|
325
|
+
this.getRuntime = getRuntime;
|
|
326
|
+
this.useQuery = makeQuery(this.getRuntime);
|
|
327
|
+
}
|
|
328
328
|
/**
|
|
329
329
|
* Effect results are passed to the caller, including errors.
|
|
330
|
+
* @deprecated use client helpers instead (.query())
|
|
330
331
|
*/
|
|
331
332
|
// TODO
|
|
332
|
-
|
|
333
|
+
useQuery;
|
|
333
334
|
/**
|
|
334
335
|
* The difference with useQuery is that this function will return a Promise you can await in the Setup,
|
|
335
336
|
* which ensures that either there always is a latest value, or an error occurs on load.
|
|
336
337
|
* So that Suspense and error boundaries can be used.
|
|
338
|
+
* @deprecated use client helpers instead (.suspense())
|
|
337
339
|
*/
|
|
338
|
-
|
|
339
|
-
const runPromise = Runtime.runPromise(getRuntime());
|
|
340
|
-
const q =
|
|
340
|
+
useSuspenseQuery = (self) => {
|
|
341
|
+
const runPromise = Runtime.runPromise(this.getRuntime());
|
|
342
|
+
const q = this.useQuery(self);
|
|
341
343
|
return (argOrOptions, options) => {
|
|
342
344
|
const [resultRef, latestRef, fetch, uqrt] = q(argOrOptions, { ...options, suspense: true } // experimental_prefetchInRender: true }
|
|
343
345
|
);
|
|
@@ -377,8 +379,7 @@ const mkQuery = (getRuntime) => {
|
|
|
377
379
|
return runPromise(eff);
|
|
378
380
|
};
|
|
379
381
|
};
|
|
380
|
-
|
|
381
|
-
};
|
|
382
|
+
}
|
|
382
383
|
// somehow mrt.runtimeEffect doesnt work sync, but this workaround works fine? not sure why though as the layers are generally only sync
|
|
383
384
|
const managedRuntimeRt = (mrt) => mrt.runSync(Effect.runtime());
|
|
384
385
|
export const makeClient = (
|
|
@@ -409,12 +410,13 @@ getBaseMrt, clientFor_) => {
|
|
|
409
410
|
"useSafeMutation"
|
|
410
411
|
];
|
|
411
412
|
const mutations = keys.reduce((prev, cur) => {
|
|
413
|
+
;
|
|
412
414
|
prev[cur] = ((...args) => {
|
|
413
415
|
return getMutation()[cur](...args);
|
|
414
416
|
});
|
|
415
417
|
return prev;
|
|
416
418
|
}, {});
|
|
417
|
-
const query =
|
|
419
|
+
const query = new QueryImpl(getBaseRt);
|
|
418
420
|
const useQuery = query.useQuery;
|
|
419
421
|
const useSuspenseQuery = query.useSuspenseQuery;
|
|
420
422
|
const mapQuery = (client) => {
|
|
@@ -492,10 +494,7 @@ getBaseMrt, clientFor_) => {
|
|
|
492
494
|
};
|
|
493
495
|
const legacy = {
|
|
494
496
|
...mutations,
|
|
495
|
-
|
|
496
|
-
useQuery,
|
|
497
|
-
/** @deprecated use .suspense on the clientFor(x).Action */
|
|
498
|
-
useSuspenseQuery
|
|
497
|
+
...query
|
|
499
498
|
};
|
|
500
499
|
const Command = {
|
|
501
500
|
...{
|
|
@@ -514,4 +513,4 @@ getBaseMrt, clientFor_) => {
|
|
|
514
513
|
legacy
|
|
515
514
|
};
|
|
516
515
|
};
|
|
517
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQ2xELE9BQU8sRUFBaUYsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDN00sT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQXVCLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEcsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckUsT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFvQixlQUFlLEVBQVksR0FBRyxFQUFFLEtBQUssRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtB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
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQ2xELE9BQU8sRUFBaUYsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDN00sT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQXVCLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEcsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckUsT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFvQixlQUFlLEVBQVksR0FBRyxFQUFFLEtBQUssRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtB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
|