@effect-app/vue 2.77.2 → 2.77.3

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.
@@ -148,390 +148,383 @@ export const CommanderStatic = {
148
148
  })(_, ...args));
149
149
  })
150
150
  };
151
- // @effect-diagnostics-next-line missingEffectServiceDependency:off
152
- export class Commander extends Effect.Service()("Commander", {
153
- dependencies: [WithToast.Default, Confirm.Default],
154
- effect: Effect.gen(function* () {
155
- const { intl } = yield* I18n;
156
- const makeBaseInfo = (id, options) => {
157
- if (!id)
158
- throw new Error("must specify an id");
159
- const i18nKey = options?.i18nCustomKey ?? id;
160
- const namespace = `action.${i18nKey}`;
161
- const context = {
162
- id,
163
- i18nKey,
164
- namespace,
165
- namespaced: (k) => `${namespace}.${k}`
166
- };
167
- return context;
168
- };
169
- const makeContext = (id, options) => {
170
- if (!id)
171
- throw new Error("must specify an id");
172
- const i18nKey = options?.i18nCustomKey ?? id;
173
- const namespace = `action.${i18nKey}`;
174
- // must remain stable through out single call
175
- const action = intl.formatMessage({
176
- id: namespace,
177
- defaultMessage: id
178
- }, options?.state);
179
- const context = CommandContext.of({
180
- ...makeBaseInfo(id, options),
181
- action,
182
- state: options?.state
183
- });
184
- return context;
185
- };
186
- const getStateValues = (options) => {
187
- const state_ = options?.state;
188
- const state = !state_ ? computed(() => undefined) : typeof state_ === "function"
189
- ? computed(state_)
190
- : state_;
191
- return state;
192
- };
193
- const makeCommand = (runtime) => {
194
- const runFork = Runtime.runFork(runtime);
195
- return (id_, options, errorDef) => {
196
- const id = typeof id_ === "string" ? id_ : id_.id;
197
- const state = getStateValues(options);
198
- return Object.assign((handler) => {
199
- // we capture the definition stack here, so we can append it to later stack traces
200
- const limit = Error.stackTraceLimit;
201
- Error.stackTraceLimit = 2;
202
- const localErrorDef = new Error();
203
- Error.stackTraceLimit = limit;
204
- if (!errorDef) {
205
- errorDef = localErrorDef;
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
- const key = `Commander.Command.${id}.state`;
208
- const stateTag = Context.GenericTag(key);
209
- const makeContext_ = () => makeContext(id, { ...options, state: state?.value });
210
- const initialContext = makeContext_();
211
- const action = computed(() => makeContext_().action);
212
- const errorReporter = (self) => self.pipe(Effect.tapErrorCause(Effect.fnUntraced(function* (cause) {
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
- const fail = Cause.failureOption(cause);
218
- if (Option.isSome(fail)) {
219
- // if (fail.value._tag === "SuppressErrors") {
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
- const context = yield* CommandContext;
234
- const extra = {
235
- action: context.action,
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
- return f;
511
- },
512
- /** @experimental */
513
- alt: makeCommand,
514
- /** @experimental */
515
- wrap: (runtime) => {
516
- const make = makeCommand(runtime);
517
- /** @experimental */
518
- const f = (mutation, options) => Object.assign((...combinators) => {
519
- // we capture the definition stack here, so we can append it to later stack traces
520
- const limit = Error.stackTraceLimit;
521
- Error.stackTraceLimit = 2;
522
- const errorDef = new Error();
523
- Error.stackTraceLimit = limit;
524
- const mutate = "mutate" in mutation ? mutation.mutate : mutation;
525
- return make(mutation.id, options, errorDef)(Effect.fnUntraced(
526
- // fnUntraced only supports generators as first arg, so we convert to generator if needed
527
- isGeneratorFunction(mutate) ? mutate : function* (...args) {
528
- return yield* mutate(...args);
529
- }, ...combinators));
530
- }, makeBaseInfo(mutation.id, options));
531
- return f;
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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