effect-app 4.0.0-beta.21 → 4.0.0-beta.211

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 (219) hide show
  1. package/CHANGELOG.md +954 -0
  2. package/dist/Array.d.ts +1 -1
  3. package/dist/Chunk.d.ts +1 -1
  4. package/dist/Chunk.d.ts.map +1 -1
  5. package/dist/Config/SecretURL.d.ts +1 -1
  6. package/dist/Config/SecretURL.d.ts.map +1 -1
  7. package/dist/Config/SecretURL.js +2 -2
  8. package/dist/Config/internal/configSecretURL.d.ts +1 -1
  9. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  10. package/dist/Config.d.ts +7 -0
  11. package/dist/Config.d.ts.map +1 -0
  12. package/dist/Config.js +6 -0
  13. package/dist/ConfigProvider.d.ts +39 -0
  14. package/dist/ConfigProvider.d.ts.map +1 -0
  15. package/dist/ConfigProvider.js +42 -0
  16. package/dist/Context.d.ts +40 -0
  17. package/dist/Context.d.ts.map +1 -0
  18. package/dist/Context.js +67 -0
  19. package/dist/Effect.d.ts +9 -10
  20. package/dist/Effect.d.ts.map +1 -1
  21. package/dist/Effect.js +3 -6
  22. package/dist/Function.d.ts +1 -1
  23. package/dist/Function.d.ts.map +1 -1
  24. package/dist/Inputify.type.d.ts +1 -1
  25. package/dist/Layer.d.ts +7 -6
  26. package/dist/Layer.d.ts.map +1 -1
  27. package/dist/Layer.js +1 -1
  28. package/dist/NonEmptySet.d.ts +1 -1
  29. package/dist/NonEmptySet.d.ts.map +1 -1
  30. package/dist/Option.d.ts +1 -1
  31. package/dist/Option.d.ts.map +1 -1
  32. package/dist/Pure.d.ts +5 -5
  33. package/dist/Pure.d.ts.map +1 -1
  34. package/dist/Pure.js +13 -13
  35. package/dist/Schema/Class.d.ts +66 -20
  36. package/dist/Schema/Class.d.ts.map +1 -1
  37. package/dist/Schema/Class.js +189 -22
  38. package/dist/Schema/FastCheck.d.ts +1 -1
  39. package/dist/Schema/FastCheck.d.ts.map +1 -1
  40. package/dist/Schema/Methods.d.ts +1 -1
  41. package/dist/Schema/SchemaParser.d.ts +5 -0
  42. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  43. package/dist/Schema/SchemaParser.js +6 -0
  44. package/dist/Schema/SpecialJsonSchema.d.ts +33 -0
  45. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  46. package/dist/Schema/SpecialJsonSchema.js +122 -0
  47. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  48. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  49. package/dist/Schema/SpecialOpenApi.js +123 -0
  50. package/dist/Schema/brand.d.ts +4 -2
  51. package/dist/Schema/brand.d.ts.map +1 -1
  52. package/dist/Schema/brand.js +1 -1
  53. package/dist/Schema/email.d.ts +1 -1
  54. package/dist/Schema/email.d.ts.map +1 -1
  55. package/dist/Schema/email.js +7 -4
  56. package/dist/Schema/ext.d.ts +117 -45
  57. package/dist/Schema/ext.d.ts.map +1 -1
  58. package/dist/Schema/ext.js +131 -42
  59. package/dist/Schema/moreStrings.d.ts +37 -25
  60. package/dist/Schema/moreStrings.d.ts.map +1 -1
  61. package/dist/Schema/moreStrings.js +15 -16
  62. package/dist/Schema/numbers.d.ts +15 -15
  63. package/dist/Schema/numbers.d.ts.map +1 -1
  64. package/dist/Schema/numbers.js +10 -12
  65. package/dist/Schema/phoneNumber.d.ts +1 -1
  66. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  67. package/dist/Schema/phoneNumber.js +6 -3
  68. package/dist/Schema/schema.d.ts +1 -1
  69. package/dist/Schema/strings.d.ts +5 -5
  70. package/dist/Schema/strings.d.ts.map +1 -1
  71. package/dist/Schema/strings.js +1 -5
  72. package/dist/Schema.d.ts +147 -15
  73. package/dist/Schema.d.ts.map +1 -1
  74. package/dist/Schema.js +131 -16
  75. package/dist/Set.d.ts +1 -1
  76. package/dist/Set.d.ts.map +1 -1
  77. package/dist/TypeTest.d.ts +1 -1
  78. package/dist/Types.d.ts +1 -1
  79. package/dist/Widen.type.d.ts +1 -1
  80. package/dist/_ext/Array.d.ts +1 -1
  81. package/dist/_ext/Array.d.ts.map +1 -1
  82. package/dist/_ext/date.d.ts +1 -1
  83. package/dist/_ext/misc.d.ts +1 -1
  84. package/dist/_ext/ord.ext.d.ts +1 -1
  85. package/dist/_ext/ord.ext.d.ts.map +1 -1
  86. package/dist/builtin.d.ts +1 -1
  87. package/dist/builtin.d.ts.map +1 -1
  88. package/dist/client/InvalidationKeys.d.ts +29 -0
  89. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  90. package/dist/client/InvalidationKeys.js +33 -0
  91. package/dist/client/apiClientFactory.d.ts +20 -32
  92. package/dist/client/apiClientFactory.d.ts.map +1 -1
  93. package/dist/client/apiClientFactory.js +95 -32
  94. package/dist/client/clientFor.d.ts +51 -17
  95. package/dist/client/clientFor.d.ts.map +1 -1
  96. package/dist/client/clientFor.js +9 -1
  97. package/dist/client/errors.d.ts +49 -25
  98. package/dist/client/errors.d.ts.map +1 -1
  99. package/dist/client/errors.js +43 -17
  100. package/dist/client/makeClient.d.ts +481 -33
  101. package/dist/client/makeClient.d.ts.map +1 -1
  102. package/dist/client/makeClient.js +66 -24
  103. package/dist/client.d.ts +2 -1
  104. package/dist/client.d.ts.map +1 -1
  105. package/dist/client.js +2 -1
  106. package/dist/faker.d.ts +1 -1
  107. package/dist/faker.d.ts.map +1 -1
  108. package/dist/http/Request.d.ts +2 -2
  109. package/dist/http/Request.d.ts.map +1 -1
  110. package/dist/http/internal/lib.d.ts +1 -1
  111. package/dist/http.d.ts +1 -1
  112. package/dist/ids.d.ts +12 -12
  113. package/dist/ids.d.ts.map +1 -1
  114. package/dist/ids.js +3 -2
  115. package/dist/index.d.ts +5 -8
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +6 -8
  118. package/dist/logger.d.ts +1 -1
  119. package/dist/middleware.d.ts +14 -8
  120. package/dist/middleware.d.ts.map +1 -1
  121. package/dist/middleware.js +14 -8
  122. package/dist/rpc/Invalidation.d.ts +402 -0
  123. package/dist/rpc/Invalidation.d.ts.map +1 -0
  124. package/dist/rpc/Invalidation.js +150 -0
  125. package/dist/rpc/MiddlewareMaker.d.ts +5 -4
  126. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  127. package/dist/rpc/MiddlewareMaker.js +57 -37
  128. package/dist/rpc/RpcContextMap.d.ts +3 -3
  129. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  130. package/dist/rpc/RpcContextMap.js +4 -4
  131. package/dist/rpc/RpcMiddleware.d.ts +5 -4
  132. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  133. package/dist/rpc/RpcMiddleware.js +1 -1
  134. package/dist/rpc.d.ts +2 -2
  135. package/dist/rpc.d.ts.map +1 -1
  136. package/dist/rpc.js +2 -2
  137. package/dist/transform.d.ts +1 -1
  138. package/dist/transform.d.ts.map +1 -1
  139. package/dist/transform.js +3 -3
  140. package/dist/utils/effectify.d.ts +1 -1
  141. package/dist/utils/extend.d.ts +1 -1
  142. package/dist/utils/extend.d.ts.map +1 -1
  143. package/dist/utils/gen.d.ts +2 -2
  144. package/dist/utils/gen.d.ts.map +1 -1
  145. package/dist/utils/logLevel.d.ts +2 -2
  146. package/dist/utils/logLevel.d.ts.map +1 -1
  147. package/dist/utils/logger.d.ts +3 -3
  148. package/dist/utils/logger.d.ts.map +1 -1
  149. package/dist/utils/logger.js +3 -3
  150. package/dist/utils.d.ts +31 -38
  151. package/dist/utils.d.ts.map +1 -1
  152. package/dist/utils.js +12 -25
  153. package/dist/validation/validators.d.ts +1 -1
  154. package/dist/validation/validators.d.ts.map +1 -1
  155. package/dist/validation.d.ts +1 -1
  156. package/dist/validation.d.ts.map +1 -1
  157. package/package.json +46 -24
  158. package/src/Config/SecretURL.ts +2 -1
  159. package/src/Config.ts +14 -0
  160. package/src/ConfigProvider.ts +48 -0
  161. package/src/{ServiceMap.ts → Context.ts} +52 -59
  162. package/src/Effect.ts +12 -14
  163. package/src/Layer.ts +6 -5
  164. package/src/Pure.ts +17 -18
  165. package/src/Schema/Class.ts +268 -62
  166. package/src/Schema/SchemaParser.ts +12 -0
  167. package/src/Schema/SpecialJsonSchema.ts +137 -0
  168. package/src/Schema/SpecialOpenApi.ts +130 -0
  169. package/src/Schema/brand.ts +21 -1
  170. package/src/Schema/email.ts +7 -2
  171. package/src/Schema/ext.ts +204 -72
  172. package/src/Schema/moreStrings.ts +40 -37
  173. package/src/Schema/numbers.ts +14 -16
  174. package/src/Schema/phoneNumber.ts +5 -1
  175. package/src/Schema/strings.ts +4 -8
  176. package/src/Schema.ts +314 -20
  177. package/src/client/InvalidationKeys.ts +50 -0
  178. package/src/client/apiClientFactory.ts +223 -129
  179. package/src/client/clientFor.ts +95 -29
  180. package/src/client/errors.ts +52 -26
  181. package/src/client/makeClient.ts +572 -71
  182. package/src/client.ts +1 -0
  183. package/src/ids.ts +3 -2
  184. package/src/index.ts +5 -10
  185. package/src/middleware.ts +13 -9
  186. package/src/rpc/Invalidation.ts +226 -0
  187. package/src/rpc/MiddlewareMaker.ts +65 -60
  188. package/src/rpc/README.md +2 -2
  189. package/src/rpc/RpcContextMap.ts +6 -5
  190. package/src/rpc/RpcMiddleware.ts +5 -4
  191. package/src/rpc.ts +1 -1
  192. package/src/transform.ts +2 -2
  193. package/src/utils/gen.ts +1 -1
  194. package/src/utils/logger.ts +2 -2
  195. package/src/utils.ts +50 -132
  196. package/test/dist/rpc.test.d.ts.map +1 -1
  197. package/test/dist/secretURL.test.d.ts.map +1 -0
  198. package/test/dist/special.test.d.ts.map +1 -0
  199. package/test/dist/stream-error.types.d.ts +2 -0
  200. package/test/dist/stream-error.types.d.ts.map +1 -0
  201. package/test/dist/stream-error.types.js +27 -0
  202. package/test/rpc.test.ts +45 -6
  203. package/test/schema.test.ts +581 -7
  204. package/test/secretURL.test.ts +157 -0
  205. package/test/special.test.ts +1023 -0
  206. package/test/utils.test.ts +6 -6
  207. package/tsconfig.base.json +3 -4
  208. package/tsconfig.json +0 -1
  209. package/tsconfig.json.bak +2 -2
  210. package/tsconfig.src.json +29 -29
  211. package/tsconfig.test.json +2 -2
  212. package/dist/Operations.d.ts +0 -123
  213. package/dist/Operations.d.ts.map +0 -1
  214. package/dist/Operations.js +0 -29
  215. package/dist/ServiceMap.d.ts +0 -44
  216. package/dist/ServiceMap.d.ts.map +0 -1
  217. package/dist/ServiceMap.js +0 -91
  218. package/eslint.config.mjs +0 -26
  219. package/src/Operations.ts +0 -55
@@ -10,4 +10,4 @@ export declare function uniq<A>(E: Equivalence.Equivalence<A>): (self: Chunk.Chu
10
10
  * in an array of type `Chunk.Chunk<A>`.
11
11
  */
12
12
  export declare function elem<A>(E: Equivalence.Equivalence<A>, value: A): (self: Chunk.Chunk<A>) => boolean;
13
- //# sourceMappingURL=ord.ext.d.ts.map
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkLmV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19leHQvb3JkLmV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWhELHdCQUFnQixPQUFPLENBQUMsQ0FBQyxFQUN2QixHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BR2pDO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQVU5QztBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUMvQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFHLE9BQU8sQ0FRdkMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"ord.ext.d.ts","sourceRoot":"","sources":["../../src/_ext/ord.ext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEhD,wBAAgB,OAAO,CAAC,CAAC,EACvB,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAGjC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,IAC3C,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IACrD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,OAAO,CAQvC"}
1
+ {"version":3,"file":"ord.ext.d.ts","sourceRoot":"","sources":["../../src/_ext/ord.ext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEhD,wBAAgB,OAAO,CAAC,CAAC,EACvB,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAGjC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,UACrC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAC/C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,OAAO,CAQvC"}
package/dist/builtin.d.ts CHANGED
@@ -40,4 +40,4 @@ declare module "effect/Option" {
40
40
  get value(): A | undefined;
41
41
  }
42
42
  }
43
- //# sourceMappingURL=builtin.d.ts.map
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2J1aWx0aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXhFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNkLFVBQVUsTUFBTTtRQUNkOzs7O1dBSUc7UUFDSCxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUE7U0FBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFcEg7Ozs7V0FJRztRQUNILEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0tBQ3pFO0lBRUQsVUFBVSxJQUFJO1FBQ1o7Ozs7O1dBS0c7UUFDSCxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsR0FBRyxPQUFPLENBQUE7S0FDcEY7SUFFRCxVQUFVLElBQUk7UUFDWixJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ3pCO0lBRUQsVUFBVSxLQUFLLENBQUMsQ0FBQztRQUNmLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNOLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ3RCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLEdBQzlCLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNwQjtJQUNELFVBQVUsYUFBYSxDQUFDLENBQUM7UUFJdkIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ04sSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUM5QixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUM5QixxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUM1QjtDQUNGO0FBRUQsT0FBTyxRQUFRLGVBQWUsQ0FBQyxDQUFDO0lBQzlCLFVBQWlCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFBO0tBQzNCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../src/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAExE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd;;;;WAIG;QACH,KAAK,CAAC,QAAQ,EAAE;YAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;SAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QAEpH;;;;WAIG;QACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;KACzE;IAED,UAAU,IAAI;QACZ;;;;;WAKG;QACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,CAAA;KACpF;IAED,UAAU,IAAI;QACZ,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;KACzB;IAED,UAAU,KAAK,CAAC,CAAC;QACf,GAAG,CAAC,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAC9B,aAAa,CAAC,CAAC,CAAC,CAAA;KACpB;IACD,UAAU,aAAa,CAAC,CAAC;QAIvB,GAAG,CAAC,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAC9B,qBAAqB,CAAC,CAAC,CAAC,CAAA;KAC5B;CACF;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAiB,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;KAC3B;CACF"}
1
+ {"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../src/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAExE,OAAO,CAAC,MAAM,CAAC,CAAC;IACd,UAAU,MAAM;QACd;;;;WAIG;QACH,KAAK,CAAC,QAAQ,EAAE;YAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;SAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QAEpH;;;;WAIG;QACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;KACzE;IAED,UAAU,IAAI;QACZ;;;;;WAKG;QACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,CAAA;KACpF;IAED,UAAU,IAAI;QACZ,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;KACzB;IAED,UAAU,KAAK,CAAC,CAAC;QACf,GAAG,CAAC,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAC9B,aAAa,CAAC,CAAC,CAAC,CAAA;KACpB;IACD,UAAU,aAAa,CAAC,CAAC;QAIvB,GAAG,CAAC,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAC9B,qBAAqB,CAAC,CAAC,CAAC,CAAA;KAC5B;CACF;AAED,OAAO,QAAQ,eAAe,CAAC,CAAC;IAC9B,UAAiB,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;KAC3B;CACF"}
@@ -0,0 +1,29 @@
1
+ import * as Ref from "effect/Ref";
2
+ import * as Context from "../Context.js";
3
+ import * as Effect from "../Effect.js";
4
+ import type { InvalidationKey } from "../rpc/Invalidation.js";
5
+ export type { InvalidationKey };
6
+ /** Shape of the per-mutation service that accumulates server-provided invalidation keys. */
7
+ export interface InvalidationKeysService {
8
+ readonly add: (key: InvalidationKey) => Effect.Effect<void>;
9
+ readonly get: Effect.Effect<ReadonlyArray<InvalidationKey>>;
10
+ }
11
+ /**
12
+ * Context.Reference that accumulates invalidation keys received from the server via the
13
+ * `x-invalidate` HTTP response header.
14
+ *
15
+ * The default is a no-op: when not explicitly provided (e.g. outside a mutation wrapper)
16
+ * all calls are ignored. The mutation wrapper in `@effect-app/vue` provides a real
17
+ * implementation backed by a `Ref`.
18
+ */
19
+ export declare const InvalidationKeysFromServer: Context.Reference<InvalidationKeysService>;
20
+ export type InvalidationKeysFromServer = typeof InvalidationKeysFromServer;
21
+ /**
22
+ * Creates a fresh `InvalidationKeysService` implementation backed by a `Ref`.
23
+ *
24
+ * @param ref - The `Ref` that stores the accumulated keys.
25
+ * @param onAdded - V3: Optional Effect run after a key is added. Use to trigger mid-stream
26
+ * query invalidation without waiting for the stream to complete.
27
+ */
28
+ export declare const makeInvalidationKeysService: (ref: Ref.Ref<ReadonlyArray<InvalidationKey>>, onAdded?: (key: InvalidationKey) => Effect.Effect<void>) => InvalidationKeysService;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZGF0aW9uS2V5cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9JbnZhbGlkYXRpb25LZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRTdELFlBQVksRUFBRSxlQUFlLEVBQUUsQ0FBQTtBQUMvQiw0RkFBNEY7QUFDNUYsTUFBTSxXQUFXLHVCQUF1QjtJQUN0QyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLGVBQWUsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNELFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtDQUM1RDtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxlQUFPLE1BQU0sMEJBQTBCLDRDQVF0QyxDQUFBO0FBQ0QsTUFBTSxNQUFNLDBCQUEwQixHQUFHLE9BQU8sMEJBQTBCLENBQUE7QUFFMUU7Ozs7OztHQU1HO0FBQ0gsZUFBTyxNQUFNLDJCQUEyQixRQUNqQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxZQUNsQyxDQUFDLEdBQUcsRUFBRSxlQUFlLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FDdEQsdUJBUUQsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidationKeys.d.ts","sourceRoot":"","sources":["../../src/client/InvalidationKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,YAAY,EAAE,eAAe,EAAE,CAAA;AAC/B,4FAA4F;AAC5F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;CAC5D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,4CAQtC,CAAA;AACD,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QACjC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,YAClC,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KACtD,uBAQD,CAAA"}
@@ -0,0 +1,33 @@
1
+ import * as Ref from "effect/Ref";
2
+ import * as Context from "../Context.js";
3
+ import * as Effect from "../Effect.js";
4
+ /**
5
+ * Context.Reference that accumulates invalidation keys received from the server via the
6
+ * `x-invalidate` HTTP response header.
7
+ *
8
+ * The default is a no-op: when not explicitly provided (e.g. outside a mutation wrapper)
9
+ * all calls are ignored. The mutation wrapper in `@effect-app/vue` provides a real
10
+ * implementation backed by a `Ref`.
11
+ */
12
+ export const InvalidationKeysFromServer = Context.Reference("effect-app/client/InvalidationKeysFromServer", {
13
+ defaultValue: () => ({
14
+ add: (_key) => Effect.void,
15
+ get: Effect.succeed([])
16
+ })
17
+ });
18
+ /**
19
+ * Creates a fresh `InvalidationKeysService` implementation backed by a `Ref`.
20
+ *
21
+ * @param ref - The `Ref` that stores the accumulated keys.
22
+ * @param onAdded - V3: Optional Effect run after a key is added. Use to trigger mid-stream
23
+ * query invalidation without waiting for the stream to complete.
24
+ */
25
+ export const makeInvalidationKeysService = (ref, onAdded) => ({
26
+ // When onAdded is set, fire it immediately without accumulating in the ref —
27
+ // the key is handled on arrival and must not be re-processed at stream end.
28
+ add: (key) => onAdded
29
+ ? onAdded(key)
30
+ : Ref.update(ref, (keys) => [...keys, key]),
31
+ get: Ref.get(ref)
32
+ });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZGF0aW9uS2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvSW52YWxpZGF0aW9uS2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssR0FBRyxNQUFNLFlBQVksQ0FBQTtBQUNqQyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQVV0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FDekQsOENBQThDLEVBQzlDO0lBQ0UsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkIsR0FBRyxFQUFFLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDM0MsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBb0MsQ0FBQztLQUMxRCxDQUFDO0NBQ0gsQ0FDRixDQUFBO0FBR0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsR0FBNEMsRUFDNUMsT0FBdUQsRUFDOUIsRUFBRSxDQUFDLENBQUM7SUFDN0IsNkVBQTZFO0lBQzdFLDRFQUE0RTtJQUM1RSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNYLE9BQU87UUFDTCxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNkLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDbEIsQ0FBQyxDQUFBIn0=
@@ -1,12 +1,12 @@
1
- import * as Config from "effect/Config";
2
1
  import * as Layer from "effect/Layer";
2
+ import * as Option from "effect/Option";
3
3
  import { Rpc, RpcGroup, RpcSerialization } from "effect/unstable/rpc";
4
+ import * as Config from "../Config.js";
5
+ import * as Context from "../Context.js";
4
6
  import * as Effect from "../Effect.js";
5
7
  import { HttpClient } from "../http.js";
6
- import * as Option from "../Option.js";
7
8
  import type * as S from "../Schema.js";
8
- import * as ServiceMap from "../ServiceMap.js";
9
- import type { Client, ClientForOptions, Requests, RequestsAny } from "./clientFor.js";
9
+ import type { ClientForOptions, ExtractModuleName, RequestsAny } from "./clientFor.js";
10
10
  export interface ApiConfig {
11
11
  url: string;
12
12
  headers: Option.Option<Record<string, string>>;
@@ -18,13 +18,19 @@ export declare const DefaultApiConfig: Config.Config<{
18
18
  }>;
19
19
  }>;
20
20
  export type Req = S.Top & {
21
- new (...args: any[]): any;
21
+ readonly make: (...args: any[]) => any;
22
22
  _tag: string;
23
23
  fields: S.Struct.Fields;
24
24
  success: S.Top;
25
25
  error: S.Top;
26
+ /** Optional final-value schema for stream requests. When set, the execute effect resolves with the last stream value decoded to this type. */
27
+ final?: S.Top;
26
28
  config?: Record<string, any>;
27
- readonly "~decodingServices"?: unknown;
29
+ readonly id: string;
30
+ readonly moduleName: string;
31
+ readonly type: "command" | "query";
32
+ readonly stream: boolean;
33
+ readonly middleware?: unknown;
28
34
  };
29
35
  export declare const HttpClientLayer: (config: ApiConfig) => Layer.Layer<HttpClient.HttpClient, never, HttpClient.HttpClient>;
30
36
  export declare const HttpClientFromConfigLayer: Layer.Layer<HttpClient.HttpClient, Config.ConfigError, HttpClient.HttpClient>;
@@ -32,37 +38,19 @@ export declare const RpcSerializationLayer: (config: ApiConfig) => Layer.Layer<H
32
38
  type RpcHandlers<M extends RequestsAny> = {
33
39
  [K in keyof M]: Rpc.Rpc<M[K]["_tag"], M[K], M[K]["success"], M[K]["error"]>;
34
40
  };
35
- export declare const getMeta: <M extends Requests>(resource: M) => M["meta"];
36
- export declare const makeRpcGroupFromRequestsAndModuleName: <M extends Requests, const ModuleName extends string>(resource: M, moduleName: ModuleName) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<{ [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }>[keyof { [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }], `${ModuleName}.`>>;
37
- export declare const makeRpcGroup: <M extends Requests, const ModuleName extends string>(resource: M & {
38
- meta: {
39
- moduleName: ModuleName;
40
- };
41
- }) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<M & {
42
- meta: {
43
- moduleName: ModuleName;
44
- };
45
- } extends infer T extends Requests ? { [K in keyof T as (M & {
46
- meta: {
47
- moduleName: ModuleName;
48
- };
49
- })[K] extends Req ? K : never]: T[K] extends Req ? T[K] : never; } : never>[keyof (M & {
50
- meta: {
51
- moduleName: ModuleName;
52
- };
53
- } extends infer T_1 extends Requests ? { [K in keyof T_1 as (M & {
54
- meta: {
55
- moduleName: ModuleName;
56
- };
57
- })[K] extends Req ? K : never]: T_1[K] extends Req ? T_1[K] : never; } : never)], `${ModuleName}.`>>;
58
- declare const ApiClientFactory_base: ServiceMap.OpaqueClass<ApiClientFactory, "ApiClientFactory", (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<Client<M, M["meta"]["moduleName"]>>>;
41
+ export declare const getMeta: <M extends RequestsAny>(resource: M) => {
42
+ moduleName: ExtractModuleName<M>;
43
+ middleware?: unknown;
44
+ };
45
+ export declare const makeRpcGroupFromRequestsAndModuleName: <M extends RequestsAny, const ModuleName extends string>(resource: M, moduleName: ModuleName, middleware?: any) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<{ [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }>[keyof { [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }], `${ModuleName}.`>>;
46
+ declare const ApiClientFactory_base: Context.OpaqueClass<ApiClientFactory, "ApiClientFactory", (requestLevelLayers: Layer.Layer<never>, options?: ClientForOptions) => <M extends RequestsAny>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, M, ExtractModuleName<M>>, never, never>>;
59
47
  /**
60
48
  * Used to create clients for resource modules.
61
49
  */
62
50
  export declare class ApiClientFactory extends ApiClientFactory_base {
63
51
  static readonly layer: (config: ApiConfig) => Layer.Layer<ApiClientFactory, never, HttpClient.HttpClient>;
64
52
  static readonly layerFromConfig: Layer.Layer<ApiClientFactory, Config.ConfigError, HttpClient.HttpClient>;
65
- static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(resource: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, M, M["meta"]["moduleName"]>, never, ApiClientFactory>;
53
+ static readonly makeFor: (requestLevelLayers: Layer.Layer<never>, options?: ClientForOptions) => <M extends RequestsAny>(resource: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, M, ExtractModuleName<M>>, never, ApiClientFactory>;
66
54
  }
67
55
  export {};
68
- //# sourceMappingURL=apiClientFactory.d.ts.map
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9hcGlDbGllbnRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBRXJDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBS3ZDLE9BQU8sRUFBRSxHQUFHLEVBQWEsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDaEYsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxZQUFZLENBQUE7QUFFMUQsT0FBTyxLQUFLLEtBQUssQ0FBQyxNQUFNLGNBQWMsQ0FBQTtBQUV0QyxPQUFPLEtBQUssRUFBVSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUc5RixNQUFNLFdBQVcsU0FBUztJQUN4QixHQUFHLEVBQUUsTUFBTSxDQUFBO0lBQ1gsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO0NBQy9DO0FBRUQsZUFBTyxNQUFNLGdCQUFnQjs7Ozs7RUFRM0IsQ0FBQTtBQUVGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRztJQUN4QixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFBO0lBQ3RDLElBQUksRUFBRSxNQUFNLENBQUE7SUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUE7SUFDdkIsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUNaLDhJQUE4STtJQUM5SSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQ2IsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM1QixRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQTtJQUNuQixRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQTtJQUMzQixRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUE7SUFDbEMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUE7SUFDeEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUM5QixDQUFBO0FBTUQsZUFBTyxNQUFNLGVBQWUsV0FBWSxTQUFTLHFFQXFCOUMsQ0FBQTtBQUVILGVBQU8sTUFBTSx5QkFBeUIsK0VBS3JDLENBQUE7QUFFRCxlQUFPLE1BQU0scUJBQXFCLFdBQVksU0FBUyx5R0FJcEQsQ0FBQTtBQUVILEtBQUssV0FBVyxDQUFDLENBQUMsU0FBUyxXQUFXLElBQUk7S0FDdkMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQzVFLENBQUE7QUFvQkQsZUFBTyxNQUFNLE9BQU8sR0FBSSxDQUFDLFNBQVMsV0FBVyxZQUNqQyxDQUFDLEtBQ1Y7SUFBRSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUE7Q0FJMUQsQ0FBQTtBQUVELGVBQU8sTUFBTSxxQ0FBcUMsR0FBSSxDQUFDLFNBQVMsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLFNBQVMsTUFBTSxZQUNoRyxDQUFDLGNBQ0MsVUFBVSxlQUVULEdBQUcsbURBNUJiLENBQUMsaU1BNERMLENBQUE7b0hBa01vRCxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLGdCQUFnQixNQU8xRCxDQUFDLFNBQVMsV0FBVztBQWU5RDs7R0FFRztBQUNILHFCQUFhLGdCQUNYLFNBQVEscUJBQW1HO0lBRTNHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFZLFNBQVMsaUVBQ3lEO0lBQ25HLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSwyRUFLOUI7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sdUJBQ0EsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxnQkFBZ0IsTUFDbEUsQ0FBQyxTQUFTLFdBQVcsWUFDVixDQUFDLDZIQUtUO0NBQ1AifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,27 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import * as Config from "effect/Config";
3
- import { flow } from "effect/Function";
2
+ import { constant, flow } from "effect/Function";
4
3
  import * as Layer from "effect/Layer";
5
4
  import * as ManagedRuntime from "effect/ManagedRuntime";
5
+ import * as Option from "effect/Option";
6
6
  import * as Predicate from "effect/Predicate";
7
7
  import * as Schema from "effect/Schema";
8
+ import * as Stream from "effect/Stream";
8
9
  import * as Struct from "effect/Struct";
9
10
  import { Rpc, RpcClient, RpcGroup, RpcSerialization } from "effect/unstable/rpc";
11
+ import * as Config from "../Config.js";
12
+ import * as Context from "../Context.js";
10
13
  import * as Effect from "../Effect.js";
11
14
  import { HttpClient, HttpClientRequest } from "../http.js";
12
- import * as Option from "../Option.js";
13
- import * as ServiceMap from "../ServiceMap.js";
15
+ import { Invalidation } from "../rpc.js";
14
16
  import { typedKeysOf, typedValuesOf } from "../utils.js";
17
+ import { InvalidationKeysFromServer } from "./InvalidationKeys.js";
15
18
  export const DefaultApiConfig = Config.all({
16
19
  url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
17
20
  headers: Config
18
21
  .schema(Config.Record(Schema.String, Schema.String), "headers")
19
22
  .pipe(Config.option)
20
23
  });
21
- class RequestName extends ServiceMap.Reference("RequestName", {
24
+ class RequestName extends Context.Reference("RequestName", {
22
25
  defaultValue: () => ({ requestName: "Unspecified", moduleName: "Error" })
23
26
  }) {
24
27
  }
@@ -45,49 +48,85 @@ const getFiltered = (resource) => {
45
48
  return filtered;
46
49
  };
47
50
  export const getMeta = (resource) => {
48
- const meta = resource.meta;
49
- if (!meta)
50
- throw new Error("No meta defined in Resource!");
51
- return meta;
51
+ const first = typedValuesOf(getFiltered(resource))[0];
52
+ if (first && "moduleName" in first)
53
+ return { moduleName: first.moduleName, middleware: first.middleware };
54
+ throw new Error("No moduleName on requests!");
52
55
  };
53
- export const makeRpcGroupFromRequestsAndModuleName = (resource, moduleName) => {
56
+ export const makeRpcGroupFromRequestsAndModuleName = (resource, moduleName,
57
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ middleware) => {
54
59
  const filtered = getFiltered(resource);
55
- const rpcs = RpcGroup
60
+ const baseRpcs = RpcGroup
56
61
  .make(...typedValuesOf(filtered).map((_) => {
57
- return Rpc.make(_._tag, { payload: _, success: _.success, error: _.error });
62
+ const r = _;
63
+ const isStream = r.stream;
64
+ const isCommand = r.type === "command";
65
+ return (isCommand
66
+ ? isStream
67
+ ? Invalidation.makeStreamRpc(r._tag, {
68
+ payload: r,
69
+ success: r.success,
70
+ error: r.error,
71
+ stream: true
72
+ })
73
+ : Invalidation.makeCommandRpc(r._tag, { payload: r, success: r.success, error: r.error })
74
+ : Rpc.make(r._tag, { payload: r, success: r.success, error: r.error, stream: isStream }));
58
75
  }))
59
76
  .prefix(`${moduleName}.`);
77
+ // Attach the middleware tag (schema-only on the client — no Live invoked)
78
+ // so its declared `error` joins the rpc failure union via
79
+ // `Rpc.exitSchema`'s `rpc.middlewares[*].error` walk. Required for stream
80
+ // rpcs whose top-level `errorSchema` is forced to `Never` by effect-rpc;
81
+ // without it, middleware-thrown errors fail client decode.
82
+ const rpcs = (middleware ? baseRpcs.middleware(middleware) : baseRpcs);
60
83
  return rpcs;
61
84
  };
62
- export const makeRpcGroup = (resource) => makeRpcGroupFromRequestsAndModuleName(resource, resource.meta.moduleName);
63
- const makeRpcTag = (resource) => {
85
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
+ const makeRpcTag = (resource, middleware) => {
64
87
  const meta = getMeta(resource);
65
- const rpcs = makeRpcGroupFromRequestsAndModuleName(resource, meta.moduleName);
88
+ const rpcs = makeRpcGroupFromRequestsAndModuleName(resource, meta.moduleName, middleware);
66
89
  // Use Object.assign instead of class extension to avoid TS2509 with complex generic return types.
67
90
  // The first type arg is `any` because this is a dynamically created tag — its identity is the string key.
68
- const TheClient = ServiceMap.Opaque()(`RpcClient.${meta.moduleName}`);
91
+ const TheClient = Context.Opaque()(`RpcClient.${meta.moduleName}`);
69
92
  // Use Layer.effect directly (not TheClient.toLayer) so TypeScript properly excludes Scope
70
93
  const layer = Layer.effect(TheClient, RpcClient.make(rpcs, { spanPrefix: "RpcClient." + meta.moduleName }));
71
94
  return Object.assign(TheClient, { layer });
72
95
  };
73
96
  const makeApiClientFactory = Effect
74
97
  .gen(function* () {
75
- const ctx = yield* Effect.services();
76
- const makeClientFor = (resource, requestLevelLayers = Layer.empty, options) => Effect.gen(function* () {
77
- const TheClient = makeRpcTag(resource);
98
+ const ctx = yield* Effect.context();
99
+ const makeClientFor = Effect.fnUntraced(function* (resource, requestLevelLayers = Layer.empty, options) {
78
100
  const meta = getMeta(resource);
101
+ const TheClient = makeRpcTag(resource, meta.middleware);
79
102
  // TODO: somehow we need a protocol per REQUEST kind of it seems ...
80
103
  // otherwise it locks up on the client, navigation remains empty...
81
104
  const clientLayer = TheClient.layer.pipe(
82
105
  // add ApiClientFactory for nested schemas
83
106
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
84
107
  Layer.provide(Layer.succeed(ApiClientFactory, makeClientForCached)), Layer.provide(RpcClient
85
- .layerProtocolHttp({
86
- url: "" // why not here set meta.moduleName as root?
87
- })
88
- .pipe(Layer.provideMerge(Layer.succeedServices(ctx)))));
108
+ .layerProtocolHttp({ url: "" }) // why not here set meta.moduleName as root?
109
+ .pipe(Layer.provideMerge(Layer.succeedContext(ctx)))));
89
110
  const mr = ManagedRuntime.make(clientLayer);
90
111
  const filtered = getFiltered(resource);
112
+ // Unwrap `CommandResponseWithMetaData` (success) and `CommandFailureWithMetaData`
113
+ // (handler-thrown failure): forward accumulated invalidation keys to
114
+ // `InvalidationKeysFromServer` and yield the raw payload / re-fail with the raw
115
+ // error. Middleware-thrown failures arrive raw on the Cause already (no wrap to
116
+ // strip) — the `else` branch passes them through.
117
+ const unwrapCommand = (eff) => eff.pipe(Effect.flatMap((result) => Effect.gen(function* () {
118
+ const keys = result?.metadata?.invalidateQueries ?? [];
119
+ const invalidationKeys = yield* InvalidationKeysFromServer;
120
+ yield* Effect.forEach(keys, (key) => invalidationKeys.add(key), { discard: true });
121
+ return result.payload;
122
+ })), Effect.catch((result) => result?._tag === "CommandFailureWithMetaData"
123
+ ? Effect.gen(function* () {
124
+ const keys = result.metadata?.invalidateQueries ?? [];
125
+ const invalidationKeys = yield* InvalidationKeysFromServer;
126
+ yield* Effect.forEach(keys, (key) => invalidationKeys.add(key), { discard: true });
127
+ return yield* Effect.fail(result.error);
128
+ })
129
+ : Effect.fail(result)));
91
130
  return {
92
131
  mr,
93
132
  client: typedKeysOf(filtered)
@@ -108,18 +147,42 @@ const makeApiClientFactory = Effect
108
147
  const layers = requestLevelLayers.pipe(Layer.provideMerge(requestNameLayer));
109
148
  const fields = Struct.omit(Request.fields, ["_tag"]);
110
149
  const requestAttr = `${meta.moduleName}.${h._tag}`;
150
+ const isCommand = h.type === "command";
151
+ const isStream = h.stream;
152
+ const buildEffect = (input) => mr.contextEffect.pipe(Effect.flatMap((svcs) => {
153
+ const rpcEffect = TheClient
154
+ .use((client) => client[requestAttr](Request.make(input)))
155
+ .pipe(Effect.provide(layers), Effect.provide(svcs));
156
+ return isCommand ? unwrapCommand(rpcEffect) : rpcEffect;
157
+ }));
158
+ const buildStream = (input) => Stream.unwrap(mr.contextEffect.pipe(Effect.flatMap((svcs) => TheClient
159
+ .useSync((client) => {
160
+ const rpcStream = client[requestAttr](Request.make(input));
161
+ return rpcStream.pipe(
162
+ // Collect server invalidation keys from the "done" chunk, then discard it.
163
+ Stream.tap((item) => item._tag === "done" || item._tag === "metadata"
164
+ ? InvalidationKeysFromServer.use((svc) => Effect.forEach(item.metadata.invalidateQueries, svc.add, { discard: true }))
165
+ : Effect.void), Stream.filter((item) => item._tag === "value"), Stream.map((item) => item.value),
166
+ // V2: unwrap StreamFailureChunk — forward keys from failures too,
167
+ // then re-fail with the original error so callers see the unmodified
168
+ // error type.
169
+ Stream.catch((err) => err?._tag === "error" && err?.metadata
170
+ ? Stream.fromEffect(InvalidationKeysFromServer.use((svc) => Effect
171
+ .forEach(err.metadata.invalidateQueries, svc.add, { discard: true })
172
+ .pipe(Effect.flatMap(() => Effect.fail(err.error)))))
173
+ : Stream.fail(err)), Stream.provide(layers), Stream.provide(svcs));
174
+ })
175
+ .pipe(Effect.provide(svcs)))));
111
176
  // @ts-expect-error doc
112
177
  prev[cur] = Object.keys(fields).length === 0
113
178
  ? {
114
- handler: mr.servicesEffect.pipe(Effect.flatMap((svcs) => TheClient
115
- .use((client) => client[requestAttr](new Request()))
116
- .pipe(Effect.provide(layers), Effect.provide(svcs)))),
179
+ handler: isStream ? constant(buildStream({})) : constant(buildEffect({})),
117
180
  ...requestMeta
118
181
  }
119
182
  : {
120
- handler: (req) => mr.servicesEffect.pipe(Effect.flatMap((svcs) => TheClient
121
- .use((client) => client[requestAttr](new Request(req)))
122
- .pipe(Effect.provide(layers), Effect.provide(svcs)))),
183
+ handler: isStream
184
+ ? (req) => buildStream(req)
185
+ : (req) => buildEffect(req),
123
186
  ...requestMeta
124
187
  };
125
188
  return prev;
@@ -135,7 +198,7 @@ const makeApiClientFactory = Effect
135
198
  cache = new Map();
136
199
  cacheL.set(requestLevelLayers, cache);
137
200
  }
138
- return (models) => Effect.gen(function* () {
201
+ return Effect.fnUntraced(function* (models) {
139
202
  const found = cache.get(models);
140
203
  if (found) {
141
204
  return found;
@@ -151,7 +214,7 @@ const makeApiClientFactory = Effect
151
214
  /**
152
215
  * Used to create clients for resource modules.
153
216
  */
154
- export class ApiClientFactory extends ServiceMap.Opaque()("ApiClientFactory") {
217
+ export class ApiClientFactory extends Context.Opaque()("ApiClientFactory") {
155
218
  static layer = (config) => ApiClientFactory.toLayer(makeApiClientFactory).pipe(Layer.provide(RpcSerializationLayer(config)));
156
219
  static layerFromConfig = Layer.unwrap(Effect.gen(function* () {
157
220
  const config = yield* DefaultApiConfig;
@@ -162,4 +225,4 @@ export class ApiClientFactory extends ServiceMap.Opaque()("ApiClientFactory") {
162
225
  return f(resource);
163
226
  });
164
227
  }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBRXRDLE9BQU8sS0FBSyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFReEQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUN6QyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxPQUFPLEVBQUUsTUFBTTtTQUNaLE1BQU0sQ0FDTCxNQUFNLENBQUMsTUFBTSxDQUFD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
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDaEYsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXhELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBT2xFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekMsR0FBRyxFQUFFLE1BQU0s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
@@ -1,41 +1,75 @@
1
- import type * as Request from "effect/Request";
1
+ import type * as Stream from "effect/Stream";
2
2
  import type { Path } from "path-parser";
3
3
  import type * as Effect from "../Effect.js";
4
4
  import type * as S from "../Schema.js";
5
5
  import { type Req } from "./apiClientFactory.js";
6
6
  export declare function makePathWithQuery(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
7
7
  export declare function makePathWithBody(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
8
- export type Requests<ModuleName extends string = string> = {
9
- meta: {
10
- moduleName: ModuleName;
11
- };
12
- } & RequestsAny;
8
+ export type Requests = RequestsAny;
13
9
  export type RequestsAny = Record<string, any>;
10
+ export type ExtractModuleName<M extends RequestsAny> = {
11
+ [K in keyof M]: M[K] extends {
12
+ moduleName: infer N extends string;
13
+ } ? N : never;
14
+ }[keyof M] extends infer R extends string ? R : string;
14
15
  export type Client<M extends RequestsAny, ModuleName extends string> = RequestHandlers<never, never, M, ModuleName>;
15
16
  export type ExtractResponse<T> = T extends S.Codec<any> ? S.Schema.Type<T> : T extends unknown ? void : never;
16
17
  export type ExtractEResponse<T> = T extends S.Codec<any> ? S.Codec.Encoded<T> : T extends unknown ? void : never;
17
- type IsEmpty<T> = keyof T extends never ? true : false;
18
- type Cruft = "_tag" | keyof Request.Request<any, any, any>;
19
18
  export interface ClientForOptions {
20
19
  readonly skipQueryKey?: readonly string[];
21
20
  }
22
- export interface RequestHandler<A, E, R, Request extends Req, Id extends string> {
23
- handler: Effect.Effect<A, E, R>;
21
+ export declare const makeQueryKey: ({ id, options }: {
22
+ id: string;
23
+ options?: ClientForOptions;
24
+ }) => [string, ...string[]];
25
+ export interface RequestHandlerWithInput<I, A, E, R, Request extends Req, Id extends string> {
26
+ handler: (i: I) => Effect.Effect<A, E, R>;
24
27
  id: Id;
25
28
  options?: ClientForOptions;
26
29
  Request: Request;
27
30
  }
28
- export interface RequestHandlerWithInput<I, A, E, R, Request extends Req, Id extends string> {
29
- handler: (i: I) => Effect.Effect<A, E, R>;
31
+ /** Type alias: a no-input handler is simply `RequestHandlerWithInput<void, …>`. */
32
+ export type RequestHandler<A, E, R, Request extends Req, Id extends string> = RequestHandlerWithInput<void, A, E, R, Request, Id>;
33
+ export interface RequestStreamHandlerWithInput<I, A, E, R, Request extends Req, Id extends string, Final = A> {
34
+ handler: (i: I) => Stream.Stream<A, E, R>;
30
35
  id: Id;
31
36
  options?: ClientForOptions;
32
37
  Request: Request;
38
+ /**
39
+ * Phantom type property (never set at runtime) that carries the `Final` type to
40
+ * `StreamMutationWithExtensions`. The tilde prefix follows the Effect convention for
41
+ * phantom/virtual properties and prevents accidental runtime access.
42
+ * Stream failures bubble through the execute effect's typed error channel `E`;
43
+ * the reactive `AsyncResult` ref also mirrors the failure for live progress UI.
44
+ */
45
+ readonly "~final"?: Final;
33
46
  }
34
- type ReqDecodingServices<M> = M extends {
35
- readonly "~decodingServices": infer DS;
36
- } ? DS : never;
47
+ /** Type alias: a no-input stream handler is simply `RequestStreamHandlerWithInput<void, …>`. */
48
+ export type RequestStreamHandler<A, E, R, Request extends Req, Id extends string, Final = A> = RequestStreamHandlerWithInput<void, A, E, R, Request, Id, Final>;
49
+ export type RequestInputFromMake<I extends {
50
+ readonly make: (...args: any[]) => any;
51
+ }> = Parameters<I["make"]> extends [
52
+ ] ? void : Parameters<I["make"]>[0];
53
+ type HasNoFields<I> = I extends {
54
+ readonly fields: infer F extends S.Struct.Fields;
55
+ } ? [Exclude<keyof F, "_tag">] extends [never] ? true : false : false;
56
+ type RequestInput<I extends {
57
+ readonly make: (...args: any[]) => any;
58
+ }> = Parameters<I["make"]>[0];
59
+ /**
60
+ * Caller-facing input type for a request. `void` when the request schema has no fields;
61
+ * otherwise `make`'s first param type.
62
+ */
63
+ export type HandlerInput<I extends {
64
+ readonly make: (...args: any[]) => any;
65
+ }> = HasNoFields<I> extends true ? void : RequestInput<I>;
66
+ /** Extracts the final-value type from a stream request. Defaults to the success type when no `final` schema is set. */
67
+ type FinalTypeOf<T extends Req> = T extends {
68
+ readonly final: infer F extends S.Top;
69
+ } ? S.Schema.Type<F> : S.Schema.Type<T["success"]>;
70
+ type RequestHandlerFor<R, E, T extends Req, Id extends string> = T["stream"] extends true ? RequestStreamHandlerWithInput<HandlerInput<T>, S.Schema.Type<T["success"]>, S.Schema.Type<T["error"]> | E, R | S.Codec.DecodingServices<T["success"]> | S.Codec.DecodingServices<T["error"]>, T, Id, FinalTypeOf<T>> : RequestHandlerWithInput<HandlerInput<T>, S.Schema.Type<T["success"]>, S.Schema.Type<T["error"]> | E, R | S.Codec.DecodingServices<T["success"]> | S.Codec.DecodingServices<T["error"]>, T, Id>;
37
71
  export type RequestHandlers<R, E, M extends RequestsAny, ModuleName extends string> = {
38
- [K in keyof M as M[K] extends Req ? K : never]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true ? RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["error"]> | E, R | ReqDecodingServices<M[K]>, M[K], `${ModuleName}.${K & string}`> : RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["error"]> | E, R | ReqDecodingServices<M[K]>, M[K], `${ModuleName}.${K & string}`>;
72
+ [K in keyof M as M[K] extends Req ? K : never]: Extract<M[K], Req> extends infer T extends Req ? RequestHandlerFor<R, E, T, `${ModuleName}.${K & string}`> : never;
39
73
  };
40
74
  export {};
41
- //# sourceMappingURL=clientFor.d.ts.map
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2NsaWVudEZvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQzVDLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV2QyxPQUFPLEtBQUssS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sS0FBSyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFaEQsd0JBQWdCLGlCQUFpQixDQUMvQixJQUFJLEVBQUUsSUFBSSxFQUNWLElBQUksRUFBRSxNQUFNLENBQ1YsTUFBTSxFQUNKLE1BQU0sR0FDTixNQUFNLEdBQ04sT0FBTyxHQUNQLFNBQVMsTUFBTSxFQUFFLEdBQ2pCLFNBQVMsTUFBTSxFQUFFLEdBQ2pCLFNBQVMsT0FBTyxFQUFFLEdBQ2xCLElBQUksQ0FDUCxVQVVGO0FBRUQsd0JBQWdCLGdCQUFnQixDQUM5QixJQUFJLEVBQUUsSUFBSSxFQUNWLElBQUksRUFBRSxNQUFNLENBQ1YsTUFBTSxFQUNKLE1BQU0sR0FDTixNQUFNLEdBQ04sT0FBTyxHQUNQLFNBQVMsTUFBTSxFQUFFLEdBQ2pCLFNBQVMsTUFBTSxFQUFFLEdBQ2pCLFNBQVMsT0FBTyxFQUFFLEdBQ2xCLElBQUksQ0FDUCxVQUdGO0FBRUQsTUFBTSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUE7QUFDbEMsTUFBTSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBRTdDLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsV0FBVyxJQUNqRDtLQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNB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