@effect-app/vue 4.0.0-beta.24 → 4.0.0-beta.240

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +1757 -0
  2. package/dist/commander.d.ts +634 -0
  3. package/dist/commander.d.ts.map +1 -0
  4. package/dist/commander.js +1070 -0
  5. package/dist/confirm.d.ts +21 -0
  6. package/dist/confirm.d.ts.map +1 -0
  7. package/dist/confirm.js +26 -0
  8. package/dist/errorReporter.d.ts +7 -5
  9. package/dist/errorReporter.d.ts.map +1 -1
  10. package/dist/errorReporter.js +14 -19
  11. package/dist/form.d.ts +15 -6
  12. package/dist/form.d.ts.map +1 -1
  13. package/dist/form.js +46 -13
  14. package/dist/index.d.ts +1 -1
  15. package/dist/intl.d.ts +15 -0
  16. package/dist/intl.d.ts.map +1 -0
  17. package/dist/intl.js +9 -0
  18. package/dist/lib.d.ts +8 -10
  19. package/dist/lib.d.ts.map +1 -1
  20. package/dist/lib.js +35 -10
  21. package/dist/makeClient.d.ts +156 -339
  22. package/dist/makeClient.d.ts.map +1 -1
  23. package/dist/makeClient.js +225 -376
  24. package/dist/makeContext.d.ts +1 -1
  25. package/dist/makeContext.d.ts.map +1 -1
  26. package/dist/makeIntl.d.ts +1 -1
  27. package/dist/makeIntl.d.ts.map +1 -1
  28. package/dist/makeUseCommand.d.ts +9 -0
  29. package/dist/makeUseCommand.d.ts.map +1 -0
  30. package/dist/makeUseCommand.js +13 -0
  31. package/dist/mutate.d.ts +79 -35
  32. package/dist/mutate.d.ts.map +1 -1
  33. package/dist/mutate.js +166 -49
  34. package/dist/query.d.ts +24 -39
  35. package/dist/query.d.ts.map +1 -1
  36. package/dist/query.js +156 -78
  37. package/dist/routeParams.d.ts +3 -2
  38. package/dist/routeParams.d.ts.map +1 -1
  39. package/dist/routeParams.js +4 -3
  40. package/dist/runtime.d.ts +10 -6
  41. package/dist/runtime.d.ts.map +1 -1
  42. package/dist/runtime.js +32 -18
  43. package/dist/toast.d.ts +51 -0
  44. package/dist/toast.d.ts.map +1 -0
  45. package/dist/toast.js +34 -0
  46. package/dist/withToast.d.ts +30 -0
  47. package/dist/withToast.d.ts.map +1 -0
  48. package/dist/withToast.js +64 -0
  49. package/examples/streamMutation.ts +72 -0
  50. package/package.json +48 -50
  51. package/src/commander.ts +3406 -0
  52. package/src/{experimental/confirm.ts → confirm.ts} +12 -14
  53. package/src/errorReporter.ts +65 -75
  54. package/src/form.ts +61 -18
  55. package/src/intl.ts +12 -0
  56. package/src/lib.ts +48 -20
  57. package/src/makeClient.ts +578 -1134
  58. package/src/{experimental/makeUseCommand.ts → makeUseCommand.ts} +8 -5
  59. package/src/mutate.ts +300 -130
  60. package/src/query.ts +241 -183
  61. package/src/routeParams.ts +3 -2
  62. package/src/runtime.ts +46 -21
  63. package/src/{experimental/toast.ts → toast.ts} +15 -27
  64. package/src/{experimental/withToast.ts → withToast.ts} +46 -12
  65. package/test/Mutation.test.ts +181 -24
  66. package/test/dist/form.test.d.ts.map +1 -1
  67. package/test/dist/lib.test.d.ts.map +1 -0
  68. package/test/dist/streamFinal.test.d.ts.map +1 -0
  69. package/test/dist/streamFn.test.d.ts.map +1 -0
  70. package/test/dist/stubs.d.ts +3531 -122
  71. package/test/dist/stubs.d.ts.map +1 -1
  72. package/test/dist/stubs.js +187 -32
  73. package/test/form-validation-errors.test.ts +25 -20
  74. package/test/form.test.ts +22 -3
  75. package/test/lib.test.ts +240 -0
  76. package/test/makeClient.test.ts +327 -38
  77. package/test/streamFinal.test.ts +64 -0
  78. package/test/streamFn.test.ts +457 -0
  79. package/test/stubs.ts +223 -43
  80. package/tsconfig.examples.json +20 -0
  81. package/tsconfig.json +2 -1
  82. package/tsconfig.json.bak +5 -2
  83. package/tsconfig.src.json +34 -34
  84. package/tsconfig.test.json +2 -2
  85. package/vitest.config.ts +5 -5
  86. package/dist/experimental/commander.d.ts +0 -359
  87. package/dist/experimental/commander.d.ts.map +0 -1
  88. package/dist/experimental/commander.js +0 -557
  89. package/dist/experimental/confirm.d.ts +0 -19
  90. package/dist/experimental/confirm.d.ts.map +0 -1
  91. package/dist/experimental/confirm.js +0 -28
  92. package/dist/experimental/intl.d.ts +0 -16
  93. package/dist/experimental/intl.d.ts.map +0 -1
  94. package/dist/experimental/intl.js +0 -5
  95. package/dist/experimental/makeUseCommand.d.ts +0 -8
  96. package/dist/experimental/makeUseCommand.d.ts.map +0 -1
  97. package/dist/experimental/makeUseCommand.js +0 -13
  98. package/dist/experimental/toast.d.ts +0 -47
  99. package/dist/experimental/toast.d.ts.map +0 -1
  100. package/dist/experimental/toast.js +0 -41
  101. package/dist/experimental/withToast.d.ts +0 -25
  102. package/dist/experimental/withToast.d.ts.map +0 -1
  103. package/dist/experimental/withToast.js +0 -45
  104. package/eslint.config.mjs +0 -24
  105. package/src/experimental/commander.ts +0 -1835
  106. package/src/experimental/intl.ts +0 -9
package/dist/runtime.js CHANGED
@@ -1,20 +1,23 @@
1
- import { ManagedRuntime } from "effect";
2
- import { Effect, Layer, Logger } from "effect-app";
3
- export function makeAppRuntime(layer) {
4
- return Effect.gen(function* () {
5
- const l = layer.pipe(Layer.provide(Logger.layer([Logger.consolePretty()])));
6
- const mrt = ManagedRuntime.make(l);
7
- yield* mrt.servicesEffect;
8
- return Object.assign(mrt, {
9
- [Symbol.dispose]() {
10
- return Effect.runSync(mrt.disposeEffect);
11
- },
12
- [Symbol.asyncDispose]() {
13
- return mrt.dispose();
14
- }
15
- }); // as we initialise here, there is no more error left.
16
- });
17
- }
1
+ import { CauseException } from "effect-app/client/errors";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Layer from "effect-app/Layer";
4
+ import * as Exit from "effect/Exit";
5
+ import { flow } from "effect/Function";
6
+ import * as Logger from "effect/Logger";
7
+ import * as ManagedRuntime from "effect/ManagedRuntime";
8
+ export const makeAppRuntime = Effect.fnUntraced(function* (layer) {
9
+ const l = layer.pipe(Layer.provide(Logger.layer([Logger.consolePretty()])));
10
+ const mrt = ManagedRuntime.make(l);
11
+ yield* mrt.contextEffect;
12
+ return Object.assign(mrt, {
13
+ [Symbol.dispose]() {
14
+ return Effect.runSync(mrt.disposeEffect);
15
+ },
16
+ [Symbol.asyncDispose]() {
17
+ return mrt.dispose();
18
+ }
19
+ }); // as we initialise here, there is no more error left.
20
+ });
18
21
  export function initializeSync(layer) {
19
22
  const runtime = Effect.runSync(makeAppRuntime(layer));
20
23
  return runtime;
@@ -23,4 +26,15 @@ export function initializeAsync(layer) {
23
26
  return Effect
24
27
  .runPromise(makeAppRuntime(layer));
25
28
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRWxELE1BQU0sVUFBVSxjQUFjLENBQU8sS0FBd0I7SUFDM0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdCLENBQUE7UUFDMUIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFBO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDeEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDMUMsQ0FBQztZQUVELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztnQkFDbkIsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQSxDQUFDLHNEQUFzRDtJQUMzRCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFPLEtBQStCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDckQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQU8sS0FBK0I7SUFDbkUsT0FBTyxNQUFNO1NBQ1YsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUMifQ==
29
+ // we wrap into CauseException because we want to keep the full cause of the failure.
30
+ export const makeRunPromise = (services) => flow(Effect.runPromiseExitWith(services), (_) => _.then(Exit.match({
31
+ onFailure: (cause) => Promise.reject(new CauseException(cause, "runPromise")),
32
+ onSuccess: (value) => Promise.resolve(value)
33
+ })));
34
+ export const makeRunSync = (services) => flow(Effect.runSyncExitWith(services), Exit.match({
35
+ onFailure: (cause) => {
36
+ throw new CauseException(cause, "runSync");
37
+ },
38
+ onSuccess: (value) => value
39
+ }));
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV6RCxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFDbkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFFdkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQU8sS0FBd0I7SUFDdEYsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNwQyxDQUFBO0lBQ25CLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQTtJQUN4QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ3hCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDMUMsQ0FBQztRQUVELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNuQixPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN0QixDQUFDO0tBQ0YsQ0FBQyxDQUFBLENBQUMsc0RBQXNEO0FBQzNELENBQUMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLGNBQWMsQ0FBTyxLQUF3QjtJQUMzRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3JELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFPLEtBQXdCO0lBQzVELE9BQU8sTUFBTTtTQUNWLFVBQVUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUN0QyxDQUFDO0FBRUQscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFJLFFBQW9CLEVBQUUsRUFBRSxDQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsQ0FBQyxDQUFDLElBQUksQ0FDSixJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ1QsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM3RSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0NBQzdDLENBQUMsQ0FDSCxDQUFDLENBQUE7QUFFTixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBSSxRQUFvQixFQUFFLEVBQUUsQ0FDckQsSUFBSSxDQUNGLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDVCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNuQixNQUFNLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBQ0QsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLO0NBQzVCLENBQUMsQ0FDSCxDQUFBIn0=
@@ -0,0 +1,51 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ export type ToastId = string | number;
4
+ export type ToastOpts = {
5
+ id?: ToastId;
6
+ timeout?: number;
7
+ groupId?: string;
8
+ requestId?: string;
9
+ };
10
+ export type ToastOptsInternal = {
11
+ id?: ToastId | null;
12
+ timeout?: number;
13
+ groupId?: string;
14
+ requestId?: string;
15
+ };
16
+ export type UseToast = () => {
17
+ error: (this: void, message: string, options?: ToastOpts) => ToastId;
18
+ warning: (this: void, message: string, options?: ToastOpts) => ToastId;
19
+ success: (this: void, message: string, options?: ToastOpts) => ToastId;
20
+ info: (this: void, message: string, options?: ToastOpts) => ToastId;
21
+ dismiss: (this: void, id: ToastId) => void;
22
+ };
23
+ declare const CurrentToastId_base: Context.OpaqueClass<CurrentToastId, "CurrentToastId", {
24
+ toastId: ToastId;
25
+ }>;
26
+ export declare class CurrentToastId extends CurrentToastId_base {
27
+ }
28
+ /** fallback to CurrentToastId when available unless id is explicitly set to a value or null */
29
+ export declare const wrap: (toast: ReturnType<UseToast>) => {
30
+ error: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
31
+ info: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
32
+ success: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
33
+ warning: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
34
+ dismiss: (toastId: ToastId) => Effect.Effect<void, never, never>;
35
+ };
36
+ declare const Toast_base: Context.OpaqueClass<Toast, "Toast", {
37
+ error: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
38
+ info: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
39
+ success: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
40
+ warning: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
41
+ dismiss: (toastId: ToastId) => Effect.Effect<void, never, never>;
42
+ }>;
43
+ export declare class Toast extends Toast_base {
44
+ static readonly error: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
45
+ static readonly info: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
46
+ static readonly success: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
47
+ static readonly warning: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
48
+ static readonly dismiss: (toastId: ToastId) => Effect.Effect<void, never, Toast>;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90b2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBRTdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsTUFBTSxNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFBO0FBQ3JDLE1BQU0sTUFBTSxTQUFTLEdBQUc7SUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFBQyxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFBO0FBQ2hHLE1BQU0sTUFBTSxpQkFBaUIsR0FBRztJQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFBQyxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFBO0FBRS9HLE1BQU0sTUFBTSxRQUFRLEdBQUcsTUFBTTtJQUMzQixLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxLQUFLLE9BQU8sQ0FBQTtJQUNwRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxLQUFLLE9BQU8sQ0FBQTtJQUN0RSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxLQUFLLE9BQU8sQ0FBQTtJQUN0RSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxLQUFLLE9BQU8sQ0FBQTtJQUNuRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUssSUFBSSxDQUFBO0NBQzNDLENBQUE7O2FBRTZFLE9BQU87O0FBQXJGLHFCQUFhLGNBQWUsU0FBUSxtQkFBd0U7Q0FBRztBQUUvRywrRkFBK0Y7QUFDL0YsZUFBTyxNQUFNLElBQUksVUFBVyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBaUI1QyxLQUFLLFlBZlksTUFBTSxZQUFZLGlCQUFpQjtJQWdCcEQsSUFBSTtJQUNKLE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTyxZQUFZLE9BQU87Q0FFN0IsQ0FBQTs7cUJBckJvQixNQUFNLFlBQVksaUJBQWlCOzs7O3VCQW1CakMsT0FBTzs7QUFNOUIscUJBQWEsS0FBTSxTQUFRLFVBQTRDO0lBQ3JFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxxR0FBZ0M7SUFDckQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFHQUErQjtJQUNuRCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8scUdBQWtDO0lBQ3pELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxxR0FBa0M7SUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLDBEQUFrQztDQUMxRCJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../src/toast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AACrC,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAChG,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/G,MAAM,MAAM,QAAQ,GAAG,MAAM;IAC3B,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAA;IACpE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAA;IACtE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAA;IACtE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAA;IACnE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,CAAA;;aAE6E,OAAO;;AAArF,qBAAa,cAAe,SAAQ,mBAAwE;CAAG;AAE/G,+FAA+F;AAC/F,eAAO,MAAM,IAAI,UAAW,UAAU,CAAC,QAAQ,CAAC;IAiB5C,KAAK,YAfY,MAAM,YAAY,iBAAiB;IAgBpD,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO,YAAY,OAAO;CAE7B,CAAA;;qBArBoB,MAAM,YAAY,iBAAiB;;;;uBAmBjC,OAAO;;AAM9B,qBAAa,KAAM,SAAQ,UAA4C;IACrE,MAAM,CAAC,QAAQ,CAAC,KAAK,qGAAgC;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,qGAA+B;IACnD,MAAM,CAAC,QAAQ,CAAC,OAAO,qGAAkC;IACzD,MAAM,CAAC,QAAQ,CAAC,OAAO,qGAAkC;IACzD,MAAM,CAAC,QAAQ,CAAC,OAAO,0DAAkC;CAC1D"}
package/dist/toast.js ADDED
@@ -0,0 +1,34 @@
1
+ import * as Context from "effect-app/Context";
2
+ import { accessEffectFn } from "effect-app/Context";
3
+ import * as Effect from "effect-app/Effect";
4
+ import * as Option from "effect-app/Option";
5
+ export class CurrentToastId extends Context.Opaque()("CurrentToastId") {
6
+ }
7
+ /** fallback to CurrentToastId when available unless id is explicitly set to a value or null */
8
+ export const wrap = (toast) => {
9
+ const wrap = (toastHandler) => {
10
+ return (message, options) => Effect.serviceOption(CurrentToastId).pipe(Effect.flatMap((currentToast) => Effect.sync(() => {
11
+ const { id: _id, ...rest } = options ?? {};
12
+ const id = _id !== undefined
13
+ ? _id ?? undefined
14
+ : Option.getOrUndefined(Option.map(currentToast, (_) => _.toastId));
15
+ // when id is undefined, we may end up with no toast at all..
16
+ return toastHandler(message, id !== undefined ? { ...rest, id } : rest);
17
+ })));
18
+ };
19
+ return {
20
+ error: wrap(toast.error),
21
+ info: wrap(toast.info),
22
+ success: wrap(toast.success),
23
+ warning: wrap(toast.warning),
24
+ dismiss: (toastId) => Effect.sync(() => toast.dismiss(toastId))
25
+ };
26
+ };
27
+ export class Toast extends Context.Opaque()("Toast") {
28
+ static error = accessEffectFn(this, "error");
29
+ static info = accessEffectFn(this, "info");
30
+ static success = accessEffectFn(this, "success");
31
+ static warning = accessEffectFn(this, "warning");
32
+ static dismiss = accessEffectFn(this, "dismiss");
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBYzNDLE1BQU0sT0FBTyxjQUFlLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBd0MsQ0FBQyxnQkFBZ0IsQ0FBQztDQUFHO0FBRS9HLCtGQUErRjtBQUMvRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUEyQixFQUFFLEVBQUU7SUFDbEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxZQUErRCxFQUFFLEVBQUU7UUFDL0UsT0FBTyxDQUFDLE9BQWUsRUFBRSxPQUEyQixFQUFFLEVBQUUsQ0FDdEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNmLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQTtZQUMxQyxNQUFNLEVBQUUsR0FBRyxHQUFHLEtBQUssU0FBUztnQkFDMUIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxTQUFTO2dCQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDckUsNkRBQTZEO1lBQzdELE9BQU8sWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6RSxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUE7SUFDTCxDQUFDLENBQUE7SUFDRCxPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVCLE9BQU8sRUFBRSxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN6RSxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBSUQsTUFBTSxPQUFPLEtBQU0sU0FBUSxPQUFPLENBQUMsTUFBTSxFQUFxQixDQUFDLE9BQU8sQ0FBQztJQUNyRSxNQUFNLENBQVUsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDckQsTUFBTSxDQUFVLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ25ELE1BQU0sQ0FBVSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN6RCxNQUFNLENBQVUsT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekQsTUFBTSxDQUFVLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0NBQzFEIn0=
@@ -0,0 +1,30 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Layer from "effect-app/Layer";
4
+ import type * as Option from "effect-app/Option";
5
+ import { Toast } from "./toast.js";
6
+ export interface ToastOptions<A, E, Args extends ReadonlyArray<unknown>, WaiR, SucR, ErrR> {
7
+ stableToastId?: undefined | string | ((...args: Args) => string | undefined);
8
+ timeout?: number;
9
+ showSpanInfo?: false;
10
+ groupId?: string;
11
+ onWaiting: string | ((...args: Args) => string | null) | null | ((...args: Args) => Effect.Effect<string | null, never, WaiR>);
12
+ onSuccess: string | ((a: A, ...args: Args) => string | null) | null | ((a: A, ...args: Args) => Effect.Effect<string | null, never, SucR>);
13
+ onFailure: string | ((error: Option.Option<E>, ...args: Args) => string | {
14
+ level: "warn" | "error";
15
+ message: string;
16
+ }) | ((error: Option.Option<E>, ...args: Args) => Effect.Effect<string | {
17
+ level: "warn" | "error";
18
+ message: string;
19
+ }, never, ErrR>);
20
+ }
21
+ declare const WithToast_base: Context.ServiceClass<WithToast, "WithToast", <A, E, Args extends readonly unknown[], R, WaiR = never, SucR = never, ErrR = never>(options: ToastOptions<A, E, Args, WaiR, SucR, ErrR>) => (self: Effect.Effect<A, E, R>, ...args: Args) => Effect.Effect<A, E, ErrR | R | SucR | WaiR>> & {
22
+ readonly make: Effect.Effect<<A, E, Args extends readonly unknown[], R, WaiR = never, SucR = never, ErrR = never>(options: ToastOptions<A, E, Args, WaiR, SucR, ErrR>) => (self: Effect.Effect<A, E, R>, ...args: Args) => Effect.Effect<A, E, ErrR | R | SucR | WaiR>, never, Toast>;
23
+ };
24
+ export declare class WithToast extends WithToast_base {
25
+ static readonly DefaultWithoutDependencies: Layer.Layer<WithToast, never, Toast>;
26
+ static readonly Default: Layer.Layer<WithToast, never, Toast>;
27
+ static readonly handle: <A, E, Args extends Array<unknown>, R, WaiR = never, SucR = never, ErrR = never>(options: ToastOptions<A, E, Args, WaiR, SucR, ErrR>) => (self: Effect.Effect<A, E, R>, ...args: Args) => Effect.Effect<A, E, R | WaiR | SucR | ErrR | WithToast>;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvYXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd2l0aFRvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUtoRCxPQUFPLEVBQWtCLEtBQUssRUFBZ0IsTUFBTSxZQUFZLENBQUE7QUFFaEUsTUFBTSxXQUFXLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksU0FBUyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQ3ZGLGFBQWEsQ0FBQyxFQUFFLFNBQVMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksS0FBSyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUE7SUFDNUUsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFBO0lBQ2hCLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQTtJQUNwQixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUE7SUFDaEIsU0FBUyxFQUNMLE1BQU0sR0FDTixDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FDbEMsSUFBSSxHQUNKLENBQUMsQ0FDRCxHQUFHLElBQUksRUFBRSxJQUFJLEtBQ1YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2pELFNBQVMsRUFDTCxNQUFNLEdBQ04sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FDeEMsSUFBSSxHQUNKLENBQUMsQ0FDRCxDQUFDLEVBQUUsQ0FBQyxFQUNKLEdBQUcsSUFBSSxFQUFFLElBQUksS0FDVixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDakQsU0FBUyxFQUNMLE1BQU0sR0FDTixDQUFDLENBQ0QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ3ZCLEdBQUcsSUFBSSxFQUFFLElBQUksS0FDVixNQUFNLEdBQUc7UUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUFDLE9BQU8sRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDLEdBQ3pELENBQUMsQ0FDRCxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDdkIsR0FBRyxJQUFJLEVBQUUsSUFBSSxLQUNWLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtDQUMxRjs0RUFNVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksU0FBUyxTQUFTLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLFVBQVUsSUFBSSxVQUFVLElBQUksbUJBQ3ZFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztrQ0FEN0MsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLFNBQVMsU0FBUyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxVQUFVLElBQUksVUFBVSxJQUFJLG1CQUN2RSxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7O0FBSnpELHFCQUFhLFNBQVUsU0FBUSxjQWlGN0I7SUFDQSxNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQix1Q0FBZ0M7SUFDMUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLHVDQUFrQztJQUV6RCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksU0FBUyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsS0FBSyxXQUM3RixZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FDbEQsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUNiO0NBQy9GIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withToast.d.ts","sourceRoot":"","sources":["../src/withToast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Layer from "effect-app/Layer";
4
+ import * as S from "effect-app/Schema";
5
+ import { wrapEffect } from "effect-app/utils";
6
+ import * as Cause from "effect/Cause";
7
+ import * as Fiber from "effect/Fiber";
8
+ import { CurrentToastId, Toast } from "./toast.js";
9
+ // @effect-diagnostics-next-line missingEffectServiceDependency:off
10
+ export class WithToast extends Context.Service()("WithToast", {
11
+ make: Effect.gen(function* () {
12
+ const toast = yield* Toast;
13
+ return (options) => Effect.fnUntraced(function* (self, ...args) {
14
+ const baseTimeout = options.timeout ?? 3_000;
15
+ const stableToastId = typeof options.stableToastId === "function"
16
+ ? options.stableToastId(...args)
17
+ : options.stableToastId;
18
+ const requestId = yield* Effect.currentSpan.pipe(Effect.map((span) => span.traceId), Effect.orElseSucceed(() => S.StringId.make()));
19
+ const groupId = options.groupId;
20
+ const meta = { ...(groupId !== undefined ? { groupId } : {}), requestId };
21
+ const t = yield* wrapEffect(options.onWaiting)(...args);
22
+ const toastId = t === null
23
+ ? stableToastId
24
+ : stableToastId ?? `wait-${Math.random().toString(36).slice(2)}`;
25
+ const waitingFiber = t === null ? undefined : yield* Effect.forkChild(Effect.sleep("1 seconds").pipe(Effect.andThen(toast.info(t, { id: toastId, timeout: Infinity, ...meta }))));
26
+ const interruptWaiting = waitingFiber ? Fiber.interrupt(waitingFiber) : Effect.void;
27
+ return yield* self.pipe(Effect.tap(Effect.fnUntraced(function* (a) {
28
+ yield* interruptWaiting;
29
+ const t = yield* wrapEffect(options.onSuccess)(a, ...args);
30
+ if (t === null) {
31
+ return;
32
+ }
33
+ yield* toast.success(t, toastId !== undefined
34
+ ? { id: toastId, timeout: baseTimeout, ...meta }
35
+ : { timeout: baseTimeout, ...meta });
36
+ })), Effect.tapCause(Effect.fnUntraced(function* (cause) {
37
+ yield* interruptWaiting;
38
+ yield* Effect.logDebug("WithToast - caught error cause: " + Cause.squash(cause), Cause.hasInterruptsOnly(cause), cause);
39
+ if (Cause.hasInterruptsOnly(cause)) {
40
+ if (toastId)
41
+ yield* toast.dismiss(toastId);
42
+ return;
43
+ }
44
+ const spanInfo = options.showSpanInfo !== false
45
+ ? yield* Effect.currentSpan.pipe(Effect.map((span) => `\nTrace: ${span.traceId}\nSpan: ${span.spanId}`), Effect.orElseSucceed(() => ""))
46
+ : "";
47
+ const t = yield* wrapEffect(options.onFailure)(Cause.findErrorOption(cause), ...args);
48
+ const opts = { timeout: baseTimeout * 2, ...meta };
49
+ if (typeof t === "object") {
50
+ const message = t.message + spanInfo;
51
+ return t.level === "warn"
52
+ ? yield* toast.warning(message, toastId !== undefined ? { ...opts, id: toastId } : opts)
53
+ : yield* toast.error(message, toastId !== undefined ? { ...opts, id: toastId } : opts);
54
+ }
55
+ yield* toast.error(t + spanInfo, toastId !== undefined ? { ...opts, id: toastId } : opts);
56
+ }, Effect.uninterruptible)), toastId !== undefined ? Effect.provideService(CurrentToastId, CurrentToastId.of({ toastId })) : (_) => _);
57
+ });
58
+ })
59
+ }) {
60
+ static DefaultWithoutDependencies = Layer.effect(this, this.make);
61
+ static Default = this.DefaultWithoutDependencies;
62
+ static handle = (options) => (self, ...args) => this.use((_) => _(options)(self, ...args));
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dpdGhUb2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUV6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxZQUFZLENBQUE7QUFrQ2hFLG1FQUFtRTtBQUNuRSxNQUFNLE9BQU8sU0FBVSxTQUFRLE9BQU8sQ0FBQyxPQUFPLEVBQWEsQ0FBQyxXQUFXLEVBQUU7SUFDdkUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUMxQixPQUFPLENBQ0wsT0FBbUQsRUFDbkQsRUFBRSxDQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUMsSUFBNEIsRUFBRSxHQUFHLElBQVU7WUFDckUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUE7WUFFNUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxPQUFPLENBQUMsYUFBYSxLQUFLLFVBQVU7Z0JBQy9ELENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQTtZQUV6QixNQUFNLFNBQVMsR0FBVyxL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
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Example: stream-based mutation for a long-running operation.
3
+ *
4
+ * The server streams a tagged union of progress updates and a final result.
5
+ * The Vue ref is updated for every emitted value; `AsyncResult` stays in the
6
+ * `waiting` state until the stream ends.
7
+ *
8
+ * When using `makeClient` / `clientFor`, stream-type requests are exposed as
9
+ * `mutate` on the client object. Use `client.exportData.mutate` with `streamFn`
10
+ * combinators, or use `client.exportData.fn` to define a full command.
11
+ *
12
+ * The example below shows the low-level `asStreamResult` API.
13
+ */
14
+ import * as Effect from "effect-app/Effect"
15
+ import * as S from "effect-app/Schema"
16
+ import * as Stream from "effect/Stream"
17
+ import { asStreamResult } from "../src/mutate.js"
18
+
19
+ // ---------------------------------------------------------------------------
20
+ // Domain model
21
+ // ---------------------------------------------------------------------------
22
+
23
+ /** Intermediate progress report, e.g. "5 of 400 items processed". */
24
+ export class OperationProgress extends S.TaggedClass<OperationProgress>()("OperationProgress", {
25
+ completed: S.NonNegativeInt,
26
+ total: S.NonNegativeInt
27
+ }) {}
28
+
29
+ /** The final result produced once the operation is complete. */
30
+ export class ExportComplete extends S.TaggedClass<ExportComplete>()("ExportComplete", {
31
+ fileUrl: S.NonEmptyString
32
+ }) {}
33
+
34
+ /** Tagged union emitted by the stream. */
35
+ export type ExportEvent = OperationProgress | ExportComplete
36
+
37
+ // ---------------------------------------------------------------------------
38
+ // Simulated stream (replace with a real RPC / SSE stream in production)
39
+ // ---------------------------------------------------------------------------
40
+
41
+ /**
42
+ * Produces `total` progress updates followed by a single `ExportComplete`.
43
+ * Each step is separated by a 50 ms delay to simulate real async work.
44
+ */
45
+ const makeExportStream = (total: S.NonNegativeInt): Stream.Stream<ExportEvent> =>
46
+ Stream.concat(
47
+ Stream.range(1, total).pipe(
48
+ Stream.map((completed) => new OperationProgress({ completed: S.NonNegativeInt(completed), total })),
49
+ Stream.tap(() => Effect.sleep("50 millis"))
50
+ ),
51
+ Stream.make(new ExportComplete({ fileUrl: S.NonEmptyString("https://example.com/export.csv") }))
52
+ )
53
+
54
+ // ---------------------------------------------------------------------------
55
+ // Option A: low-level `asStreamResult` (call inside a `setup()` function)
56
+ // ---------------------------------------------------------------------------
57
+
58
+ export const useExportMutation = () => {
59
+ /**
60
+ * `result` - reactive ref, always reflects the latest stream event.
61
+ * `AsyncResult` tag:
62
+ * - Initial (waiting=true) - operation in progress
63
+ * - Success (waiting=true) - progress update received, still running
64
+ * - Success (waiting=false) - final result, operation complete
65
+ * - Failure - operation failed
66
+ *
67
+ * `execute` - call with the desired `total` to kick off the stream.
68
+ */
69
+ const [result, execute] = asStreamResult((total: S.NonNegativeInt) => makeExportStream(total))
70
+
71
+ return { result, execute }
72
+ }
package/package.json CHANGED
@@ -1,36 +1,35 @@
1
1
  {
2
2
  "name": "@effect-app/vue",
3
- "version": "4.0.0-beta.24",
3
+ "version": "4.0.0-beta.240",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
7
7
  "dependencies": {
8
- "@formatjs/intl": "^4.1.2",
9
- "@tanstack/query-core": "5.83.1",
10
- "@tanstack/vue-query": "5.83.1",
11
- "@vueuse/core": "^14.2.1",
8
+ "@formatjs/intl": "^4.1.9",
9
+ "@tanstack/query-core": "5.96.2",
10
+ "@tanstack/vue-query": "5.96.2",
11
+ "@vueuse/core": "^14.3.0",
12
12
  "change-case": "^5.4.4",
13
13
  "query-string": "^9.3.1",
14
- "effect-app": "4.0.0-beta.24"
14
+ "effect-app": "4.0.0-beta.240"
15
15
  },
16
16
  "peerDependencies": {
17
- "@effect/atom-vue": "^4.0.0-beta.36",
18
- "@effect/platform-browser": "^4.0.0-beta.36",
19
- "@sentry/browser": "^10.42.0",
20
- "effect": "^4.0.0-beta.36",
21
- "vue": "^3.5.29"
17
+ "@effect/atom-vue": "^4.0.0-beta.68",
18
+ "@effect/platform-browser": "^4.0.0-beta.68",
19
+ "@sentry/browser": "^10.51.0",
20
+ "effect": "^4.0.0-beta.68",
21
+ "vue": "^3.5.34"
22
22
  },
23
23
  "devDependencies": {
24
- "@effect/vitest": "^4.0.0-beta.36",
25
- "@formatjs/icu-messageformat-parser": "^3.5.1",
26
- "@types/node": "25.3.3",
27
- "@vitejs/plugin-vue": "^6.0.4",
28
- "intl-messageformat": "^11.1.2",
24
+ "@effect/vitest": "4.0.0-beta.68",
25
+ "@formatjs/icu-messageformat-parser": "^3.5.7",
26
+ "@types/node": "25.6.0",
27
+ "@vitejs/plugin-vue": "^6.0.6",
28
+ "intl-messageformat": "^11.2.4",
29
29
  "json5": "^2.2.3",
30
- "typescript": "~5.9.3",
31
- "vite": "^7.3.1",
32
- "vitest": "^4.0.18",
33
- "@effect-app/eslint-shared-config": "0.5.7-beta.2"
30
+ "typescript": "~6.0.3",
31
+ "vite": "^8.0.10",
32
+ "vitest": "^4.1.5"
34
33
  },
35
34
  "typesVersions": {
36
35
  "*": {
@@ -44,38 +43,26 @@
44
43
  "types": "./dist/index.d.ts",
45
44
  "default": "./dist/index.js"
46
45
  },
46
+ "./commander": {
47
+ "types": "./dist/commander.d.ts",
48
+ "default": "./dist/commander.js"
49
+ },
50
+ "./confirm": {
51
+ "types": "./dist/confirm.d.ts",
52
+ "default": "./dist/confirm.js"
53
+ },
47
54
  "./errorReporter": {
48
55
  "types": "./dist/errorReporter.d.ts",
49
56
  "default": "./dist/errorReporter.js"
50
57
  },
51
- "./experimental/commander": {
52
- "types": "./dist/experimental/commander.d.ts",
53
- "default": "./dist/experimental/commander.js"
54
- },
55
- "./experimental/confirm": {
56
- "types": "./dist/experimental/confirm.d.ts",
57
- "default": "./dist/experimental/confirm.js"
58
- },
59
- "./experimental/intl": {
60
- "types": "./dist/experimental/intl.d.ts",
61
- "default": "./dist/experimental/intl.js"
62
- },
63
- "./experimental/makeUseCommand": {
64
- "types": "./dist/experimental/makeUseCommand.d.ts",
65
- "default": "./dist/experimental/makeUseCommand.js"
66
- },
67
- "./experimental/toast": {
68
- "types": "./dist/experimental/toast.d.ts",
69
- "default": "./dist/experimental/toast.js"
70
- },
71
- "./experimental/withToast": {
72
- "types": "./dist/experimental/withToast.d.ts",
73
- "default": "./dist/experimental/withToast.js"
74
- },
75
58
  "./form": {
76
59
  "types": "./dist/form.d.ts",
77
60
  "default": "./dist/form.js"
78
61
  },
62
+ "./intl": {
63
+ "types": "./dist/intl.d.ts",
64
+ "default": "./dist/intl.js"
65
+ },
79
66
  "./lib": {
80
67
  "types": "./dist/lib.d.ts",
81
68
  "default": "./dist/lib.js"
@@ -92,6 +79,10 @@
92
79
  "types": "./dist/makeIntl.d.ts",
93
80
  "default": "./dist/makeIntl.js"
94
81
  },
82
+ "./makeUseCommand": {
83
+ "types": "./dist/makeUseCommand.d.ts",
84
+ "default": "./dist/makeUseCommand.js"
85
+ },
95
86
  "./mutate": {
96
87
  "types": "./dist/mutate.d.ts",
97
88
  "default": "./dist/mutate.js"
@@ -107,6 +98,14 @@
107
98
  "./runtime": {
108
99
  "types": "./dist/runtime.d.ts",
109
100
  "default": "./dist/runtime.js"
101
+ },
102
+ "./toast": {
103
+ "types": "./dist/toast.d.ts",
104
+ "default": "./dist/toast.js"
105
+ },
106
+ "./withToast": {
107
+ "types": "./dist/withToast.d.ts",
108
+ "default": "./dist/withToast.js"
110
109
  }
111
110
  },
112
111
  "gitHead": "bd8e27eea3eff97db8739d577d67e7336c078d28",
@@ -121,18 +120,17 @@
121
120
  "scripts": {
122
121
  "watch": "pnpm build:tsc -w",
123
122
  "build:tsc": "pnpm clean-dist && effect-app-cli packagejson pnpm check",
124
- "check": "tsc --build",
123
+ "check": "tsgo --build",
125
124
  "build": "pnpm build:tsc",
126
- "watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsc -w",
125
+ "watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsgo -w",
127
126
  "clean": "rm -rf dist",
128
127
  "clean-dist": "sh ../../scripts/clean-dist.sh",
129
128
  "circular": "pnpm circular:src && pnpm circular:dist",
130
129
  "circular:src": "madge --circular --ts-config ./tsconfig.json --extensions ts ./src",
131
130
  "circular:dist": "madge --circular --extensions js ./dist",
132
- "compile": "NODE_OPTIONS=--max-old-space-size=6144 tsc --noEmit",
133
- "lint": "NODE_OPTIONS=--max-old-space-size=6144 ESLINT_TS=1 eslint ./src",
134
- "lint:watch": "ESLINT_TS=1 esw -w --changed --clear --ext ts,tsx .",
135
- "lint-fix": "pnpm lint --fix",
131
+ "compile": "NODE_OPTIONS=--max-old-space-size=6144 tsgo --noEmit",
132
+ "lint": "oxlint --quiet --type-aware ./src && pnpm exec dprint check --config ../../dprint.jsonc .",
133
+ "lint-fix": "oxlint --quiet --type-aware --fix ./src && pnpm exec dprint fmt --config ../../dprint.jsonc .",
136
134
  "test": "vitest",
137
135
  "test:run": "pnpm run test run --passWithNoTests",
138
136
  "testsuite": "pnpm lint && pnpm circular && pnpm run test:run",