@effect-app/vue 4.0.0-beta.22 → 4.0.0-beta.220

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 (103) hide show
  1. package/CHANGELOG.md +1605 -0
  2. package/dist/commander.d.ts +628 -0
  3. package/dist/commander.d.ts.map +1 -0
  4. package/dist/commander.js +1060 -0
  5. package/dist/confirm.d.ts +19 -0
  6. package/dist/confirm.d.ts.map +1 -0
  7. package/dist/confirm.js +24 -0
  8. package/dist/errorReporter.d.ts +4 -4
  9. package/dist/errorReporter.d.ts.map +1 -1
  10. package/dist/errorReporter.js +12 -18
  11. package/dist/form.d.ts +14 -5
  12. package/dist/form.d.ts.map +1 -1
  13. package/dist/form.js +41 -12
  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 +6 -9
  19. package/dist/lib.d.ts.map +1 -1
  20. package/dist/lib.js +35 -10
  21. package/dist/makeClient.d.ts +152 -339
  22. package/dist/makeClient.d.ts.map +1 -1
  23. package/dist/makeClient.js +221 -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 +8 -0
  29. package/dist/makeUseCommand.d.ts.map +1 -0
  30. package/dist/makeUseCommand.js +13 -0
  31. package/dist/mutate.d.ts +52 -34
  32. package/dist/mutate.d.ts.map +1 -1
  33. package/dist/mutate.js +137 -46
  34. package/dist/query.d.ts +19 -39
  35. package/dist/query.d.ts.map +1 -1
  36. package/dist/query.js +128 -72
  37. package/dist/routeParams.d.ts +1 -1
  38. package/dist/runtime.d.ts +7 -4
  39. package/dist/runtime.d.ts.map +1 -1
  40. package/dist/runtime.js +27 -17
  41. package/dist/toast.d.ts +50 -0
  42. package/dist/toast.d.ts.map +1 -0
  43. package/dist/toast.js +32 -0
  44. package/dist/withToast.d.ts +27 -0
  45. package/dist/withToast.d.ts.map +1 -0
  46. package/dist/withToast.js +59 -0
  47. package/examples/streamMutation.ts +70 -0
  48. package/package.json +48 -50
  49. package/src/commander.ts +3393 -0
  50. package/src/{experimental/confirm.ts → confirm.ts} +10 -14
  51. package/src/errorReporter.ts +62 -74
  52. package/src/form.ts +56 -17
  53. package/src/intl.ts +12 -0
  54. package/src/lib.ts +47 -20
  55. package/src/makeClient.ts +568 -1134
  56. package/src/{experimental/makeUseCommand.ts → makeUseCommand.ts} +6 -4
  57. package/src/mutate.ts +265 -127
  58. package/src/query.ts +197 -183
  59. package/src/runtime.ts +41 -20
  60. package/src/{experimental/toast.ts → toast.ts} +13 -27
  61. package/src/{experimental/withToast.ts → withToast.ts} +40 -12
  62. package/test/Mutation.test.ts +176 -23
  63. package/test/dist/form.test.d.ts.map +1 -1
  64. package/test/dist/lib.test.d.ts.map +1 -0
  65. package/test/dist/streamFinal.test.d.ts.map +1 -0
  66. package/test/dist/streamFn.test.d.ts.map +1 -0
  67. package/test/dist/stubs.d.ts +3529 -122
  68. package/test/dist/stubs.d.ts.map +1 -1
  69. package/test/dist/stubs.js +182 -31
  70. package/test/form-validation-errors.test.ts +23 -19
  71. package/test/form.test.ts +20 -2
  72. package/test/lib.test.ts +240 -0
  73. package/test/makeClient.test.ts +292 -38
  74. package/test/streamFinal.test.ts +63 -0
  75. package/test/streamFn.test.ts +455 -0
  76. package/test/stubs.ts +218 -42
  77. package/tsconfig.examples.json +20 -0
  78. package/tsconfig.json +0 -1
  79. package/tsconfig.json.bak +5 -2
  80. package/tsconfig.src.json +34 -34
  81. package/tsconfig.test.json +2 -2
  82. package/vitest.config.ts +5 -5
  83. package/dist/experimental/commander.d.ts +0 -359
  84. package/dist/experimental/commander.d.ts.map +0 -1
  85. package/dist/experimental/commander.js +0 -557
  86. package/dist/experimental/confirm.d.ts +0 -19
  87. package/dist/experimental/confirm.d.ts.map +0 -1
  88. package/dist/experimental/confirm.js +0 -28
  89. package/dist/experimental/intl.d.ts +0 -16
  90. package/dist/experimental/intl.d.ts.map +0 -1
  91. package/dist/experimental/intl.js +0 -5
  92. package/dist/experimental/makeUseCommand.d.ts +0 -8
  93. package/dist/experimental/makeUseCommand.d.ts.map +0 -1
  94. package/dist/experimental/makeUseCommand.js +0 -13
  95. package/dist/experimental/toast.d.ts +0 -47
  96. package/dist/experimental/toast.d.ts.map +0 -1
  97. package/dist/experimental/toast.js +0 -41
  98. package/dist/experimental/withToast.d.ts +0 -25
  99. package/dist/experimental/withToast.d.ts.map +0 -1
  100. package/dist/experimental/withToast.js +0 -45
  101. package/eslint.config.mjs +0 -24
  102. package/src/experimental/commander.ts +0 -1835
  103. package/src/experimental/intl.ts +0 -9
@@ -14,4 +14,4 @@ export declare const makeContextCertain: <T>() => {
14
14
  use: () => T & ({} | null);
15
15
  provide: (locale: T) => void;
16
16
  };
17
- //# sourceMappingURL=makeContext.d.ts.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNvbnRleHQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsS0FBSyxZQUFZLEVBQVcsTUFBTSxLQUFLLENBQUE7QUFFeEQsZUFBTyxNQUFNLFdBQVcsRUFBRTtJQUN4QixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHO1FBQ1gsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ1osT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUE7S0FDN0IsQ0FBQTtJQUNELENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNaLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUE7UUFDeEIsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUE7S0FDN0IsQ0FBQTtDQU9GLENBQUE7QUFFRCxlQUFPLE1BQU0sYUFBYSxHQUFJLENBQUMsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLG9CQU1wRCxDQUFBO0FBRUQsZUFBTyxNQUFNLGtCQUFrQixHQUFJLENBQUM7SUFHaEMsR0FBRztJQUNILE9BQU8sV0FBVyxDQUFDO0NBRXRCLENBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"makeContext.d.ts","sourceRoot":"","sources":["../src/makeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,YAAY,EAAW,MAAM,KAAK,CAAA;AAExD,eAAO,MAAM,WAAW,EAAE;IACxB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG;QACX,GAAG,EAAE,MAAM,CAAC,CAAA;QACZ,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;KAC7B,CAAA;IACD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG;QACZ,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;QACxB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;KAC7B,CAAA;CAOF,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,oBAMpD,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,CAAC;;sBAId,CAAC;CAEtB,CAAA"}
1
+ {"version":3,"file":"makeContext.d.ts","sourceRoot":"","sources":["../src/makeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,YAAY,EAAW,MAAM,KAAK,CAAA;AAExD,eAAO,MAAM,WAAW,EAAE;IACxB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG;QACX,GAAG,EAAE,MAAM,CAAC,CAAA;QACZ,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;KAC7B,CAAA;IACD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG;QACZ,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;QACxB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;KAC7B,CAAA;CAOF,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,oBAMpD,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,CAAC;IAGhC,GAAG;IACH,OAAO,WAAW,CAAC;CAEtB,CAAA"}
@@ -18,4 +18,4 @@ export declare const makeIntl: <Locale extends string>(messages: Record<Locale,
18
18
  provide: (locale: Ref<NoInfer<Locale>, NoInfer<Locale>>) => void;
19
19
  };
20
20
  };
21
- //# sourceMappingURL=makeIntl.d.ts.map
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUludGwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlSW50bC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQStCLEtBQUssVUFBVSxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssaUJBQWlCLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRW5KLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssT0FBTyxJQUFJLHdCQUF3QixFQUFFLEtBQUssYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDMUgsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFTLE1BQU0sS0FBSyxDQUFBO0FBSXJDLE1BQU0sV0FBVyxjQUFjLENBQUMsTUFBTSxTQUFTLE1BQU0sQ0FBRSxTQUFRLFVBQVUsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUFHO0FBR3JHLE1BQU0sV0FBVyxTQUFTLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBRSxTQUFRLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDckYsVUFBVSxFQUFFLFVBQVUsQ0FBQTtDQUN2QjtBQUVELGVBQU8sTUFBTSxRQUFRLEdBQUksTUFBTSxTQUFTLE1BQU0sWUFDbEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLGFBRXJDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7OztvQkF5QnZCLE1BQU0sQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUMxQixNQUFNLENBQ2IsTUFBTSxFQUNOLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQ25EO2dDQWdCb0IsQ0FDbkIsVUFBVSxFQUFFLGlCQUFpQixFQUM3QixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFDM0UsSUFBSSxDQUFDLEVBQUUsd0JBQXdCLEtBQzVCLE1BQU07dUJBSXFCLFNBQVMsQ0FBQyxNQUFNLENBQUM7Ozs7OztDQUt0RCxDQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"makeIntl.d.ts","sourceRoot":"","sources":["../src/makeIntl.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnJ,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,IAAI,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC1H,OAAO,EAAE,KAAK,GAAG,EAAS,MAAM,KAAK,CAAA;AAIrC,MAAM,WAAW,cAAc,CAAC,MAAM,SAAS,MAAM,CAAE,SAAQ,UAAU,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;CAAG;AAGrG,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACrF,UAAU,EAAE,UAAU,CAAA;CACvB;AAED,eAAO,MAAM,QAAQ,GAAI,MAAM,SAAS,MAAM,EAC5C,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAEhD,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;;oBAyBvB,MAAM,CAAC,OAAO,QAAQ,EAAE,MAAM,CAAC,WAC1B,MAAM,CACb,MAAM,EACN,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CACnD;gCAgBoB,CACnB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3E,IAAI,CAAC,EAAE,wBAAwB,KAC5B,MAAM;uBAIqB,SAAS,CAAC,MAAM,CAAC;;;;;;CAKtD,CAAA"}
1
+ {"version":3,"file":"makeIntl.d.ts","sourceRoot":"","sources":["../src/makeIntl.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnJ,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,IAAI,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC1H,OAAO,EAAE,KAAK,GAAG,EAAS,MAAM,KAAK,CAAA;AAIrC,MAAM,WAAW,cAAc,CAAC,MAAM,SAAS,MAAM,CAAE,SAAQ,UAAU,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;CAAG;AAGrG,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACrF,UAAU,EAAE,UAAU,CAAA;CACvB;AAED,eAAO,MAAM,QAAQ,GAAI,MAAM,SAAS,MAAM,YAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,aAErC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;;oBAyBvB,MAAM,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,WAC1B,MAAM,CACb,MAAM,EACN,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CACnD;gCAgBoB,CACnB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3E,IAAI,CAAC,EAAE,wBAAwB,KAC5B,MAAM;uBAIqB,SAAS,CAAC,MAAM,CAAC;;;;;;CAKtD,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { Effect, type Layer } from "effect-app";
2
+ import { Commander, type CommanderImpl, CommanderStatic } from "./commander.js";
3
+ type X<X> = X;
4
+ export interface CommanderResolved<RT, RTHooks> extends X<typeof CommanderStatic>, Pick<CommanderImpl<RT, RTHooks>, "fn" | "wrap" | "streamWrap" | "streamFn" | "alt" | "alt2"> {
5
+ }
6
+ export declare const makeUseCommand: <R = never, RTHooks = never>(rtHooks: Layer.Layer<RTHooks, never, R>) => Effect.Effect<CommanderResolved<R, RTHooks>, never, R | Commander>;
7
+ export {};
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVVzZUNvbW1hbmQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlVXNlQ29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0UsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUdiLE1BQU0sV0FBVyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUM1QyxTQUNFLENBQUMsQ0FBQyxPQUFPLGVBQWUsQ0FBQyxFQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsTUFBTSxHQUFHLFlBQVksR0FBRyxVQUFVLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQztDQUUvRjtBQUVELGVBQU8sTUFBTSxjQUFjLEdBQ2YsQ0FBQyxVQUFVLE9BQU8sd0hBYTdCLENBQUEifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeUseCommand.d.ts","sourceRoot":"","sources":["../src/makeUseCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE/E,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAGb,MAAM,WAAW,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAC5C,SACE,CAAC,CAAC,OAAO,eAAe,CAAC,EACzB,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;CAE/F;AAED,eAAO,MAAM,cAAc,GACf,CAAC,UAAU,OAAO,wHAa7B,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { Effect } from "effect-app";
2
+ import { Commander, CommanderStatic } from "./commander.js";
3
+ export const makeUseCommand = Effect.fnUntraced(function* (rtHooks) {
4
+ const cmndr = yield* Commander;
5
+ const runtime = yield* Effect.context();
6
+ const comm = cmndr(runtime, rtHooks);
7
+ const command = {
8
+ ...comm,
9
+ ...CommanderStatic
10
+ };
11
+ return command;
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVVzZUNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZVVzZUNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBYyxNQUFNLFlBQVksQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFzQixlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQVkvRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDN0MsUUFBUSxDQUFDLEVBQTZCLE9BQXVDO0lBQzNFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFLLENBQUE7SUFFMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVwQyxNQUFNLE9BQU8sR0FBa0M7UUFDN0MsR0FBRyxJQUFJO1FBQ1AsR0FBRyxlQUFlO0tBQ25CLENBQUE7SUFFRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDLENBQ0YsQ0FBQSJ9
package/dist/mutate.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { type InvalidateOptions, type InvalidateQueryFilters, type QueryClient } from "@tanstack/vue-query";
2
- import { type Cause, Effect, type Exit } from "effect-app";
2
+ import { type Cause, Effect, Exit } from "effect-app";
3
3
  import { type Req } from "effect-app/client";
4
- import type { ClientForOptions, RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor";
4
+ import type { ClientForOptions, RequestHandlerWithInput } from "effect-app/client/clientFor";
5
+ import * as Stream from "effect/Stream";
5
6
  import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
6
7
  import { type ComputedRef } from "vue";
7
8
  export declare const getQueryKey: (h: {
@@ -14,49 +15,66 @@ export interface Res<A, E> {
14
15
  readonly data: A | undefined;
15
16
  readonly error: Cause.Cause<E> | undefined;
16
17
  }
17
- export declare function make<A, E, R>(self: Effect.Effect<A, E, R>): readonly [import("vue").ShallowRef<AsyncResult.AsyncResult<A, E>, AsyncResult.AsyncResult<A, E>>, ComputedRef<A | undefined>, Effect.Effect<AsyncResult.Success<A, E> | AsyncResult.Failure<A, E>, never, R>];
18
- export interface MutationOptionsBase {
18
+ export declare function make<A, E, R>(self: Effect.Effect<A, E, R>): readonly [import("vue").ShallowRef<AsyncResult.AsyncResult<A, E>, AsyncResult.AsyncResult<A, E>>, ComputedRef<A | undefined>, Effect.Effect<AsyncResult.Failure<A, E> | AsyncResult.Success<A, E>, never, R>];
19
+ export interface MutationOptionsBase<A = unknown, B = A, E2 = never, R2 = never> {
19
20
  /**
20
21
  * By default we invalidate one level of the query key, e.g $project/$configuration.get, we invalidate $project.
21
22
  * This can be overridden by providing a function that returns an array of filters and options.
22
23
  */
23
- queryInvalidation?: (defaultKey: string[], name: string) => {
24
+ queryInvalidation?: (defaultKey: string[], name: string, input?: unknown, output?: Exit.Exit<unknown, unknown>) => {
24
25
  filters?: InvalidateQueryFilters | undefined;
25
26
  options?: InvalidateOptions | undefined;
26
27
  }[];
27
- }
28
- /** @deprecated prefer more basic @see MutationOptionsBase and separate useMutation from Command.fn */
29
- export interface MutationOptions<A, E, R, A2 = A, E2 = E, R2 = R, I = void> extends MutationOptionsBase {
30
28
  /**
31
- * Map the handler; cache invalidation is already done in this handler.
32
- * This is useful for e.g navigating, as you know caches have already updated.
29
+ * Run an additional Effect after the mutation succeeds. Its output becomes the
30
+ * final result returned to the caller. Query cache is invalidated once on
31
+ * mutation exit and again after this Effect completes. Useful for long-running
32
+ * operations (e.g. polling a background job) where you want the caller to
33
+ * receive the downstream result and the cache to refresh once it is ready.
33
34
  *
34
- * @deprecated use `Command.fn` instead of `useMutation*` with `mapHandler` option.
35
+ * @example
36
+ * ```ts
37
+ * useMutation(startExportCommand, {
38
+ * select: (result) => pollUntilDone(result.jobId)
39
+ * // caller receives the pollUntilDone output, not the original result
40
+ * })
41
+ * ```
35
42
  */
36
- mapHandler?: (handler: Effect.Effect<A, E, R>, input: I) => Effect.Effect<A2, E2, R2>;
43
+ select?: (result: A) => Effect.Effect<B, E2, R2>;
37
44
  }
38
- export declare const asResult: {
39
- <A, E, R>(handler: Effect.Effect<A, E, R>): readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, Effect.Effect<Exit.Exit<A, E>, never, R>];
40
- <Args extends readonly any[], A, E, R>(handler: (...args: Args) => Effect.Effect<A, E, R>): readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, (...args: Args) => Effect.Effect<Exit.Exit<A, E>, never, R>];
41
- };
45
+ export declare const asResult: <Args extends readonly any[], A, E, R>(handler: (...args: Args) => Effect.Effect<A, E, R>) => readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, (...args: Args) => Effect.Effect<Exit.Exit<A, E>, never, R>];
46
+ /**
47
+ * Like `asResult`, but for streams. The ref is updated with each emitted value
48
+ * (keeping `waiting: true`) and is finalised (with `waiting: false`) once the
49
+ * stream terminates successfully. Errors are surfaced as `AsyncResult.failure`.
50
+ */
51
+ export declare const asStreamResult: <Args extends readonly any[], A, E, R>(handler: (...args: Args) => Stream.Stream<A, E, R>) => readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, (...args: Args) => Effect.Effect<void, never, R>];
42
52
  export declare const invalidateQueries: (queryClient: QueryClient, self: {
43
53
  id: string;
44
54
  options?: ClientForOptions;
45
- }, options?: MutationOptionsBase["queryInvalidation"]) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
46
- export declare const makeMutation: () => {
47
- <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>, options?: MutationOptionsBase): ((i: I) => Effect.Effect<A, E, R>) & {
48
- readonly id: Id;
49
- };
50
- <E, A, R, Request extends Req, Id extends string>(self: RequestHandler<A, E, R, Request, Id>, options?: MutationOptionsBase): Effect.Effect<A, E, R> & {
51
- readonly id: Id;
52
- };
53
- };
54
- export declare const useMakeMutation: () => {
55
- <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>, options?: MutationOptionsBase): ((i: I) => Effect.Effect<A, E, R>) & {
56
- readonly id: Id;
57
- };
58
- <E, A, R, Request extends Req, Id extends string>(self: RequestHandler<A, E, R, Request, Id>, options?: MutationOptionsBase): Effect.Effect<A, E, R> & {
59
- readonly id: Id;
60
- };
61
- };
62
- //# sourceMappingURL=mutate.d.ts.map
55
+ }, options?: MutationOptionsBase) => <A, E, R>(eff: Effect.Effect<A, E, R>, input?: unknown) => Effect.Effect<unknown, E, Exclude<R, never>>;
56
+ /**
57
+ * A callable mutation result. When `I = void` the input argument may be omitted.
58
+ */
59
+ export interface MutationFn<I, A, E, R, Id extends string> {
60
+ <B = A, E2 = never, R2 = never>(input: I, options?: MutationOptionsBase<A, B, E2, R2>): Effect.Effect<B, E | E2, R | R2>;
61
+ readonly id: Id;
62
+ }
63
+ export declare const makeMutation: () => <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>) => MutationFn<I, A, E, R, Id>;
64
+ export declare const useMakeMutation: () => <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>) => MutationFn<I, A, E, R, Id>;
65
+ /**
66
+ * Returns a stream-based mutation factory for use with `streamFn`.
67
+ * The outer Effect sets up per-invocation invalidation scaffolding
68
+ * and returns a stream that triggers query invalidation via `Stream.ensuring` when it completes.
69
+ *
70
+ * Use with `streamFn` / `Command.streamFn(id)(mutateHandler, ...combinators)` so that
71
+ * the command manages its own reactive state internally.
72
+ *
73
+ * Must be called inside a Vue setup context (uses `useQueryClient` internally).
74
+ */
75
+ export declare const makeStreamMutation2: () => (self: {
76
+ id: string;
77
+ options?: ClientForOptions;
78
+ handler: (i: any) => Stream.Stream<any, any, any>;
79
+ }, mergedInvalidation?: MutationOptionsBase["queryInvalidation"]) => (i: any) => Stream.Stream<any, any, any>;
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbXV0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUFFLEtBQUssc0JBQXNCLEVBQUUsS0FBSyxXQUFXLEVBQWtCLE1BQU0scUJBQXFCLENBQUE7QUFDM0gsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQVUsTUFBTSxZQUFZLENBQUE7QUFDN0QsT0FBTyxFQUErRixLQUFLLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3pJLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFHNUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQVksS0FBSyxXQUFXLEVBQWMsTUFBTSxLQUFLLENBQUE7QUFFNUQsZUFBTyxNQUFNLFdBQVcsTUFBTztJQUFFLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQTtDQUFFLGFBUXhFLENBQUE7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDdEMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUM1QyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQW9CWDtBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkIsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUE7SUFDekIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFBO0lBQzVCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
package/dist/mutate.js CHANGED
@@ -1,10 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { matchQuery } from "@tanstack/query-core";
2
3
  import { useQueryClient } from "@tanstack/vue-query";
3
- import { Effect, Option } from "effect-app";
4
+ import { Effect, Exit, Option } from "effect-app";
5
+ import { InvalidationKeysFromServer, makeInvalidationKeysService, makeQueryKey } from "effect-app/client";
4
6
  import { tuple } from "effect-app/Function";
7
+ import * as Ref from "effect/Ref";
8
+ import * as Stream from "effect/Stream";
5
9
  import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
6
10
  import { computed, shallowRef } from "vue";
7
- import { makeQueryKey } from "./lib.js";
8
11
  export const getQueryKey = (h) => {
9
12
  const key = makeQueryKey(h);
10
13
  const ns = key.filter((_) => _.startsWith("$"));
@@ -46,62 +49,120 @@ export function make(self) {
46
49
  const latestSuccess = computed(() => Option.getOrUndefined(AsyncResult.value(result.value)));
47
50
  return tuple(result, latestSuccess, execute);
48
51
  }
49
- // TODO: more efficient invalidation, including args etc
50
- // return Effect.promise(() => queryClient.invalidateQueries({
51
- // predicate: (_) => nses.includes(_.queryKey.filter((_) => _.startsWith("$")).join("/"))
52
- // }))
53
- /*
54
- // const nses: string[] = []`
55
- // for (let i = 0; i < ns.length; i++) {
56
- // nses.push(ns.slice(0, i + 1).join("/"))
57
- // }
58
- */
59
52
  export const asResult = (handler) => {
60
53
  const state = shallowRef(AsyncResult.initial());
61
- const act = Effect.isEffect(handler)
62
- ? Effect
63
- .sync(() => {
64
- state.value = AsyncResult.initial(true);
65
- })
66
- .pipe(Effect.andThen(Effect.suspend(() => handler.pipe(Effect.exit, Effect.tap((exit) => Effect.sync(() => (state.value = AsyncResult.fromExit(exit))))))))
67
- : (...args) => Effect
68
- .sync(() => {
69
- state.value = AsyncResult.initial(true);
70
- })
71
- .pipe(Effect.andThen(Effect.suspend(() => handler(...args).pipe(Effect.exit, Effect.tap((exit) => Effect.sync(() => (state.value = AsyncResult.fromExit(exit))))))));
54
+ const act = (...args) => Effect
55
+ .sync(() => {
56
+ state.value = AsyncResult.initial(true);
57
+ })
58
+ .pipe(Effect.andThen(Effect.suspend(() => handler(...args).pipe(Effect.exit, Effect.tap((exit) => Effect.sync(() => (state.value = AsyncResult.fromExit(exit))))))));
72
59
  return tuple(computed(() => state.value), act);
73
60
  };
74
- export const invalidateQueries = (queryClient, self, options) => {
75
- const invalidateQueries = (filters, options) => Effect.currentSpan.pipe(Effect.orElseSucceed(() => null), Effect.flatMap((span) => Effect.promise(() => queryClient.invalidateQueries(filters, { ...options, updateMeta: { span } }))));
76
- const invalidateCache = Effect.suspend(() => {
77
- const queryKey = getQueryKey(self);
78
- if (options) {
79
- const opts = options(queryKey, self.id);
80
- if (!opts.length) {
81
- return Effect.void;
61
+ /**
62
+ * Like `asResult`, but for streams. The ref is updated with each emitted value
63
+ * (keeping `waiting: true`) and is finalised (with `waiting: false`) once the
64
+ * stream terminates successfully. Errors are surfaced as `AsyncResult.failure`.
65
+ */
66
+ export const asStreamResult = (handler) => {
67
+ const state = shallowRef(AsyncResult.initial());
68
+ const runStream = (stream) => Effect
69
+ .sync(() => {
70
+ state.value = AsyncResult.initial(true);
71
+ })
72
+ .pipe(Effect.andThen(stream.pipe(Stream.runForEach((value) => Effect.sync(() => {
73
+ state.value = AsyncResult.success(value, { waiting: true });
74
+ })), Effect.exit, Effect.flatMap((exit) => Effect.sync(() => {
75
+ if (exit._tag === "Success") {
76
+ const current = state.value;
77
+ if (AsyncResult.isSuccess(current)) {
78
+ state.value = AsyncResult.success(current.value, { waiting: false });
82
79
  }
83
- return Effect
84
- .andThen(Effect.annotateCurrentSpan({ queryKey, opts }), Effect.forEach(opts, (_) => invalidateQueries(_.filters, _.options), { concurrency: "inherit" }))
85
- .pipe(Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false }));
80
+ else {
81
+ state.value = AsyncResult.initial(false);
82
+ }
83
+ }
84
+ else {
85
+ state.value = AsyncResult.failure(exit.cause);
86
+ }
87
+ })))));
88
+ const act = (...args) => runStream(handler(...args));
89
+ return tuple(computed(() => state.value), act);
90
+ };
91
+ const buildInvalidateCache = (queryClient, self, queryInvalidation) => {
92
+ const invalidateQueriesFn = (filters, options) => Effect.currentSpan.pipe(Effect.orElseSucceed(() => null), Effect.flatMap((span) => Effect.promise(() => queryClient.invalidateQueries(filters, { ...options, updateMeta: { span } }))));
93
+ const getClientInvalidationTargets = (input, output) => {
94
+ const queryKey = getQueryKey(self);
95
+ if (queryInvalidation) {
96
+ return queryInvalidation(queryKey, self.id, input, output).map((_) => ({
97
+ filters: _.filters,
98
+ options: _.options
99
+ }));
86
100
  }
87
- if (!queryKey)
101
+ if (!queryKey) {
102
+ return [];
103
+ }
104
+ return [{ filters: { queryKey }, options: undefined }];
105
+ };
106
+ const invalidateCache = (input, output, serverKeys) => Effect.suspend(() => {
107
+ const clientTargets = getClientInvalidationTargets(input, output);
108
+ const serverTargets = serverKeys.map((queryKey) => ({
109
+ filters: { queryKey },
110
+ options: undefined
111
+ }));
112
+ const allTargets = [...clientTargets, ...serverTargets];
113
+ if (!allTargets.length)
88
114
  return Effect.void;
115
+ const groups = new Map();
116
+ for (const target of allTargets) {
117
+ const key = `${target.filters?.refetchType ?? ""}|${target.options?.cancelRefetch ?? ""}|${target.options?.throwOnError?.toString() ?? ""}`;
118
+ const existing = groups.get(key);
119
+ if (existing) {
120
+ existing.targets.push(target);
121
+ }
122
+ else {
123
+ groups.set(key, { targets: [target], refetchType: target.filters?.refetchType, options: target.options });
124
+ }
125
+ }
89
126
  return Effect
90
- .andThen(Effect.annotateCurrentSpan({ queryKey }), invalidateQueries({ queryKey }))
127
+ .andThen(Effect.annotateCurrentSpan({ clientTargets, serverKeys }), Effect.forEach(groups.values(), ({ options, refetchType, targets }) => invalidateQueriesFn({
128
+ ...(refetchType !== undefined ? { refetchType } : {}),
129
+ predicate: (query) => targets.some((t) => t.filters ? matchQuery(t.filters, query) : true)
130
+ }, options), { discard: true, concurrency: "inherit" }))
91
131
  .pipe(Effect.tap(
92
132
  // hand over control back to the event loop so that state can be updated..
93
133
  // TODO: should we do this in general on any mutation, regardless of invalidation?
94
134
  Effect.sleep(0)), Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false }));
95
135
  });
96
- const handle = (self) => Effect.ensuring(self, invalidateCache);
136
+ return invalidateCache;
137
+ };
138
+ export const invalidateQueries = (queryClient, self, options) => {
139
+ const invalidateCache = buildInvalidateCache(queryClient, self, options?.queryInvalidation);
140
+ const select = options?.select;
141
+ const handle = (eff, input) => Effect.gen(function* () {
142
+ const keysRef = yield* Ref.make([]);
143
+ const result = yield* eff.pipe(Effect.provideService(InvalidationKeysFromServer, makeInvalidationKeysService(keysRef)), Effect.onExit((exit) => Effect.gen(function* () {
144
+ const serverKeys = yield* Ref.get(keysRef);
145
+ yield* invalidateCache(input, exit, serverKeys);
146
+ })));
147
+ if (select) {
148
+ return yield* select(result).pipe(Effect.onExit((exit) => Effect.gen(function* () {
149
+ const serverKeys = yield* Ref.get(keysRef);
150
+ yield* invalidateCache(input, exit, serverKeys);
151
+ })));
152
+ }
153
+ return result;
154
+ });
97
155
  return handle;
98
156
  };
99
157
  export const makeMutation = () => {
100
- const useMutation = (self, options) => {
158
+ /**
159
+ * Pass a function that returns an Effect, e.g from a client action.
160
+ * Executes query cache invalidation based on default rules or provided option.
161
+ * When `I = void` the input argument may be omitted.
162
+ */
163
+ const useMutation = (self) => {
101
164
  const queryClient = useQueryClient();
102
- const handle = invalidateQueries(queryClient, self, options?.queryInvalidation);
103
- const handler = self.handler;
104
- const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i));
165
+ const r = (i, options) => invalidateQueries(queryClient, self, options)(self.handler(i), i);
105
166
  return Object.assign(r, { id: self.id });
106
167
  };
107
168
  return useMutation;
@@ -109,12 +170,42 @@ export const makeMutation = () => {
109
170
  // calling hooks in the body
110
171
  export const useMakeMutation = () => {
111
172
  const queryClient = useQueryClient();
112
- const useMutation = (self, options) => {
113
- const handle = invalidateQueries(queryClient, self, options?.queryInvalidation);
114
- const handler = self.handler;
115
- const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i));
173
+ /**
174
+ * Pass a function that returns an Effect, e.g from a client action.
175
+ * Executes query cache invalidation based on default rules or provided option.
176
+ * When `I = void` the input argument may be omitted.
177
+ */
178
+ const useMutation = (self) => {
179
+ const r = (i, options) => invalidateQueries(queryClient, self, options)(self.handler(i), i);
116
180
  return Object.assign(r, { id: self.id });
117
181
  };
118
182
  return useMutation;
119
183
  };
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUF5RSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzSCxPQUFPLEVBQWMsTUFBTSxFQUFhLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUdsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDM0MsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFvQixVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV2QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUE2QyxFQUFFLEVBQUU7SUFDM0UsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMvQyw2RkFBNkY7SUFDN0Ysb0ZBQW9GO0lBQ3BGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNqRixJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELE9B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
184
+ /**
185
+ * Returns a stream-based mutation factory for use with `streamFn`.
186
+ * The outer Effect sets up per-invocation invalidation scaffolding
187
+ * and returns a stream that triggers query invalidation via `Stream.ensuring` when it completes.
188
+ *
189
+ * Use with `streamFn` / `Command.streamFn(id)(mutateHandler, ...combinators)` so that
190
+ * the command manages its own reactive state internally.
191
+ *
192
+ * Must be called inside a Vue setup context (uses `useQueryClient` internally).
193
+ */
194
+ export const makeStreamMutation2 = () => {
195
+ const queryClient = useQueryClient();
196
+ return (self, mergedInvalidation) => {
197
+ const invCache = buildInvalidateCache(queryClient, self, mergedInvalidation);
198
+ const makeInvocationEffect = (input, source) => Effect.gen(function* () {
199
+ const keysRef = yield* Ref.make([]);
200
+ const invKeys = makeInvalidationKeysService(keysRef, (key) => invCache(input, Exit.succeed(undefined), [key]));
201
+ const lastRef = yield* Ref.make(undefined);
202
+ return source.pipe(Stream.provideService(InvalidationKeysFromServer, invKeys), Stream.tap((v) => Ref.set(lastRef, v)), Stream.ensuring(Effect.gen(function* () {
203
+ const lastValue = yield* Ref.get(lastRef);
204
+ const serverKeys = yield* Ref.get(keysRef);
205
+ yield* invCache(input, Exit.succeed(lastValue), serverKeys);
206
+ })));
207
+ });
208
+ return (i) => Stream.unwrap(makeInvocationEffect(i, self.handler(i)));
209
+ };
210
+ };
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBeUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDM0gsT0FBTyxFQUFjLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzdELE9BQU8sRUFBd0IsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFZLE1BQU0sbUJBQW1CLENBQUE7QUFFekksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxXQUFXLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBb0IsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQTZDLEVBQUUsRUFBRTtJQUMzRSxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQy9DLDZGQUE2RjtJQUM3RixvRkFBb0Y7SUFDcEYsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFN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
package/dist/query.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { type DefaultError, type Enabled, type InitialDataFunction, type NonUndefinedGuard, type PlaceholderDataFunction, type QueryKey, type QueryObserverOptions, type QueryObserverResult, type RefetchOptions, type UseQueryDefinedReturnType, type UseQueryReturnType } from "@tanstack/vue-query";
2
- import { Cause, Effect, type ServiceMap } from "effect-app";
1
+ import { type DefaultError, type Enabled, type InitialDataFunction, type NonUndefinedGuard, type PlaceholderDataFunction, type QueryKey, type QueryObserverOptions, type QueryObserverResult, type RefetchOptions, type UseQueryReturnType } from "@tanstack/vue-query";
2
+ import { type Context, Effect } from "effect-app";
3
3
  import { type Req } from "effect-app/client";
4
- import type { RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor";
4
+ import type { RequestHandlerWithInput, RequestStreamHandlerWithInput } from "effect-app/client/clientFor";
5
+ import { CauseException } from "effect-app/client/errors";
5
6
  import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
6
7
  import { type ComputedRef, type MaybeRefOrGetter, type WatchSource } from "vue";
7
8
  export interface CustomUseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, "queryKey" | "queryFn" | "initialData" | "enabled" | "placeholderData"> {
@@ -20,48 +21,27 @@ export interface CustomDefinedPlaceholderQueryOptions<TQueryFnData = unknown, TE
20
21
  initialData?: NonUndefinedGuard<TQueryFnData> | (() => NonUndefinedGuard<TQueryFnData>) | undefined;
21
22
  placeholderData: NonFunctionGuard<TQueryData> | PlaceholderDataFunction<NonFunctionGuard<TQueryData>, TError, NonFunctionGuard<TQueryData>, TQueryKey>;
22
23
  }
23
- export declare class KnownFiberFailure<E> extends Error {
24
- effectCause: Cause.Cause<E>;
25
- readonly error: unknown;
26
- constructor(effectCause: Cause.Cause<E>);
27
- }
28
- export declare const makeQuery: <R>(getRuntime: () => ServiceMap.ServiceMap<R>) => {
29
- <E, A, Request extends Req, Name extends string>(self: RequestHandler<A, E, R, Request, Name>): {
30
- /**
31
- * Effect results are passed to the caller, including errors.
32
- */
33
- <TData = A>(options: CustomDefinedInitialQueryOptions<A, KnownFiberFailure<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
34
- <TData = A>(options: CustomDefinedPlaceholderQueryOptions<A, E, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, KnownFiberFailure<E>>, never, never>, UseQueryDefinedReturnType<TData, KnownFiberFailure<E>>];
35
- /**
36
- * Effect results are passed to the caller, including errors.
37
- */
38
- <TData = A>(options?: CustomUndefinedInitialQueryOptions<A, KnownFiberFailure<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, ComputedRef<A | undefined>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
39
- };
40
- <Arg, E, A_1, Request_1 extends Req, Name_1 extends string>(self: RequestHandlerWithInput<Arg, A_1, E, R, Request_1, Name_1>): {
41
- /**
42
- * Effect results are passed to the caller, including errors.
43
- */
44
- <TData = A_1>(arg: Arg | WatchSource<Arg>, options: CustomDefinedInitialQueryOptions<A_1, KnownFiberFailure<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
45
- /**
46
- * Effect results are passed to the caller, including errors.
47
- */
48
- <TData = A_1>(arg: Arg | WatchSource<Arg>, options: CustomDefinedPlaceholderQueryOptions<A_1, KnownFiberFailure<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
49
- /**
50
- * Effect results are passed to the caller, including errors.
51
- */
52
- <TData = A_1>(arg: Arg | WatchSource<Arg>, options?: CustomUndefinedInitialQueryOptions<A_1, KnownFiberFailure<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData | undefined>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, KnownFiberFailure<E>>>, UseQueryReturnType<any, any>];
53
- };
24
+ export declare const makeQuery: <R>(getRuntime: () => Context.Context<R>) => <I, E, A, Request extends Req, Name extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>) => {
25
+ <TData = A>(arg: I | WatchSource<I>, options: CustomDefinedInitialQueryOptions<A, CauseException<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, CauseException<E>>>, UseQueryReturnType<any, any>];
26
+ <TData = A>(arg: I | WatchSource<I>, options: CustomDefinedPlaceholderQueryOptions<A, CauseException<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, CauseException<E>>>, UseQueryReturnType<any, any>];
27
+ <TData = A>(arg: I | WatchSource<I>, options?: CustomUndefinedInitialQueryOptions<A, CauseException<E>, TData>): readonly [ComputedRef<AsyncResult.AsyncResult<TData, E>>, ComputedRef<TData | undefined>, (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<TData, CauseException<E>>>, UseQueryReturnType<any, any>];
54
28
  };
55
29
  export interface MakeQuery2<R> extends ReturnType<typeof makeQuery<R>> {
56
30
  }
31
+ type StreamQueryResult<A, E> = readonly [
32
+ ComputedRef<AsyncResult.AsyncResult<A[], E>>,
33
+ ComputedRef<A[] | undefined>,
34
+ (options?: RefetchOptions) => Effect.Effect<QueryObserverResult<A[], CauseException<E>>>,
35
+ UseQueryReturnType<any, any>
36
+ ];
37
+ export declare const makeStreamQuery: <R>(getRuntime: () => Context.Context<R>) => <I, E, A, Request extends Req, Name extends string>(q: RequestStreamHandlerWithInput<I, A, E, R, Request, Name>) => (arg: I | WatchSource<I>) => StreamQueryResult<A, E>;
38
+ export interface MakeStreamQuery2<R> extends ReturnType<typeof makeStreamQuery<R>> {
39
+ }
57
40
  export declare function composeQueries<R extends Record<string, AsyncResult.AsyncResult<any, any>>>(results: R, renderPreviousOnFailure?: boolean): AsyncResult.AsyncResult<{
58
41
  [Property in keyof R]: R[Property] extends AsyncResult.AsyncResult<infer A, any> ? A : never;
59
42
  }, {
60
43
  [Property in keyof R]: R[Property] extends AsyncResult.AsyncResult<any, infer E> ? E : never;
61
44
  }[keyof R]>;
62
- export declare const useUpdateQuery: () => {
63
- <A>(query: RequestHandler<A, any, any, any, any>, updater: (data: NoInfer<A>) => NoInfer<A>): void;
64
- <I, A>(query: RequestHandlerWithInput<I, A, any, any, any, any>, input: I, updater: (data: NoInfer<A>) => NoInfer<A>): void;
65
- };
45
+ export declare const useUpdateQuery: () => <I, A>(query: RequestHandlerWithInput<I, A, any, any, any, any>, input: I, updater: (data: NoInfer<A>) => NoInfer<A>) => void;
66
46
  export {};
67
- //# sourceMappingURL=query.d.ts.map
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxPQUFPLEVBQStDLEtBQUssbUJBQW1CLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLHVCQUF1QixFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssb0JBQW9CLEVBQUUsS0FBSyxtQkFBbUIsRUFBRSxLQUFLLGNBQWMsRUFBZ0YsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xZLE9BQU8sRUFBZ0IsS0FBSyxPQUFPLEVBQUUsTUFBTSxFQUFtQixNQUFNLFlBQVksQ0FBQTtBQUNoRixPQUFPLEVBQWdCLEtBQUssR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUQsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLDBCQUEwQixDQUFBO0FBT2xGLE9BQU8sS0FBSyxXQUFXLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUFZLEtBQUssV0FBVyxFQUFFLEtBQUssZ0JBQWdCLEVBQTBCLEtBQUssV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBT2pILE1BQU0sV0FBVyxxQkFBcUIsQ0FDcEMsWUFBWSxHQUFHLE9BQU8sRUFDdEIsTUFBTSxHQUFHLFlBQVksRUFDckIsS0FBSyxHQUFHLFlBQVksRUFDcEIsVUFBVSxHQUFHLFlBQVksRUFDekIsU0FBUyxTQUFTLFFBQVEsR0FBRyxRQUFRLENBQ3JDLFNBQ0EsSUFBSSxDQUNGLG9CQUFvQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFDeEUsVUFBVSxHQUFHLFNBQVMsR0FBRyxhQUFhLEdBQUcsU0FBUyxHQUFHLGlCQUFp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