@effect-app/vue 4.0.0-beta.15 → 4.0.0-beta.151

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 (86) hide show
  1. package/CHANGELOG.md +958 -0
  2. package/dist/commander.d.ts +370 -0
  3. package/dist/commander.d.ts.map +1 -0
  4. package/dist/commander.js +587 -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 +13 -4
  12. package/dist/form.d.ts.map +1 -1
  13. package/dist/form.js +38 -9
  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 +1 -1
  19. package/dist/lib.d.ts.map +1 -1
  20. package/dist/makeClient.d.ts +84 -275
  21. package/dist/makeClient.d.ts.map +1 -1
  22. package/dist/makeClient.js +44 -351
  23. package/dist/makeContext.d.ts +1 -1
  24. package/dist/makeContext.d.ts.map +1 -1
  25. package/dist/makeIntl.d.ts +1 -1
  26. package/dist/makeIntl.d.ts.map +1 -1
  27. package/dist/makeUseCommand.d.ts +8 -0
  28. package/dist/makeUseCommand.d.ts.map +1 -0
  29. package/dist/makeUseCommand.js +13 -0
  30. package/dist/mutate.d.ts +2 -2
  31. package/dist/mutate.d.ts.map +1 -1
  32. package/dist/mutate.js +1 -1
  33. package/dist/query.d.ts +11 -15
  34. package/dist/query.d.ts.map +1 -1
  35. package/dist/query.js +24 -24
  36. package/dist/routeParams.d.ts +1 -1
  37. package/dist/runtime.d.ts +5 -2
  38. package/dist/runtime.d.ts.map +1 -1
  39. package/dist/runtime.js +27 -17
  40. package/dist/toast.d.ts +46 -0
  41. package/dist/toast.d.ts.map +1 -0
  42. package/dist/toast.js +32 -0
  43. package/dist/withToast.d.ts +26 -0
  44. package/dist/withToast.d.ts.map +1 -0
  45. package/dist/withToast.js +49 -0
  46. package/package.json +46 -46
  47. package/src/{experimental/commander.ts → commander.ts} +922 -249
  48. package/src/{experimental/confirm.ts → confirm.ts} +10 -14
  49. package/src/errorReporter.ts +60 -72
  50. package/src/form.ts +51 -12
  51. package/src/intl.ts +12 -0
  52. package/src/makeClient.ts +177 -1008
  53. package/src/{experimental/makeUseCommand.ts → makeUseCommand.ts} +3 -3
  54. package/src/query.ts +45 -46
  55. package/src/runtime.ts +39 -18
  56. package/src/{experimental/toast.ts → toast.ts} +11 -25
  57. package/src/{experimental/withToast.ts → withToast.ts} +15 -6
  58. package/test/Mutation.test.ts +130 -10
  59. package/test/dist/form.test.d.ts.map +1 -1
  60. package/test/dist/stubs.d.ts +1053 -118
  61. package/test/dist/stubs.d.ts.map +1 -1
  62. package/test/dist/stubs.js +50 -23
  63. package/test/form-validation-errors.test.ts +23 -19
  64. package/test/form.test.ts +20 -2
  65. package/test/makeClient.test.ts +54 -39
  66. package/test/stubs.ts +61 -26
  67. package/tsconfig.json +0 -1
  68. package/dist/experimental/commander.d.ts +0 -359
  69. package/dist/experimental/commander.d.ts.map +0 -1
  70. package/dist/experimental/commander.js +0 -557
  71. package/dist/experimental/confirm.d.ts +0 -19
  72. package/dist/experimental/confirm.d.ts.map +0 -1
  73. package/dist/experimental/confirm.js +0 -28
  74. package/dist/experimental/intl.d.ts +0 -16
  75. package/dist/experimental/intl.d.ts.map +0 -1
  76. package/dist/experimental/intl.js +0 -5
  77. package/dist/experimental/makeUseCommand.d.ts +0 -8
  78. package/dist/experimental/makeUseCommand.d.ts.map +0 -1
  79. package/dist/experimental/makeUseCommand.js +0 -13
  80. package/dist/experimental/toast.d.ts +0 -47
  81. package/dist/experimental/toast.d.ts.map +0 -1
  82. package/dist/experimental/toast.js +0 -41
  83. package/dist/experimental/withToast.d.ts +0 -25
  84. package/dist/experimental/withToast.d.ts.map +0 -1
  85. package/dist/experimental/withToast.js +0 -45
  86. package/src/experimental/intl.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,OAAO,EAAU,KAAK,EAA0B,CAAC,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAElD,OAAO,KAAK,KAAK,MAAM,8BAA8B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAc,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA8CxD,eAAO,MAAM,YAAY,GAAI,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAM,KAepG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAM,oCACpC,CAAA;AAExE,eAAO,MAAM,eAAe,GAC1B,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,6GASxG,CAAA;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAAyB;CAAG;AACnE,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAA;;;;;;;;;;;;;;;;;;AACtE,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;;;;;;;;;;iBAML,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;;;;;AAJjE,qBAAa,6BAA8B,SAAQ,kCAMjD;CAAG;AAEL,eAAO,MAAM,SAAS;;;;;;CAA+F,CAAA;AAErH,eAAO,MAAM,SAAS,GACpB,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE;;;;;;;;;CAcxG,CAAA"}
1
+ {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,12 @@ import { ApiClientFactory, makeRpcClient } from "effect-app/client";
4
4
  import { RpcContextMap } from "effect-app/rpc";
5
5
  import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
6
6
  import { ref } from "vue";
7
- import { Commander } from "../src/experimental/commander.js";
8
- import { I18n } from "../src/experimental/intl.js";
9
- import { makeUseCommand } from "../src/experimental/makeUseCommand.js";
10
- import * as Toast from "../src/experimental/toast.js";
11
- import { WithToast } from "../src/experimental/withToast.js";
12
- import { LegacyMutation, makeClient } from "../src/makeClient.js";
7
+ import { Commander } from "../src/commander.js";
8
+ import { I18n } from "../src/intl.js";
9
+ import { makeClient } from "../src/makeClient.js";
10
+ import { makeUseCommand } from "../src/makeUseCommand.js";
11
+ import * as Toast from "../src/toast.js";
12
+ import { WithToast } from "../src/withToast.js";
13
13
  const fakeToastLayer = (toasts = []) => Layer.effect(Toast.Toast, Effect.sync(() => {
14
14
  const dismiss = (id) => {
15
15
  const idx = toasts.findIndex((_) => _.id === id);
@@ -19,21 +19,21 @@ const fakeToastLayer = (toasts = []) => Layer.effect(Toast.Toast, Effect.sync(()
19
19
  toasts.splice(idx, 1);
20
20
  }
21
21
  };
22
- const fakeToast = (message, options) => {
22
+ const fakeToast = (type) => (message, options) => {
23
23
  const id = options?.id ?? Math.random().toString(36).substring(2, 15);
24
- console.log(`Toast [${id}]: ${message}`, options);
24
+ console.log(`Toast [${type}][${id}]: ${message}`, options);
25
25
  options = { ...options, id };
26
26
  const idx = toasts.findIndex((_) => _.id === id);
27
27
  if (idx > -1) {
28
28
  const toast = toasts[idx];
29
29
  clearTimeout(toast.timeoutId);
30
- Object.assign(toast, { message, options });
30
+ Object.assign(toast, { type, message, options });
31
31
  toast.timeoutId = setTimeout(() => {
32
32
  toasts.splice(idx, 1);
33
33
  }, options?.timeout ?? 3000);
34
34
  }
35
35
  else {
36
- const toast = { id, message, options };
36
+ const toast = { id, type, message, options };
37
37
  toast.timeoutId = setTimeout(() => {
38
38
  toasts.splice(idx, 1);
39
39
  }, options?.timeout ?? 3000);
@@ -42,10 +42,10 @@ const fakeToastLayer = (toasts = []) => Layer.effect(Toast.Toast, Effect.sync(()
42
42
  return id;
43
43
  };
44
44
  return Toast.Toast.of(Toast.wrap({
45
- error: fakeToast,
46
- warning: fakeToast,
47
- success: fakeToast,
48
- info: fakeToast,
45
+ error: fakeToast("error"),
46
+ warning: fakeToast("warning"),
47
+ success: fakeToast("success"),
48
+ info: fakeToast("info"),
49
49
  dismiss
50
50
  }));
51
51
  }));
@@ -76,29 +76,56 @@ export const useExperimental = (options) => {
76
76
  };
77
77
  export class RequestContextMap extends RpcContextMap.makeMap({}) {
78
78
  }
79
- export const { TaggedRequest: Req } = makeRpcClient(RequestContextMap);
80
- export class GetSomething2 extends Req()("GetSomething2", {
79
+ export const { TaggedRequestFor } = makeRpcClient(RequestContextMap);
80
+ export const SomethingReq = TaggedRequestFor("Something");
81
+ const SomethingQuery = SomethingReq.Query;
82
+ const SomethingCommand = SomethingReq.Command;
83
+ class SomethingGetSomething2 extends SomethingQuery()("GetSomething2", {
81
84
  id: S.String
82
- }, { success: S.NumberFromString }) {
85
+ }, { success: S.FiniteFromString }) {
83
86
  }
84
- export class GetSomething2WithDependencies extends Req()("GetSomething2", {
87
+ class SomethingGetSomething2WithDependencies extends SomethingQuery()("GetSomething2", {
85
88
  id: S.String
86
89
  }, {
87
90
  // this is intentilally fake, to simulate a codec that requires a dependency
88
- success: S.NumberFromString,
91
+ success: S.FiniteFromString,
89
92
  error: S.String
90
93
  }) {
91
94
  }
92
- export const Something = { GetSomething2, GetSomething2WithDependencies, meta: { moduleName: "Something" } };
95
+ class SomethingDoSomething extends SomethingCommand()("DoSomething", {
96
+ id: S.String
97
+ }, { success: S.FiniteFromString }) {
98
+ }
99
+ export const Something = {
100
+ GetSomething2: SomethingGetSomething2,
101
+ GetSomething2WithDependencies: SomethingGetSomething2WithDependencies,
102
+ DoSomething: SomethingDoSomething
103
+ };
104
+ export const SomethingElseReq = TaggedRequestFor("SomethingElse");
105
+ const SomethingElseQuery = SomethingElseReq.Query;
106
+ class SomethingElseGetSomething2 extends SomethingElseQuery()("GetSomething2", {
107
+ id: S.String
108
+ }, { success: S.FiniteFromString }) {
109
+ }
110
+ class SomethingElseGetSomething2WithDependencies extends SomethingElseQuery()("GetSomething2", {
111
+ id: S.String
112
+ }, {
113
+ success: S.FiniteFromString,
114
+ error: S.String
115
+ }) {
116
+ }
117
+ export const SomethingElse = {
118
+ GetSomething2: SomethingElseGetSomething2,
119
+ GetSomething2WithDependencies: SomethingElseGetSomething2WithDependencies
120
+ };
93
121
  export const useClient = (options) => {
94
122
  const FakeIntlLayer = fakeIntlLayer(options?.messages);
95
123
  const FakeToastLayer = fakeToastLayer(options?.toasts);
96
124
  const CommanderLayer = Commander.Default.pipe(Layer.provide([FakeIntlLayer, FakeToastLayer]));
97
125
  const WithToastLayer = WithToast.Default.pipe(Layer.provide(FakeToastLayer));
98
126
  const api = ApiClientFactory.layer({ url: "bogus", headers: Option.none() }).pipe(Layer.provide(FetchHttpClient.layer));
99
- const lm = LegacyMutation.Default.pipe(Layer.provide([FakeIntlLayer, FakeToastLayer]));
100
- const layers = Layer.mergeAll(CommanderLayer, WithToastLayer, FakeToastLayer, FakeIntlLayer, api, lm);
127
+ const layers = Layer.mergeAll(CommanderLayer, WithToastLayer, FakeToastLayer, FakeIntlLayer, api);
101
128
  const clientFor_ = ApiClientFactory.makeFor(Layer.empty);
102
129
  return makeClient(() => ManagedRuntime.make(layers), clientFor_, Layer.empty);
103
130
  };
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1YnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zdHVicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUMsT0FBTyxLQUFLLGVBQWUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQ3RFLE9BQU8sS0FBSyxLQUFLLE1BQU0sOEJBQThCLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHakUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFnQixFQUFFLEVBQUUsRUFBRSxDQUM1QyxLQUFLLENBQUMsTUFBTSxDQUNWLEtBQUssQ0FBQyxLQUFLLEVBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDZixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWlCLEVBQUUsRUFBRTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxL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
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1YnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zdHVicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUMsT0FBTyxLQUFLLGVBQWUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN6RCxPQUFPLEtBQUssS0FBSyxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUvQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sR0FBVSxFQUFFLEVBQUUsRUFBRSxDQUM1QyxLQUFLLENBQUMsTUFBTSxDQUNWLEtBQUssQ0FBQyxLQUFLLEVBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDZixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWlCLEVBQUUsRUFBRTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDYixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDekIsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN2QixDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUE4QyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQWUsRUFBRSxPQUF5QixFQUFFLEVBQUU7UUFDbkgsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDckUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFLE1BQU0sT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFMUQsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUE7UUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3pCLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDaEQsS0FBSyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN2QixDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQTtRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxHQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUE7WUFDakQsS0FBSyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN2QixDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQTtZQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUMsQ0FBQTtJQUNELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUMvQixLQUFLLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUN6QixPQUFPLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUM3QixPQUFPLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUM3QixJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN2QixPQUFPO0tBQ1IsQ0FBQyxDQUFRLENBQUE7QUFDWixDQUFDLENBQUMsQ0FDSCxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxHQUFvRSxFQUFFLEVBQUUsRUFBRTtJQUM3RyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBYSxDQUFDLENBQUE7SUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQXNCO1FBQ2hELE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztRQUNwQixRQUFRO0tBQ1QsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUViLE9BQU87UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUM7UUFDekQsSUFBSSxhQUFhO1lBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFBO1FBQzNCLENBQUM7S0FDK0MsQ0FBQTtBQUNwRCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEdBQW9FLEVBQUUsRUFBRSxFQUFFLENBQzlHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFeEUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQzdCLE9BQXVHLEVBQ3ZHLEVBQUU7SUFDRixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0YsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQzVFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFFNUYsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBaUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqSCxDQUFDLENBQUE7QUFFRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Q0FBRztBQUNuRSxNQUFNLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFFcEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQ3pELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUE7QUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFBO0FBRTdDLE1BQU0sc0JBQXVCLFNBQVEsY0FBYyxFQUEwQixDQUFDLGVBQWUsRUFBRTtJQUM3RixFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDYixFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0NBQUc7QUFFdEMsTUFBTSxzQ0FDSixTQUFRLGNBQWMsRUFBMEMsQ0FBQyxlQUFlLEVBQUU7SUFDaEYsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ2IsRUFBRTtJQUNELDRFQUE0RTtJQUM1RSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGdCQUFvRDtJQUMvRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDaEIsQ0FBQztDQUNGO0FBRUYsTUFBTSxvQkFBcUIsU0FBUSxnQkFBZ0IsRUFBd0IsQ0FBQyxhQUFhLEVBQUU7SUFDekYsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ2IsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztDQUFHO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixhQUFhLEVBQUUsc0JBQXNCO0lBQ3JDLDZCQUE2QixFQUFFLHNDQUFzQztJQUNyRSxXQUFXLEVBQUUsb0JBQW9CO0NBQ2xDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUNqRSxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQTtBQUVqRCxNQUFNLDBCQUEyQixTQUFRLGtCQUFrQixFQUE4QixDQUFDLGVBQWUsRUFBRTtJQUN6RyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDYixFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0NBQUc7QUFFdEMsTUFBTSwwQ0FDSixTQUFRLGtCQUFrQixFQUE4QyxDQUFDLGVBQWUsRUFBRTtJQUN4RixFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDYixFQUFFO0lBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxnQkFBb0Q7SUFDL0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ2hCLENBQUM7Q0FDRjtBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLDZCQUE2QixFQUFFLDBDQUEwQztDQUMxRSxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLE9BQXVHLEVBQ3ZHLEVBQUU7SUFDRixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0YsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQzVFLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvRSxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FDckMsQ0FBQTtJQUNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBRWpHLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQy9FLENBQUMsQ0FBQSJ9
@@ -4,7 +4,7 @@ import { buildFieldInfoFromFieldsRoot, translate } from "../src/form.js"
4
4
  // test schema with integer field
5
5
  class TestSchema extends S.Class<TestSchema>("TestSchema")({
6
6
  integerField: S.Int,
7
- numberField: S.Number,
7
+ numberField: S.Finite,
8
8
  stringField: S.String
9
9
  }) {}
10
10
 
@@ -137,22 +137,26 @@ it("validates integer field with valid integer", () =>
137
137
  .pipe(Effect.runPromise))
138
138
 
139
139
  it("error message format matches regex pattern", () => {
140
- // test the actual error message format from Effect Schema
141
- const errorMessage = `Int
142
- └─ From side refinement failure
143
- └─ Int
144
- └─ Predicate refinement failure
145
- └─ Expected an integer, actual 59.5`
146
-
147
- const integerMatch = errorMessage.match(/Expected.*integer.*actual\s+(.+)/i)
148
- expect(integerMatch).toBeTruthy()
149
- expect(integerMatch![1]).toBe("59.5")
150
-
151
- const numberErrorMessage = `Number
152
- └─ Type side transformation failure
153
- └─ Expected a number, actual "not-a-number"`
154
-
155
- const numberMatch = numberErrorMessage.match(/Expected.*number.*actual\s+(.+)/i)
156
- expect(numberMatch).toBeTruthy()
157
- expect(numberMatch![1]).toBe("\"not-a-number\"")
140
+ // test the actual error message format from Effect Schema (both old "actual" and new "got" formats)
141
+ const errorMessageOld = `Expected an integer, actual 59.5`
142
+ const errorMessageNew = `SchemaError(Expected an integer, got 59.5)`
143
+
144
+ const oldMatch = errorMessageOld.match(/Expected.*integer.*(?:actual|got)\s+([^)]+)/i)
145
+ expect(oldMatch).toBeTruthy()
146
+ expect(oldMatch![1]).toBe("59.5")
147
+
148
+ const newMatch = errorMessageNew.match(/Expected.*integer.*(?:actual|got)\s+([^)]+)/i)
149
+ expect(newMatch).toBeTruthy()
150
+ expect(newMatch![1]).toBe("59.5")
151
+
152
+ const numberErrorOld = `Expected a number, actual "not-a-number"`
153
+ const numberErrorNew = `SchemaError(Expected a finite number, got "not-a-number")`
154
+
155
+ const numOldMatch = numberErrorOld.match(/Expected.*number.*(?:actual|got)\s+([^)]+)/i)
156
+ expect(numOldMatch).toBeTruthy()
157
+ expect(numOldMatch![1]).toBe("\"not-a-number\"")
158
+
159
+ const numNewMatch = numberErrorNew.match(/Expected.*number.*(?:actual|got)\s+([^)]+)/i)
160
+ expect(numNewMatch).toBeTruthy()
161
+ expect(numNewMatch![1]).toBe("\"not-a-number\"")
158
162
  })
package/test/form.test.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Effect, S } from "effect-app"
2
- import { buildFieldInfoFromFieldsRoot, type DiscriminatedUnionFieldInfo, type FieldInfo, type NestedFieldInfo, type UnionFieldInfo } from "../src/form.js"
2
+ import { buildFieldInfoFromFieldsRoot, type DiscriminatedUnionFieldInfo, type FieldInfo, getMetadataFromSchema, type NestedFieldInfo, type UnionFieldInfo } from "../src/form.js"
3
3
 
4
4
  export class NestedSchema extends S.Class<NestedSchema>("NestedSchema")({
5
5
  shallow: S.String,
@@ -9,7 +9,11 @@ export class NestedSchema extends S.Class<NestedSchema>("NestedSchema")({
9
9
  deepest: S.Number
10
10
  })
11
11
  }),
12
- age: S.Struct({ nfs: S.NumberFromString.pipe(S.decodeTo(S.PositiveInt)) })
12
+ age: S.Struct({ nfs: S.NumberFromString.pipe(S.decodeTo(S.PositiveInt)) }),
13
+ testNumber: S.Number,
14
+ testFinite: S.Finite,
15
+ testNullableNummber: S.NullOr(S.Number),
16
+ testOptionalNumber: S.optional(S.Number)
13
17
  }) {}
14
18
 
15
19
  export class SchemaContainsClass extends S.Class<SchemaContainsClass>("SchemaContainsClass")({
@@ -156,6 +160,15 @@ function testDiscriminatedUnionFieldInfo<T extends Record<PropertyKey, any>>(duf
156
160
  )
157
161
  }
158
162
 
163
+ it("getMetadataFromSchema handles composed numeric schemas", () => {
164
+ expect(getMetadataFromSchema(S.Number.ast).type).toBe("float")
165
+ expect(getMetadataFromSchema(S.Finite.ast).type).toBe("float")
166
+ expect(getMetadataFromSchema(S.PositiveNumber.ast).type).toBe("float")
167
+ expect(getMetadataFromSchema(S.Int.ast).type).toBe("int")
168
+ expect(getMetadataFromSchema(S.PositiveInt.ast).type).toBe("int")
169
+ expect(getMetadataFromSchema(S.NullOr(S.Number).ast).type).toBe("float")
170
+ })
171
+
159
172
  it("buildFieldInfo", () =>
160
173
  Effect
161
174
  .gen(function*() {
@@ -176,6 +189,11 @@ it("buildFieldInfo", () =>
176
189
  testNestedFieldInfo(nestedFieldinfo)
177
190
  testNestedFieldInfo(nestedFieldinfo.fields.nested)
178
191
  testNestedFieldInfo(nestedFieldinfo.fields.age)
192
+
193
+ expect(nestedFieldinfo.fields.testNumber.type).toBe("float")
194
+ expect(nestedFieldinfo.fields.testFinite.type).toBe("float")
195
+ expect(nestedFieldinfo.fields.testNullableNummber.type).toBe("float")
196
+ expect(nestedFieldinfo.fields.testOptionalNumber.type).toBe("float")
179
197
  })
180
198
  .pipe(Effect.runPromise))
181
199
 
@@ -1,94 +1,109 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { type Effect } from "effect-app"
3
- import { Something, useClient, useExperimental } from "./stubs.js"
4
-
5
- it.skip("works2", () => {
6
- const { legacy } = useClient()
7
- const n = legacy.useQuery({
8
- Request: null as any,
9
- handler: null as any as (a: string) => Effect.Effect<number>,
10
- id: "id"
11
- })
2
+ import { makeQueryKey } from "../src/lib.js"
3
+ import { Something, SomethingElse, SomethingElseReq, SomethingReq, useClient, useExperimental } from "./stubs.js"
4
+
5
+ it("TaggedRequestFor .moduleName and request .id / .moduleName", () => {
6
+ expectTypeOf(SomethingReq.moduleName).toEqualTypeOf<"Something">()
7
+ expectTypeOf(SomethingElseReq.moduleName).toEqualTypeOf<"SomethingElse">()
8
+
9
+ expectTypeOf(Something.GetSomething2.moduleName).toEqualTypeOf<"Something">()
10
+ expectTypeOf(Something.GetSomething2.id).toEqualTypeOf<"Something.GetSomething2">()
11
+ expectTypeOf(Something.GetSomething2.type).toEqualTypeOf<"query">()
12
+ expectTypeOf(Something.DoSomething.type).toEqualTypeOf<"command">()
13
+
14
+ expectTypeOf(SomethingElse.GetSomething2.moduleName).toEqualTypeOf<"SomethingElse">()
15
+ expectTypeOf(SomethingElse.GetSomething2.id).toEqualTypeOf<"SomethingElse.GetSomething2">()
16
+ })
12
17
 
13
- const [, z] = n("a")
18
+ it.skip("query type tests", () => {
19
+ const { clientFor } = useClient()
20
+ const client = clientFor(Something, () => ({
21
+ GetSomething2WithDependencies: (queryKey) => [
22
+ { filters: { queryKey } },
23
+ {
24
+ filters: {
25
+ queryKey: makeQueryKey(
26
+ SomethingElse
27
+ .GetSomething2
28
+ )
29
+ }
30
+ }
31
+ ]
32
+ }))
33
+
34
+ const q = client.GetSomething2.query
35
+
36
+ const [, z] = q({ id: "a" })
14
37
  const valz = z.value
15
38
  expectTypeOf(valz).toEqualTypeOf<number | undefined>()
16
39
 
17
- const [, a] = n("a", { placeholderData: () => 123 })
40
+ const [, a] = q({ id: "a" }, { placeholderData: () => 123 })
18
41
  const val1 = a.value
19
42
  expectTypeOf(val1).toEqualTypeOf<number>()
20
43
 
21
- const [, bbbb] = n("a", { select: (data) => data.toString() })
44
+ const [, bbbb] = q({ id: "a" }, { select: (data) => data.toString() })
22
45
  const val = bbbb.value
23
46
  expectTypeOf(val).toEqualTypeOf<string | undefined>()
24
47
 
25
- const [, ccc] = n("a", { placeholderData: () => 123, select: (data) => data.toString() })
48
+ const [, ccc] = q({ id: "a" }, { placeholderData: () => 123, select: (data) => data.toString() })
26
49
  const val2 = ccc.value
27
50
  expectTypeOf(val2).toEqualTypeOf<string>()
28
51
 
29
- const [, ddd] = n("a", { initialData: 123, select: (data) => data.toString() })
52
+ const [, ddd] = q({ id: "a" }, { initialData: 123, select: (data) => data.toString() })
30
53
  const val3 = ddd.value
31
54
  expectTypeOf(val3).toEqualTypeOf<string>()
32
55
 
33
- const [, eee] = n("a", { initialData: 123, placeholderData: () => 123, select: (data) => data.toString() })
56
+ const [, eee] = q({ id: "a" }, { initialData: 123, placeholderData: () => 123, select: (data) => data.toString() })
34
57
  const val4 = eee.value
35
58
  expectTypeOf(val4).toEqualTypeOf<string>()
36
59
  })
37
60
 
38
61
  it.skip("works", () => {
39
- const { clientFor, legacy } = useClient()
62
+ const { clientFor } = useClient()
40
63
  const client = clientFor(Something)
41
64
  const Command = useExperimental()
42
65
 
43
66
  // just for jsdoc / type testing.
44
- const a0 = client.GetSomething2(null as any)
45
- const a00 = client.GetSomething2.mutate(null as any)
67
+ const a0 = client.GetSomething2.request(null as any)
68
+ const a00 = client.DoSomething.mutate(null as any)
46
69
  const a = client.GetSomething2.suspense(null as any)
47
70
  const b = client.GetSomething2.query(null as any)
48
71
 
49
- const c0 = legacy.useSafeMutation(null as any)
50
- const c = legacy.useQuery(null as any)
51
- const d = legacy.useSuspenseQuery(null as any)
52
-
72
+ // @ts-expect-error query requests no longer expose command helpers
53
73
  const e = client.GetSomething2.wrap(null as any)
74
+ // @ts-expect-error query requests no longer expose command helpers
54
75
  const f = client.GetSomething2.fn(null as any)
55
76
 
56
- // @ts-expect-error dependencies required that are not provided
57
- const e0 = client.GetSomething2WithDependencies.wrap().handle // not available as we require dependencies not provided by the runtime
58
- // @ts-expect-error dependencies required that are not provided
59
- const e000 = Command.wrap(client.GetSomething2WithDependencies)().handle // not available as we require dependencies not provided by the runtime
60
- const e00 = client.GetSomething2WithDependencies.wrap((_) => _ as Effect.Effect<number, never, never>).handle(
61
- null as any
62
- )
63
- const e0000 =
64
- Command.wrap(client.GetSomething2WithDependencies)((_) => _ as Effect.Effect<number, never, never>).handle
77
+ // @ts-expect-error query requests no longer expose command helpers
78
+ const e0 = client.GetSomething2WithDependencies.wrap
79
+ // @ts-expect-error query request does not match Command.wrap mutation signature
80
+ const e000 = Command.wrap(client.GetSomething2WithDependencies)
65
81
  // @ts-expect-error dependencies required that are not provided
66
82
  const e1 = client.GetSomething2WithDependencies.suspense(null as any)
67
83
  // @ts-expect-error dependencies required that are not provided
68
84
  const e2 = client.GetSomething2WithDependencies.query(null as any)
85
+ // @ts-expect-error query requests no longer expose command helpers
69
86
  const f0 = client.GetSomething2WithDependencies.fn(null as any)
70
87
 
71
- const g = client.GetSomething2.mutate.wrap(null as any)
72
- const h = client.GetSomething2.mutate.fn(null as any)
88
+ const g0 = client.DoSomething.wrap(null as any)
89
+ const g = client.DoSomething.mutate.wrap(null as any)
90
+ // @ts-expect-error mutate no longer exposes fn, use client.DoSomething.fn
91
+ const h = client.DoSomething.mutate.fn(null as any)
73
92
 
74
93
  expect(true).toBe(true)
75
94
  console.log({
76
95
  a,
77
96
  a0,
78
97
  a00,
79
- c0,
80
98
  b,
81
- c,
82
- d,
83
99
  e,
84
100
  e0,
85
- e00,
86
101
  e000,
87
- e0000,
88
102
  e1,
89
103
  e2,
90
104
  f,
91
105
  f0,
106
+ g0,
92
107
  g,
93
108
  h
94
109
  })
package/test/stubs.ts CHANGED
@@ -6,13 +6,13 @@ import { ApiClientFactory, makeRpcClient } from "effect-app/client"
6
6
  import { RpcContextMap } from "effect-app/rpc"
7
7
  import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient"
8
8
  import { ref } from "vue"
9
- import { Commander } from "../src/experimental/commander.js"
10
- import { I18n } from "../src/experimental/intl.js"
11
- import { makeUseCommand } from "../src/experimental/makeUseCommand.js"
12
- import * as Toast from "../src/experimental/toast.js"
13
- import { WithToast } from "../src/experimental/withToast.js"
14
- import { LegacyMutation, makeClient } from "../src/makeClient.js"
9
+ import { Commander } from "../src/commander.js"
10
+ import { I18n } from "../src/intl.js"
11
+ import { makeClient } from "../src/makeClient.js"
15
12
  import { type MakeIntlReturn } from "../src/makeIntl.js"
13
+ import { makeUseCommand } from "../src/makeUseCommand.js"
14
+ import * as Toast from "../src/toast.js"
15
+ import { WithToast } from "../src/withToast.js"
16
16
 
17
17
  const fakeToastLayer = (toasts: any[] = []) =>
18
18
  Layer.effect(
@@ -26,21 +26,21 @@ const fakeToastLayer = (toasts: any[] = []) =>
26
26
  toasts.splice(idx, 1)
27
27
  }
28
28
  }
29
- const fakeToast = (message: string, options?: Toast.ToastOpts) => {
29
+ const fakeToast = (type: "error" | "warning" | "success" | "info") => (message: string, options?: Toast.ToastOpts) => {
30
30
  const id = options?.id ?? Math.random().toString(36).substring(2, 15)
31
- console.log(`Toast [${id}]: ${message}`, options)
31
+ console.log(`Toast [${type}][${id}]: ${message}`, options)
32
32
 
33
33
  options = { ...options, id }
34
34
  const idx = toasts.findIndex((_) => _.id === id)
35
35
  if (idx > -1) {
36
36
  const toast = toasts[idx]
37
37
  clearTimeout(toast.timeoutId)
38
- Object.assign(toast, { message, options })
38
+ Object.assign(toast, { type, message, options })
39
39
  toast.timeoutId = setTimeout(() => {
40
40
  toasts.splice(idx, 1)
41
41
  }, options?.timeout ?? 3000)
42
42
  } else {
43
- const toast: any = { id, message, options }
43
+ const toast: any = { id, type, message, options }
44
44
  toast.timeoutId = setTimeout(() => {
45
45
  toasts.splice(idx, 1)
46
46
  }, options?.timeout ?? 3000)
@@ -49,10 +49,10 @@ const fakeToastLayer = (toasts: any[] = []) =>
49
49
  return id
50
50
  }
51
51
  return Toast.Toast.of(Toast.wrap({
52
- error: fakeToast,
53
- warning: fakeToast,
54
- success: fakeToast,
55
- info: fakeToast,
52
+ error: fakeToast("error"),
53
+ warning: fakeToast("warning"),
54
+ success: fakeToast("success"),
55
+ info: fakeToast("info"),
56
56
  dismiss
57
57
  })) as any
58
58
  })
@@ -92,20 +92,56 @@ export const useExperimental = (
92
92
  }
93
93
 
94
94
  export class RequestContextMap extends RpcContextMap.makeMap({}) {}
95
- export const { TaggedRequest: Req } = makeRpcClient(RequestContextMap)
96
- export class GetSomething2 extends Req<GetSomething2>()("GetSomething2", {
95
+ export const { TaggedRequestFor } = makeRpcClient(RequestContextMap)
96
+
97
+ export const SomethingReq = TaggedRequestFor("Something")
98
+ const SomethingQuery = SomethingReq.Query
99
+ const SomethingCommand = SomethingReq.Command
100
+
101
+ class SomethingGetSomething2 extends SomethingQuery<SomethingGetSomething2>()("GetSomething2", {
102
+ id: S.String
103
+ }, { success: S.FiniteFromString }) {}
104
+
105
+ class SomethingGetSomething2WithDependencies
106
+ extends SomethingQuery<SomethingGetSomething2WithDependencies>()("GetSomething2", {
107
+ id: S.String
108
+ }, {
109
+ // this is intentilally fake, to simulate a codec that requires a dependency
110
+ success: S.FiniteFromString as S.Codec<number, string, "dep-a">,
111
+ error: S.String
112
+ })
113
+ {}
114
+
115
+ class SomethingDoSomething extends SomethingCommand<SomethingDoSomething>()("DoSomething", {
97
116
  id: S.String
98
- }, { success: S.NumberFromString }) {}
117
+ }, { success: S.FiniteFromString }) {}
99
118
 
100
- export class GetSomething2WithDependencies extends Req<GetSomething2WithDependencies>()("GetSomething2", {
119
+ export const Something = {
120
+ GetSomething2: SomethingGetSomething2,
121
+ GetSomething2WithDependencies: SomethingGetSomething2WithDependencies,
122
+ DoSomething: SomethingDoSomething
123
+ }
124
+
125
+ export const SomethingElseReq = TaggedRequestFor("SomethingElse")
126
+ const SomethingElseQuery = SomethingElseReq.Query
127
+
128
+ class SomethingElseGetSomething2 extends SomethingElseQuery<SomethingElseGetSomething2>()("GetSomething2", {
101
129
  id: S.String
102
- }, {
103
- // this is intentilally fake, to simulate a codec that requires a dependency
104
- success: S.NumberFromString as S.Codec<number, string, "dep-a">,
105
- error: S.String
106
- }) {}
130
+ }, { success: S.FiniteFromString }) {}
107
131
 
108
- export const Something = { GetSomething2, GetSomething2WithDependencies, meta: { moduleName: "Something" as const } }
132
+ class SomethingElseGetSomething2WithDependencies
133
+ extends SomethingElseQuery<SomethingElseGetSomething2WithDependencies>()("GetSomething2", {
134
+ id: S.String
135
+ }, {
136
+ success: S.FiniteFromString as S.Codec<number, string, "dep-a">,
137
+ error: S.String
138
+ })
139
+ {}
140
+
141
+ export const SomethingElse = {
142
+ GetSomething2: SomethingElseGetSomething2,
143
+ GetSomething2WithDependencies: SomethingElseGetSomething2WithDependencies
144
+ }
109
145
 
110
146
  export const useClient = (
111
147
  options?: { messages?: Record<string, string> | Record<string, MessageFormatElement[]>; toasts: any[] }
@@ -117,8 +153,7 @@ export const useClient = (
117
153
  const api = ApiClientFactory.layer({ url: "bogus", headers: Option.none() }).pipe(
118
154
  Layer.provide(FetchHttpClient.layer)
119
155
  )
120
- const lm = LegacyMutation.Default.pipe(Layer.provide([FakeIntlLayer, FakeToastLayer]))
121
- const layers = Layer.mergeAll(CommanderLayer, WithToastLayer, FakeToastLayer, FakeIntlLayer, api, lm)
156
+ const layers = Layer.mergeAll(CommanderLayer, WithToastLayer, FakeToastLayer, FakeIntlLayer, api)
122
157
 
123
158
  const clientFor_ = ApiClientFactory.makeFor(Layer.empty)
124
159
  return makeClient(() => ManagedRuntime.make(layers), clientFor_, Layer.empty)
package/tsconfig.json CHANGED
@@ -32,7 +32,6 @@
32
32
  "outDir": "build/dist",
33
33
  "resolveJsonModule": true,
34
34
  "moduleResolution": "Node16",
35
- "downlevelIteration": true,
36
35
  "noErrorTruncation": true,
37
36
  "forceConsistentCasingInFileNames": true,
38
37
  "types": [