@effect-app/vue 2.77.2 → 2.77.4
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 +92 -28
- package/dist/experimental/commander.d.ts.map +1 -1
- package/dist/experimental/commander.js +373 -380
- package/dist/experimental/makeUseCommand.d.ts +3 -8
- package/dist/experimental/makeUseCommand.d.ts.map +1 -1
- package/dist/experimental/makeUseCommand.js +3 -6
- package/dist/makeClient.d.ts +86 -184
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +6 -13
- package/package.json +1 -1
- package/src/experimental/commander.ts +541 -546
- package/src/experimental/makeUseCommand.ts +9 -14
- package/src/makeClient.ts +9 -16
- package/test/dist/stubs.d.ts +3 -1
- package/test/dist/stubs.d.ts.map +1 -1
|
@@ -148,390 +148,383 @@ export const CommanderStatic = {
|
|
|
148
148
|
})(_, ...args));
|
|
149
149
|
})
|
|
150
150
|
};
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
151
|
+
const makeBaseInfo = (id, options) => {
|
|
152
|
+
if (!id)
|
|
153
|
+
throw new Error("must specify an id");
|
|
154
|
+
const i18nKey = options?.i18nCustomKey ?? id;
|
|
155
|
+
const namespace = `action.${i18nKey}`;
|
|
156
|
+
const context = {
|
|
157
|
+
id,
|
|
158
|
+
i18nKey,
|
|
159
|
+
namespace,
|
|
160
|
+
namespaced: (k) => `${namespace}.${k}`
|
|
161
|
+
};
|
|
162
|
+
return context;
|
|
163
|
+
};
|
|
164
|
+
const getStateValues = (options) => {
|
|
165
|
+
const state_ = options?.state;
|
|
166
|
+
const state = !state_ ? computed(() => undefined) : typeof state_ === "function"
|
|
167
|
+
? computed(state_)
|
|
168
|
+
: state_;
|
|
169
|
+
return state;
|
|
170
|
+
};
|
|
171
|
+
// class preserves JSDoc throughout..
|
|
172
|
+
export class CommanderImpl {
|
|
173
|
+
rt;
|
|
174
|
+
intl;
|
|
175
|
+
runFork;
|
|
176
|
+
constructor(rt, intl) {
|
|
177
|
+
this.rt = rt;
|
|
178
|
+
this.intl = intl;
|
|
179
|
+
this.runFork = Runtime.runFork(this.rt);
|
|
180
|
+
}
|
|
181
|
+
makeContext = (id, options) => {
|
|
182
|
+
if (!id)
|
|
183
|
+
throw new Error("must specify an id");
|
|
184
|
+
const i18nKey = options?.i18nCustomKey ?? id;
|
|
185
|
+
const namespace = `action.${i18nKey}`;
|
|
186
|
+
// must remain stable through out single call
|
|
187
|
+
const action = this.intl.formatMessage({
|
|
188
|
+
id: namespace,
|
|
189
|
+
defaultMessage: id
|
|
190
|
+
}, options?.state);
|
|
191
|
+
const context = CommandContext.of({
|
|
192
|
+
...makeBaseInfo(id, options),
|
|
193
|
+
action,
|
|
194
|
+
state: options?.state
|
|
195
|
+
});
|
|
196
|
+
return context;
|
|
197
|
+
};
|
|
198
|
+
makeCommand = (id_, options, errorDef) => {
|
|
199
|
+
const id = typeof id_ === "string" ? id_ : id_.id;
|
|
200
|
+
const state = getStateValues(options);
|
|
201
|
+
return Object.assign((handler) => {
|
|
202
|
+
// we capture the definition stack here, so we can append it to later stack traces
|
|
203
|
+
const limit = Error.stackTraceLimit;
|
|
204
|
+
Error.stackTraceLimit = 2;
|
|
205
|
+
const localErrorDef = new Error();
|
|
206
|
+
Error.stackTraceLimit = limit;
|
|
207
|
+
if (!errorDef) {
|
|
208
|
+
errorDef = localErrorDef;
|
|
209
|
+
}
|
|
210
|
+
const key = `Commander.Command.${id}.state`;
|
|
211
|
+
const stateTag = Context.GenericTag(key);
|
|
212
|
+
const makeContext_ = () => this.makeContext(id, { ...options, state: state?.value });
|
|
213
|
+
const initialContext = makeContext_();
|
|
214
|
+
const action = computed(() => makeContext_().action);
|
|
215
|
+
const errorReporter = (self) => self.pipe(Effect.tapErrorCause(Effect.fnUntraced(function* (cause) {
|
|
216
|
+
if (Cause.isInterruptedOnly(cause)) {
|
|
217
|
+
console.info(`Interrupted while trying to ${id}`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const fail = Cause.failureOption(cause);
|
|
221
|
+
if (Option.isSome(fail)) {
|
|
222
|
+
// if (fail.value._tag === "SuppressErrors") {
|
|
223
|
+
// console.info(
|
|
224
|
+
// `Suppressed error trying to ${action}`,
|
|
225
|
+
// fail.value,
|
|
226
|
+
// )
|
|
227
|
+
// return
|
|
228
|
+
// }
|
|
229
|
+
const message = `Failure trying to ${id}`;
|
|
230
|
+
yield* reportMessage(message, {
|
|
231
|
+
action: id,
|
|
232
|
+
error: fail.value
|
|
233
|
+
});
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const context = yield* CommandContext;
|
|
237
|
+
const extra = {
|
|
238
|
+
action: context.action,
|
|
239
|
+
message: `Unexpected Error trying to ${id}`
|
|
240
|
+
};
|
|
241
|
+
yield* reportRuntimeError(cause, extra);
|
|
242
|
+
}, Effect.uninterruptible)));
|
|
243
|
+
const currentState = Effect.sync(() => state.value);
|
|
244
|
+
const theHandler = flow(handler, errorReporter,
|
|
245
|
+
// all must be within the Effect.fn to fit within the Span
|
|
246
|
+
Effect.provideServiceEffect(stateTag, currentState), Effect.provideServiceEffect(CommandContext, Effect.sync(() => makeContext_())));
|
|
247
|
+
const [result, exec] = asResult(theHandler);
|
|
248
|
+
const waiting = computed(() => result.value.waiting);
|
|
249
|
+
const handle = Object.assign((...args) => {
|
|
250
|
+
// we capture the call site stack here
|
|
251
|
+
const limit = Error.stackTraceLimit;
|
|
252
|
+
Error.stackTraceLimit = 2;
|
|
253
|
+
const errorCall = new Error();
|
|
254
|
+
Error.stackTraceLimit = limit;
|
|
255
|
+
let cache = false;
|
|
256
|
+
const captureStackTrace = () => {
|
|
257
|
+
// in case of an error, we want to append the definition stack to the call site stack,
|
|
258
|
+
// so we can see where the handler was defined too
|
|
259
|
+
if (cache !== false) {
|
|
260
|
+
return cache;
|
|
206
261
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
if (Cause.isInterruptedOnly(cause)) {
|
|
214
|
-
console.info(`Interrupted while trying to ${id}`);
|
|
215
|
-
return;
|
|
262
|
+
if (errorCall.stack) {
|
|
263
|
+
const stackDef = errorDef.stack.trim().split("\n");
|
|
264
|
+
const stackCall = errorCall.stack.trim().split("\n");
|
|
265
|
+
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
266
|
+
if (!endStackDef.includes(`(`)) {
|
|
267
|
+
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
216
268
|
}
|
|
217
|
-
|
|
218
|
-
if (
|
|
219
|
-
|
|
220
|
-
// console.info(
|
|
221
|
-
// `Suppressed error trying to ${action}`,
|
|
222
|
-
// fail.value,
|
|
223
|
-
// )
|
|
224
|
-
// return
|
|
225
|
-
// }
|
|
226
|
-
const message = `Failure trying to ${id}`;
|
|
227
|
-
yield* reportMessage(message, {
|
|
228
|
-
action: id,
|
|
229
|
-
error: fail.value
|
|
230
|
-
});
|
|
231
|
-
return;
|
|
269
|
+
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
270
|
+
if (!endStackCall.includes(`(`)) {
|
|
271
|
+
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
232
272
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
message: `Unexpected Error trying to ${id}`
|
|
237
|
-
};
|
|
238
|
-
yield* reportRuntimeError(cause, extra);
|
|
239
|
-
}, Effect.uninterruptible)));
|
|
240
|
-
const currentState = Effect.sync(() => state.value);
|
|
241
|
-
const theHandler = flow(handler, errorReporter,
|
|
242
|
-
// all must be within the Effect.fn to fit within the Span
|
|
243
|
-
Effect.provideServiceEffect(stateTag, currentState), Effect.provideServiceEffect(CommandContext, Effect.sync(() => makeContext_())));
|
|
244
|
-
const [result, exec] = asResult(theHandler);
|
|
245
|
-
const waiting = computed(() => result.value.waiting);
|
|
246
|
-
const handle = Object.assign((...args) => {
|
|
247
|
-
// we capture the call site stack here
|
|
248
|
-
const limit = Error.stackTraceLimit;
|
|
249
|
-
Error.stackTraceLimit = 2;
|
|
250
|
-
const errorCall = new Error();
|
|
251
|
-
Error.stackTraceLimit = limit;
|
|
252
|
-
let cache = false;
|
|
253
|
-
const captureStackTrace = () => {
|
|
254
|
-
// in case of an error, we want to append the definition stack to the call site stack,
|
|
255
|
-
// so we can see where the handler was defined too
|
|
256
|
-
if (cache !== false) {
|
|
257
|
-
return cache;
|
|
258
|
-
}
|
|
259
|
-
if (errorCall.stack) {
|
|
260
|
-
const stackDef = errorDef.stack.trim().split("\n");
|
|
261
|
-
const stackCall = errorCall.stack.trim().split("\n");
|
|
262
|
-
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
263
|
-
if (!endStackDef.includes(`(`)) {
|
|
264
|
-
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
265
|
-
}
|
|
266
|
-
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
267
|
-
if (!endStackCall.includes(`(`)) {
|
|
268
|
-
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
269
|
-
}
|
|
270
|
-
cache = `${endStackDef}\n${endStackCall}`;
|
|
271
|
-
return cache;
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
const command = currentState.pipe(Effect.flatMap((state) => Effect.withSpan(exec(...args), id, {
|
|
275
|
-
captureStackTrace,
|
|
276
|
-
attributes: {
|
|
277
|
-
input: args,
|
|
278
|
-
state,
|
|
279
|
-
action: initialContext.action,
|
|
280
|
-
id: initialContext.id,
|
|
281
|
-
i18nKey: initialContext.i18nKey
|
|
282
|
-
}
|
|
283
|
-
})));
|
|
284
|
-
return runFork(command);
|
|
285
|
-
}, { action });
|
|
286
|
-
const handleEffect = Object.assign((...args) => {
|
|
287
|
-
// we capture the call site stack here
|
|
288
|
-
const limit = Error.stackTraceLimit;
|
|
289
|
-
Error.stackTraceLimit = 2;
|
|
290
|
-
const errorCall = new Error();
|
|
291
|
-
Error.stackTraceLimit = limit;
|
|
292
|
-
let cache = false;
|
|
293
|
-
const captureStackTrace = () => {
|
|
294
|
-
// in case of an error, we want to append the definition stack to the call site stack,
|
|
295
|
-
// so we can see where the handler was defined too
|
|
296
|
-
if (cache !== false) {
|
|
297
|
-
return cache;
|
|
298
|
-
}
|
|
299
|
-
if (errorCall.stack) {
|
|
300
|
-
const stackDef = errorDef.stack.trim().split("\n");
|
|
301
|
-
const stackCall = errorCall.stack.trim().split("\n");
|
|
302
|
-
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
303
|
-
if (!endStackDef.includes(`(`)) {
|
|
304
|
-
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
305
|
-
}
|
|
306
|
-
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
307
|
-
if (!endStackCall.includes(`(`)) {
|
|
308
|
-
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
309
|
-
}
|
|
310
|
-
cache = `${endStackDef}\n${endStackCall}`;
|
|
311
|
-
return cache;
|
|
312
|
-
}
|
|
313
|
-
};
|
|
314
|
-
const command = Effect.withSpan(exec(...args), id, { captureStackTrace });
|
|
315
|
-
return Effect.currentSpan.pipe(Effect.option, Effect.map((span) => runFork(Option.isSome(span) ? command.pipe(Effect.withParentSpan(span.value)) : command)));
|
|
316
|
-
}, { action, state });
|
|
317
|
-
const compose = Object.assign((...args) => {
|
|
318
|
-
// we capture the call site stack here
|
|
319
|
-
const limit = Error.stackTraceLimit;
|
|
320
|
-
Error.stackTraceLimit = 2;
|
|
321
|
-
const errorCall = new Error();
|
|
322
|
-
Error.stackTraceLimit = limit;
|
|
323
|
-
let cache = false;
|
|
324
|
-
const captureStackTrace = () => {
|
|
325
|
-
// in case of an error, we want to append the definition stack to the call site stack,
|
|
326
|
-
// so we can see where the handler was defined too
|
|
327
|
-
if (cache !== false) {
|
|
328
|
-
return cache;
|
|
329
|
-
}
|
|
330
|
-
if (errorCall.stack) {
|
|
331
|
-
const stackDef = errorDef.stack.trim().split("\n");
|
|
332
|
-
const stackCall = errorCall.stack.trim().split("\n");
|
|
333
|
-
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
334
|
-
if (!endStackDef.includes(`(`)) {
|
|
335
|
-
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
336
|
-
}
|
|
337
|
-
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
338
|
-
if (!endStackCall.includes(`(`)) {
|
|
339
|
-
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
340
|
-
}
|
|
341
|
-
cache = `${endStackDef}\n${endStackCall}`;
|
|
342
|
-
return cache;
|
|
343
|
-
}
|
|
344
|
-
};
|
|
345
|
-
const command = Effect.withSpan(exec(...args), id, { captureStackTrace });
|
|
346
|
-
return command;
|
|
347
|
-
}, { action });
|
|
348
|
-
const compose2 = Object.assign((...args) => {
|
|
349
|
-
// we capture the call site stack here
|
|
350
|
-
const limit = Error.stackTraceLimit;
|
|
351
|
-
Error.stackTraceLimit = 2;
|
|
352
|
-
const errorCall = new Error();
|
|
353
|
-
Error.stackTraceLimit = limit;
|
|
354
|
-
let cache = false;
|
|
355
|
-
const captureStackTrace = () => {
|
|
356
|
-
// in case of an error, we want to append the definition stack to the call site stack,
|
|
357
|
-
// so we can see where the handler was defined too
|
|
358
|
-
if (cache !== false) {
|
|
359
|
-
return cache;
|
|
360
|
-
}
|
|
361
|
-
if (errorCall.stack) {
|
|
362
|
-
const stackDef = errorDef.stack.trim().split("\n");
|
|
363
|
-
const stackCall = errorCall.stack.trim().split("\n");
|
|
364
|
-
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
365
|
-
if (!endStackDef.includes(`(`)) {
|
|
366
|
-
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
367
|
-
}
|
|
368
|
-
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
369
|
-
if (!endStackCall.includes(`(`)) {
|
|
370
|
-
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
371
|
-
}
|
|
372
|
-
cache = `${endStackDef}\n${endStackCall}`;
|
|
373
|
-
return cache;
|
|
374
|
-
}
|
|
375
|
-
};
|
|
376
|
-
const command = Effect.withSpan(exec(...args).pipe(Effect.flatten), id, { captureStackTrace });
|
|
377
|
-
return command;
|
|
378
|
-
}, { action });
|
|
379
|
-
return reactive({
|
|
380
|
-
/** static */
|
|
381
|
-
id,
|
|
382
|
-
/** the base i18n key, based on id by default. static */
|
|
383
|
-
i18nKey: initialContext.i18nKey,
|
|
384
|
-
/** the `action.` namespace based on i18nKey.. static */
|
|
385
|
-
namespace: initialContext.namespace,
|
|
386
|
-
/** easy generate namespaced 18n keys, based on namespace. static */
|
|
387
|
-
namespaced: initialContext.namespaced,
|
|
388
|
-
/** reactive */
|
|
389
|
-
result,
|
|
390
|
-
/** reactive */
|
|
391
|
-
waiting,
|
|
392
|
-
/** reactive */
|
|
393
|
-
action,
|
|
394
|
-
handle,
|
|
395
|
-
/** experimental */
|
|
396
|
-
handleEffect,
|
|
397
|
-
/** experimental */
|
|
398
|
-
compose,
|
|
399
|
-
/** experimental */
|
|
400
|
-
compose2,
|
|
401
|
-
/** experimental */
|
|
402
|
-
exec
|
|
403
|
-
});
|
|
404
|
-
}, { id });
|
|
405
|
-
};
|
|
406
|
-
};
|
|
407
|
-
return {
|
|
408
|
-
// /** @experimental */
|
|
409
|
-
// takeOver:
|
|
410
|
-
// <Args extends any[], A, E, R, const Id extends string>(command: Commander.CommandOut<Args, A, E, R, Id,I18nKey>) =>
|
|
411
|
-
// (...args: Args) => {
|
|
412
|
-
// // we capture the call site stack here
|
|
413
|
-
// const limit = Error.stackTraceLimit
|
|
414
|
-
// Error.stackTraceLimit = 2
|
|
415
|
-
// const errorCall = new Error()
|
|
416
|
-
// const localErrorDef = new Error()
|
|
417
|
-
// Error.stackTraceLimit = limit
|
|
418
|
-
// // TODO
|
|
419
|
-
// const errorDef = localErrorDef
|
|
420
|
-
// let cache: false | string = false
|
|
421
|
-
// const captureStackTrace = () => {
|
|
422
|
-
// // in case of an error, we want to append the definition stack to the call site stack,
|
|
423
|
-
// // so we can see where the handler was defined too
|
|
424
|
-
// if (cache !== false) {
|
|
425
|
-
// return cache
|
|
426
|
-
// }
|
|
427
|
-
// if (errorCall.stack) {
|
|
428
|
-
// const stackDef = errorDef.stack!.trim().split("\n")
|
|
429
|
-
// const stackCall = errorCall.stack.trim().split("\n")
|
|
430
|
-
// let endStackDef = stackDef.slice(2).join("\n").trim()
|
|
431
|
-
// if (!endStackDef.includes(`(`)) {
|
|
432
|
-
// endStackDef = endStackDef.replace(/at (.*)/, "at ($1)")
|
|
433
|
-
// }
|
|
434
|
-
// let endStackCall = stackCall.slice(2).join("\n").trim()
|
|
435
|
-
// if (!endStackCall.includes(`(`)) {
|
|
436
|
-
// endStackCall = endStackCall.replace(/at (.*)/, "at ($1)")
|
|
437
|
-
// }
|
|
438
|
-
// cache = `${endStackDef}\n${endStackCall}`
|
|
439
|
-
// return cache
|
|
440
|
-
// }
|
|
441
|
-
// }
|
|
442
|
-
// return Effect.gen(function*() {
|
|
443
|
-
// const ctx = yield* CommandContext
|
|
444
|
-
// ctx.action = command.action
|
|
445
|
-
// return yield* command.exec(...args).pipe(
|
|
446
|
-
// Effect.flatten,
|
|
447
|
-
// Effect.withSpan(
|
|
448
|
-
// command.action,
|
|
449
|
-
// { captureStackTrace }
|
|
450
|
-
// )
|
|
451
|
-
// )
|
|
452
|
-
// })
|
|
453
|
-
// },
|
|
454
|
-
fn: (runtime) => {
|
|
455
|
-
const make = makeCommand(runtime);
|
|
456
|
-
/**
|
|
457
|
-
* Define a Command for handling user actions with built-in error reporting and state management.
|
|
458
|
-
*
|
|
459
|
-
* @param id The internal identifier for the action. Used as a tracing span and to lookup
|
|
460
|
-
* the user-facing name via internationalization (`action.${id}`).
|
|
461
|
-
* @returns A function that executes the command when called (e.g., directly in `@click` handlers).
|
|
462
|
-
* Built-in error reporting handles failures automatically.
|
|
463
|
-
*
|
|
464
|
-
* **Effect Context**: Effects have access to the `CommandContext` service, which provides
|
|
465
|
-
* the user-facing action name.
|
|
466
|
-
*
|
|
467
|
-
* **Returned Properties**:
|
|
468
|
-
* - `action`: User-facing action name from intl messages (useful for button labels)
|
|
469
|
-
* - `result`: The command result state
|
|
470
|
-
* - `waiting`: Boolean indicating if the command is in progress (shorthand for `result.waiting`)
|
|
471
|
-
* - `handle`: Function to execute the command
|
|
472
|
-
*
|
|
473
|
-
* **User Feedback**: Use the `withDefaultToast` helper for status notifications, or render
|
|
474
|
-
* the `result` inline for custom UI feedback.
|
|
475
|
-
*/
|
|
476
|
-
const f = (id, options) => Object.assign((fn, ...combinators) => {
|
|
477
|
-
// we capture the definition stack here, so we can append it to later stack traces
|
|
478
|
-
const limit = Error.stackTraceLimit;
|
|
479
|
-
Error.stackTraceLimit = 2;
|
|
480
|
-
const errorDef = new Error();
|
|
481
|
-
Error.stackTraceLimit = limit;
|
|
482
|
-
return make(id, options, errorDef)(Effect.fnUntraced(
|
|
483
|
-
// fnUntraced only supports generators as first arg, so we convert to generator if needed
|
|
484
|
-
isGeneratorFunction(fn) ? fn : function* (...args) {
|
|
485
|
-
return yield* fn(...args);
|
|
486
|
-
}, ...combinators));
|
|
487
|
-
}, makeBaseInfo(typeof id === "string" ? id : id.id, options), {
|
|
488
|
-
state: Context.GenericTag(`Commander.Command.${typeof id === "string" ? id : id.id}.state`)
|
|
489
|
-
});
|
|
490
|
-
return f;
|
|
491
|
-
},
|
|
492
|
-
/** @experimental */
|
|
493
|
-
alt2: (rt) => {
|
|
494
|
-
const cmd = makeCommand(rt);
|
|
495
|
-
/** @experimental */
|
|
496
|
-
const f = (_id, options) => {
|
|
497
|
-
const isObject = typeof _id === "object" || typeof _id === "function";
|
|
498
|
-
const id = isObject ? _id.id : _id;
|
|
499
|
-
const baseInfo = makeBaseInfo(id, options);
|
|
500
|
-
const idCmd = cmd(id, options);
|
|
501
|
-
// TODO: implement proper tracing stack
|
|
502
|
-
return Object.assign((cb) => idCmd(cb(Object.assign((fn, ...combinators) => Effect.fnUntraced(
|
|
503
|
-
// fnUntraced only supports generators as first arg, so we convert to generator if needed
|
|
504
|
-
isGeneratorFunction(fn) ? fn : function* (...args) {
|
|
505
|
-
return yield* fn(...args);
|
|
506
|
-
}, ...combinators), baseInfo, isObject
|
|
507
|
-
? { mutate: "mutate" in _id ? _id.mutate : typeof _id === "function" ? _id : undefined }
|
|
508
|
-
: {}))), baseInfo);
|
|
273
|
+
cache = `${endStackDef}\n${endStackCall}`;
|
|
274
|
+
return cache;
|
|
275
|
+
}
|
|
509
276
|
};
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
277
|
+
const command = currentState.pipe(Effect.flatMap((state) => Effect.withSpan(exec(...args), id, {
|
|
278
|
+
captureStackTrace,
|
|
279
|
+
attributes: {
|
|
280
|
+
input: args,
|
|
281
|
+
state,
|
|
282
|
+
action: initialContext.action,
|
|
283
|
+
id: initialContext.id,
|
|
284
|
+
i18nKey: initialContext.i18nKey
|
|
285
|
+
}
|
|
286
|
+
})));
|
|
287
|
+
return this.runFork(command);
|
|
288
|
+
}, { action });
|
|
289
|
+
const handleEffect = Object.assign((...args) => {
|
|
290
|
+
// we capture the call site stack here
|
|
291
|
+
const limit = Error.stackTraceLimit;
|
|
292
|
+
Error.stackTraceLimit = 2;
|
|
293
|
+
const errorCall = new Error();
|
|
294
|
+
Error.stackTraceLimit = limit;
|
|
295
|
+
let cache = false;
|
|
296
|
+
const captureStackTrace = () => {
|
|
297
|
+
// in case of an error, we want to append the definition stack to the call site stack,
|
|
298
|
+
// so we can see where the handler was defined too
|
|
299
|
+
if (cache !== false) {
|
|
300
|
+
return cache;
|
|
301
|
+
}
|
|
302
|
+
if (errorCall.stack) {
|
|
303
|
+
const stackDef = errorDef.stack.trim().split("\n");
|
|
304
|
+
const stackCall = errorCall.stack.trim().split("\n");
|
|
305
|
+
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
306
|
+
if (!endStackDef.includes(`(`)) {
|
|
307
|
+
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
308
|
+
}
|
|
309
|
+
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
310
|
+
if (!endStackCall.includes(`(`)) {
|
|
311
|
+
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
312
|
+
}
|
|
313
|
+
cache = `${endStackDef}\n${endStackCall}`;
|
|
314
|
+
return cache;
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
const command = Effect.withSpan(exec(...args), id, { captureStackTrace });
|
|
318
|
+
return Effect.currentSpan.pipe(Effect.option, Effect.map((span) => this.runFork(Option.isSome(span) ? command.pipe(Effect.withParentSpan(span.value)) : command)));
|
|
319
|
+
}, { action, state });
|
|
320
|
+
const compose = Object.assign((...args) => {
|
|
321
|
+
// we capture the call site stack here
|
|
322
|
+
const limit = Error.stackTraceLimit;
|
|
323
|
+
Error.stackTraceLimit = 2;
|
|
324
|
+
const errorCall = new Error();
|
|
325
|
+
Error.stackTraceLimit = limit;
|
|
326
|
+
let cache = false;
|
|
327
|
+
const captureStackTrace = () => {
|
|
328
|
+
// in case of an error, we want to append the definition stack to the call site stack,
|
|
329
|
+
// so we can see where the handler was defined too
|
|
330
|
+
if (cache !== false) {
|
|
331
|
+
return cache;
|
|
332
|
+
}
|
|
333
|
+
if (errorCall.stack) {
|
|
334
|
+
const stackDef = errorDef.stack.trim().split("\n");
|
|
335
|
+
const stackCall = errorCall.stack.trim().split("\n");
|
|
336
|
+
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
337
|
+
if (!endStackDef.includes(`(`)) {
|
|
338
|
+
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
339
|
+
}
|
|
340
|
+
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
341
|
+
if (!endStackCall.includes(`(`)) {
|
|
342
|
+
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
343
|
+
}
|
|
344
|
+
cache = `${endStackDef}\n${endStackCall}`;
|
|
345
|
+
return cache;
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
const command = Effect.withSpan(exec(...args), id, { captureStackTrace });
|
|
349
|
+
return command;
|
|
350
|
+
}, { action });
|
|
351
|
+
const compose2 = Object.assign((...args) => {
|
|
352
|
+
// we capture the call site stack here
|
|
353
|
+
const limit = Error.stackTraceLimit;
|
|
354
|
+
Error.stackTraceLimit = 2;
|
|
355
|
+
const errorCall = new Error();
|
|
356
|
+
Error.stackTraceLimit = limit;
|
|
357
|
+
let cache = false;
|
|
358
|
+
const captureStackTrace = () => {
|
|
359
|
+
// in case of an error, we want to append the definition stack to the call site stack,
|
|
360
|
+
// so we can see where the handler was defined too
|
|
361
|
+
if (cache !== false) {
|
|
362
|
+
return cache;
|
|
363
|
+
}
|
|
364
|
+
if (errorCall.stack) {
|
|
365
|
+
const stackDef = errorDef.stack.trim().split("\n");
|
|
366
|
+
const stackCall = errorCall.stack.trim().split("\n");
|
|
367
|
+
let endStackDef = stackDef.slice(2).join("\n").trim();
|
|
368
|
+
if (!endStackDef.includes(`(`)) {
|
|
369
|
+
endStackDef = endStackDef.replace(/at (.*)/, "at ($1)");
|
|
370
|
+
}
|
|
371
|
+
let endStackCall = stackCall.slice(2).join("\n").trim();
|
|
372
|
+
if (!endStackCall.includes(`(`)) {
|
|
373
|
+
endStackCall = endStackCall.replace(/at (.*)/, "at ($1)");
|
|
374
|
+
}
|
|
375
|
+
cache = `${endStackDef}\n${endStackCall}`;
|
|
376
|
+
return cache;
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
const command = Effect.withSpan(exec(...args).pipe(Effect.flatten), id, { captureStackTrace });
|
|
380
|
+
return command;
|
|
381
|
+
}, { action });
|
|
382
|
+
return reactive({
|
|
383
|
+
/** static */
|
|
384
|
+
id,
|
|
385
|
+
/** the base i18n key, based on id by default. static */
|
|
386
|
+
i18nKey: initialContext.i18nKey,
|
|
387
|
+
/** the `action.` namespace based on i18nKey.. static */
|
|
388
|
+
namespace: initialContext.namespace,
|
|
389
|
+
/** easy generate namespaced 18n keys, based on namespace. static */
|
|
390
|
+
namespaced: initialContext.namespaced,
|
|
391
|
+
/** reactive */
|
|
392
|
+
result,
|
|
393
|
+
/** reactive */
|
|
394
|
+
waiting,
|
|
395
|
+
/** reactive */
|
|
396
|
+
action,
|
|
397
|
+
handle,
|
|
398
|
+
/** experimental */
|
|
399
|
+
handleEffect,
|
|
400
|
+
/** experimental */
|
|
401
|
+
compose,
|
|
402
|
+
/** experimental */
|
|
403
|
+
compose2,
|
|
404
|
+
/** experimental */
|
|
405
|
+
exec
|
|
406
|
+
});
|
|
407
|
+
}, { id });
|
|
408
|
+
};
|
|
409
|
+
// /** @experimental */
|
|
410
|
+
// takeOver:
|
|
411
|
+
// <Args extends any[], A, E, R, const Id extends string>(command: Commander.CommandOut<Args, A, E, R, Id,I18nKey>) =>
|
|
412
|
+
// (...args: Args) => {
|
|
413
|
+
// // we capture the call site stack here
|
|
414
|
+
// const limit = Error.stackTraceLimit
|
|
415
|
+
// Error.stackTraceLimit = 2
|
|
416
|
+
// const errorCall = new Error()
|
|
417
|
+
// const localErrorDef = new Error()
|
|
418
|
+
// Error.stackTraceLimit = limit
|
|
419
|
+
// // TODO
|
|
420
|
+
// const errorDef = localErrorDef
|
|
421
|
+
// let cache: false | string = false
|
|
422
|
+
// const captureStackTrace = () => {
|
|
423
|
+
// // in case of an error, we want to append the definition stack to the call site stack,
|
|
424
|
+
// // so we can see where the handler was defined too
|
|
425
|
+
// if (cache !== false) {
|
|
426
|
+
// return cache
|
|
427
|
+
// }
|
|
428
|
+
// if (errorCall.stack) {
|
|
429
|
+
// const stackDef = errorDef.stack!.trim().split("\n")
|
|
430
|
+
// const stackCall = errorCall.stack.trim().split("\n")
|
|
431
|
+
// let endStackDef = stackDef.slice(2).join("\n").trim()
|
|
432
|
+
// if (!endStackDef.includes(`(`)) {
|
|
433
|
+
// endStackDef = endStackDef.replace(/at (.*)/, "at ($1)")
|
|
434
|
+
// }
|
|
435
|
+
// let endStackCall = stackCall.slice(2).join("\n").trim()
|
|
436
|
+
// if (!endStackCall.includes(`(`)) {
|
|
437
|
+
// endStackCall = endStackCall.replace(/at (.*)/, "at ($1)")
|
|
438
|
+
// }
|
|
439
|
+
// cache = `${endStackDef}\n${endStackCall}`
|
|
440
|
+
// return cache
|
|
441
|
+
// }
|
|
442
|
+
// }
|
|
443
|
+
// return Effect.gen(function*() {
|
|
444
|
+
// const ctx = yield* CommandContext
|
|
445
|
+
// ctx.action = command.action
|
|
446
|
+
// return yield* command.exec(...args).pipe(
|
|
447
|
+
// Effect.flatten,
|
|
448
|
+
// Effect.withSpan(
|
|
449
|
+
// command.action,
|
|
450
|
+
// { captureStackTrace }
|
|
451
|
+
// )
|
|
452
|
+
// )
|
|
453
|
+
// })
|
|
454
|
+
// },
|
|
455
|
+
/**
|
|
456
|
+
* Define a Command for handling user actions with built-in error reporting and state management.
|
|
457
|
+
*
|
|
458
|
+
* @param id The internal identifier for the action. Used as a tracing span and to lookup
|
|
459
|
+
* the user-facing name via internationalization (`action.${id}`).
|
|
460
|
+
* @returns A function that executes the command when called (e.g., directly in `@click` handlers).
|
|
461
|
+
* Built-in error reporting handles failures automatically.
|
|
462
|
+
*
|
|
463
|
+
* **Effect Context**: Effects have access to the `CommandContext` service, which provides
|
|
464
|
+
* the user-facing action name.
|
|
465
|
+
*
|
|
466
|
+
* **Returned Properties**:
|
|
467
|
+
* - `action`: User-facing action name from intl messages (useful for button labels)
|
|
468
|
+
* - `result`: The command result state
|
|
469
|
+
* - `waiting`: Boolean indicating if the command is in progress (shorthand for `result.waiting`)
|
|
470
|
+
* - `handle`: Function to execute the command
|
|
471
|
+
*
|
|
472
|
+
* **User Feedback**: Use the `withDefaultToast` helper for status notifications, or render
|
|
473
|
+
* the `result` inline for custom UI feedback.
|
|
474
|
+
*/
|
|
475
|
+
fn = (id, options) => Object.assign((fn, ...combinators) => {
|
|
476
|
+
// we capture the definition stack here, so we can append it to later stack traces
|
|
477
|
+
const limit = Error.stackTraceLimit;
|
|
478
|
+
Error.stackTraceLimit = 2;
|
|
479
|
+
const errorDef = new Error();
|
|
480
|
+
Error.stackTraceLimit = limit;
|
|
481
|
+
return this.makeCommand(id, options, errorDef)(Effect.fnUntraced(
|
|
482
|
+
// fnUntraced only supports generators as first arg, so we convert to generator if needed
|
|
483
|
+
isGeneratorFunction(fn) ? fn : function* (...args) {
|
|
484
|
+
return yield* fn(...args);
|
|
485
|
+
}, ...combinators));
|
|
486
|
+
}, makeBaseInfo(typeof id === "string" ? id : id.id, options), {
|
|
487
|
+
state: Context.GenericTag(`Commander.Command.${typeof id === "string" ? id : id.id}.state`)
|
|
488
|
+
});
|
|
489
|
+
/** @experimental */
|
|
490
|
+
alt2 = (_id, options) => {
|
|
491
|
+
const isObject = typeof _id === "object" || typeof _id === "function";
|
|
492
|
+
const id = isObject ? _id.id : _id;
|
|
493
|
+
const baseInfo = makeBaseInfo(id, options);
|
|
494
|
+
const idCmd = this.makeCommand(id, options);
|
|
495
|
+
// TODO: implement proper tracing stack
|
|
496
|
+
return Object.assign((cb) => idCmd(cb(Object.assign((fn, ...combinators) => Effect.fnUntraced(
|
|
497
|
+
// fnUntraced only supports generators as first arg, so we convert to generator if needed
|
|
498
|
+
isGeneratorFunction(fn) ? fn : function* (...args) {
|
|
499
|
+
return yield* fn(...args);
|
|
500
|
+
}, ...combinators), baseInfo, isObject
|
|
501
|
+
? { mutate: "mutate" in _id ? _id.mutate : typeof _id === "function" ? _id : undefined }
|
|
502
|
+
: {}))), baseInfo);
|
|
503
|
+
};
|
|
504
|
+
/** @experimental */
|
|
505
|
+
alt = this.makeCommand;
|
|
506
|
+
/** @experimental */
|
|
507
|
+
wrap = (mutation, options) => Object.assign((...combinators) => {
|
|
508
|
+
// we capture the definition stack here, so we can append it to later stack traces
|
|
509
|
+
const limit = Error.stackTraceLimit;
|
|
510
|
+
Error.stackTraceLimit = 2;
|
|
511
|
+
const errorDef = new Error();
|
|
512
|
+
Error.stackTraceLimit = limit;
|
|
513
|
+
const mutate = "mutate" in mutation ? mutation.mutate : mutation;
|
|
514
|
+
return this.makeCommand(mutation.id, options, errorDef)(Effect.fnUntraced(
|
|
515
|
+
// fnUntraced only supports generators as first arg, so we convert to generator if needed
|
|
516
|
+
isGeneratorFunction(mutate) ? mutate : function* (...args) {
|
|
517
|
+
return yield* mutate(...args);
|
|
518
|
+
}, ...combinators));
|
|
519
|
+
}, makeBaseInfo(mutation.id, options));
|
|
520
|
+
}
|
|
521
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
522
|
+
export class Commander extends Effect.Service()("Commander", {
|
|
523
|
+
dependencies: [WithToast.Default, Confirm.Default],
|
|
524
|
+
effect: Effect.gen(function* () {
|
|
525
|
+
const i18n = yield* I18n;
|
|
526
|
+
return (rt) => new CommanderImpl(rt, i18n);
|
|
534
527
|
})
|
|
535
528
|
}) {
|
|
536
529
|
}
|
|
537
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4cGVyaW1lbnRhbC9jb21tYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFFN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFhLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0sY0FBYyxDQUFBO0FBRWxFLE9BQU8sRUFBRSxRQUFRLEVBQW9CLFFBQVEsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBbUIxQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsRUFBRSxFQUFFO1FBQ0YscUJBQXFCLEVBQUUsc0JBQXNCO1FBQzdDLGdCQUFnQixFQUFFLDZCQUE2QjtRQUMvQyxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsb0JBQW9CLEVBQUUseUJBQXlCO1FBQy9DLHNCQUFzQixFQUFFLHFDQUFxQztRQUM3RCx1QkFBdUIsRUFDckIs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
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4cGVyaW1lbnRhbC9jb21tYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFFN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFhLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0sY0FBYyxDQUFBO0FBRWxFLE9BQU8sRUFBRSxRQUFRLEVBQW9CLFFBQVEsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBbUIxQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsRUFBRSxFQUFFO1FBQ0YscUJBQXFCLEVBQUUsc0JBQXNCO1FBQzdDLGdCQUFnQixFQUFFLDZCQUE2QjtRQUMvQyxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsb0JBQW9CLEVBQUUseUJBQXlCO1FBQy9DLHNCQUFzQixFQUFFLHFDQUFxQztRQUM3RCx1QkFBdUIsRUFDckIs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
|