effect-app 4.0.0-beta.32 → 4.0.0-beta.321

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 (369) hide show
  1. package/CHANGELOG.md +1570 -0
  2. package/dist/Array.d.ts +2 -1
  3. package/dist/Array.d.ts.map +1 -1
  4. package/dist/Array.js +4 -4
  5. package/dist/Chunk.d.ts.map +1 -1
  6. package/dist/Config/SecretURL.d.ts +3 -1
  7. package/dist/Config/SecretURL.d.ts.map +1 -1
  8. package/dist/Config/SecretURL.js +3 -6
  9. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  10. package/dist/Config/internal/configSecretURL.js +2 -2
  11. package/dist/Config.d.ts +2 -0
  12. package/dist/Config.d.ts.map +1 -0
  13. package/dist/Config.js +8 -0
  14. package/dist/ConfigProvider.d.ts +2 -0
  15. package/dist/ConfigProvider.d.ts.map +1 -0
  16. package/dist/ConfigProvider.js +6 -0
  17. package/dist/{ServiceMap.d.ts → Context.d.ts} +18 -20
  18. package/dist/Context.d.ts.map +1 -0
  19. package/dist/Context.js +67 -0
  20. package/dist/DataDependencies.d.ts +136 -0
  21. package/dist/DataDependencies.d.ts.map +1 -0
  22. package/dist/DataDependencies.js +112 -0
  23. package/dist/Effect.d.ts +10 -9
  24. package/dist/Effect.d.ts.map +1 -1
  25. package/dist/Effect.js +6 -9
  26. package/dist/Emailer.d.ts +51 -0
  27. package/dist/Emailer.d.ts.map +1 -0
  28. package/dist/Emailer.js +7 -0
  29. package/dist/Function.d.ts.map +1 -1
  30. package/dist/Layer.d.ts +10 -6
  31. package/dist/Layer.d.ts.map +1 -1
  32. package/dist/Layer.js +3 -2
  33. package/dist/Model/Repository/Registry.d.ts +22 -0
  34. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  35. package/dist/Model/Repository/Registry.js +18 -0
  36. package/dist/Model/Repository/dependency.d.ts +6 -0
  37. package/dist/Model/Repository/dependency.d.ts.map +1 -0
  38. package/dist/Model/Repository/dependency.js +29 -0
  39. package/dist/Model/Repository/ext.d.ts +60 -0
  40. package/dist/Model/Repository/ext.d.ts.map +1 -0
  41. package/dist/Model/Repository/ext.js +124 -0
  42. package/dist/Model/Repository/internal/internal.d.ts +68 -0
  43. package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
  44. package/dist/Model/Repository/internal/internal.js +579 -0
  45. package/dist/Model/Repository/legacy.d.ts +21 -0
  46. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  47. package/dist/Model/Repository/legacy.js +2 -0
  48. package/dist/Model/Repository/makeRepo.d.ts +63 -0
  49. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  50. package/dist/Model/Repository/makeRepo.js +27 -0
  51. package/dist/Model/Repository/service.d.ts +121 -0
  52. package/dist/Model/Repository/service.d.ts.map +1 -0
  53. package/dist/Model/Repository/service.js +2 -0
  54. package/dist/Model/Repository/validation.d.ts +58 -0
  55. package/dist/Model/Repository/validation.d.ts.map +1 -0
  56. package/dist/Model/Repository/validation.js +32 -0
  57. package/dist/Model/Repository.d.ts +8 -0
  58. package/dist/Model/Repository.d.ts.map +1 -0
  59. package/dist/Model/Repository.js +8 -0
  60. package/dist/Model/dsl.d.ts +33 -0
  61. package/dist/Model/dsl.d.ts.map +1 -0
  62. package/dist/Model/dsl.js +43 -0
  63. package/dist/Model/filter/filterApi.d.ts +30 -0
  64. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  65. package/dist/Model/filter/filterApi.js +2 -0
  66. package/dist/Model/filter/types/errors.d.ts +29 -0
  67. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  68. package/dist/Model/filter/types/errors.js +2 -0
  69. package/dist/Model/filter/types/fields.d.ts +15 -0
  70. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  71. package/dist/Model/filter/types/fields.js +2 -0
  72. package/dist/Model/filter/types/path/common.d.ts +316 -0
  73. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  74. package/dist/Model/filter/types/path/common.js +2 -0
  75. package/dist/Model/filter/types/path/eager.d.ts +94 -0
  76. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  77. package/dist/Model/filter/types/path/eager.js +36 -0
  78. package/dist/Model/filter/types/path/index.d.ts +4 -0
  79. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  80. package/dist/Model/filter/types/path/index.js +3 -0
  81. package/dist/Model/filter/types/utils.d.ts +79 -0
  82. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  83. package/dist/Model/filter/types/utils.js +2 -0
  84. package/dist/Model/filter/types/validator.d.ts +30 -0
  85. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  86. package/dist/Model/filter/types/validator.js +2 -0
  87. package/dist/Model/filter/types.d.ts +5 -0
  88. package/dist/Model/filter/types.d.ts.map +1 -0
  89. package/dist/Model/filter/types.js +7 -0
  90. package/dist/Model/query/dsl.d.ts +630 -0
  91. package/dist/Model/query/dsl.d.ts.map +1 -0
  92. package/dist/Model/query/dsl.js +376 -0
  93. package/dist/Model/query/new-kid-interpreter.d.ts +132 -0
  94. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  95. package/dist/Model/query/new-kid-interpreter.js +370 -0
  96. package/dist/Model/query.d.ts +15 -0
  97. package/dist/Model/query.d.ts.map +1 -0
  98. package/dist/Model/query.js +3 -0
  99. package/dist/Model.d.ts +6 -0
  100. package/dist/Model.d.ts.map +1 -0
  101. package/dist/Model.js +6 -0
  102. package/dist/NonEmptySet.d.ts +3 -1
  103. package/dist/NonEmptySet.d.ts.map +1 -1
  104. package/dist/NonEmptySet.js +2 -2
  105. package/dist/Option.d.ts +1 -0
  106. package/dist/Option.d.ts.map +1 -1
  107. package/dist/Option.js +3 -1
  108. package/dist/Pure.d.ts +7 -5
  109. package/dist/Pure.d.ts.map +1 -1
  110. package/dist/Pure.js +7 -4
  111. package/dist/QueueMaker.d.ts +11 -0
  112. package/dist/QueueMaker.d.ts.map +1 -0
  113. package/dist/QueueMaker.js +11 -0
  114. package/dist/RequestContext.d.ts +87 -0
  115. package/dist/RequestContext.d.ts.map +1 -0
  116. package/dist/RequestContext.js +45 -0
  117. package/dist/RequestScopedDependencies.d.ts +21 -0
  118. package/dist/RequestScopedDependencies.d.ts.map +1 -0
  119. package/dist/RequestScopedDependencies.js +16 -0
  120. package/dist/Schema/Class.d.ts +200 -20
  121. package/dist/Schema/Class.d.ts.map +1 -1
  122. package/dist/Schema/Class.js +268 -17
  123. package/dist/Schema/FastCheck.d.ts.map +1 -1
  124. package/dist/Schema/SchemaParser.d.ts +5 -0
  125. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  126. package/dist/Schema/SchemaParser.js +6 -0
  127. package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
  128. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  129. package/dist/Schema/SpecialJsonSchema.js +117 -0
  130. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  131. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  132. package/dist/Schema/SpecialOpenApi.js +123 -0
  133. package/dist/Schema/brand.d.ts +5 -5
  134. package/dist/Schema/brand.d.ts.map +1 -1
  135. package/dist/Schema/brand.js +3 -1
  136. package/dist/Schema/email.d.ts.map +1 -1
  137. package/dist/Schema/email.js +7 -6
  138. package/dist/Schema/ext.d.ts +337 -56
  139. package/dist/Schema/ext.d.ts.map +1 -1
  140. package/dist/Schema/ext.js +381 -58
  141. package/dist/Schema/moreStrings.d.ts +82 -36
  142. package/dist/Schema/moreStrings.d.ts.map +1 -1
  143. package/dist/Schema/moreStrings.js +47 -51
  144. package/dist/Schema/numbers.d.ts +34 -21
  145. package/dist/Schema/numbers.d.ts.map +1 -1
  146. package/dist/Schema/numbers.js +55 -12
  147. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  148. package/dist/Schema/phoneNumber.js +6 -6
  149. package/dist/Schema/schema.d.ts +1 -1
  150. package/dist/Schema/schema.d.ts.map +1 -1
  151. package/dist/Schema/schema.js +2 -2
  152. package/dist/Schema/strings.d.ts +18 -4
  153. package/dist/Schema/strings.d.ts.map +1 -1
  154. package/dist/Schema/strings.js +1 -5
  155. package/dist/Schema.d.ts +225 -7
  156. package/dist/Schema.d.ts.map +1 -1
  157. package/dist/Schema.js +193 -26
  158. package/dist/SchemaAST.d.ts +2 -0
  159. package/dist/SchemaAST.d.ts.map +1 -0
  160. package/dist/SchemaAST.js +2 -0
  161. package/dist/Set.d.ts +4 -1
  162. package/dist/Set.d.ts.map +1 -1
  163. package/dist/Set.js +3 -2
  164. package/dist/Store.d.ts +170 -0
  165. package/dist/Store.d.ts.map +1 -0
  166. package/dist/Store.js +113 -0
  167. package/dist/_ext/Array.d.ts +1 -1
  168. package/dist/_ext/Array.d.ts.map +1 -1
  169. package/dist/_ext/Array.js +4 -2
  170. package/dist/_ext/misc.d.ts +4 -1
  171. package/dist/_ext/misc.d.ts.map +1 -1
  172. package/dist/_ext/misc.js +4 -2
  173. package/dist/_ext/ord.ext.d.ts +2 -1
  174. package/dist/_ext/ord.ext.d.ts.map +1 -1
  175. package/dist/_ext/ord.ext.js +2 -2
  176. package/dist/builtin.d.ts +2 -14
  177. package/dist/builtin.d.ts.map +1 -1
  178. package/dist/builtin.js +1 -1
  179. package/dist/client/InvalidationKeys.d.ts +30 -0
  180. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  181. package/dist/client/InvalidationKeys.js +37 -0
  182. package/dist/client/apiClientFactory.d.ts +19 -31
  183. package/dist/client/apiClientFactory.d.ts.map +1 -1
  184. package/dist/client/apiClientFactory.js +157 -39
  185. package/dist/client/clientFor.d.ts +54 -18
  186. package/dist/client/clientFor.d.ts.map +1 -1
  187. package/dist/client/clientFor.js +9 -1
  188. package/dist/client/errors.d.ts +82 -27
  189. package/dist/client/errors.d.ts.map +1 -1
  190. package/dist/client/errors.js +75 -19
  191. package/dist/client/makeClient.d.ts +490 -34
  192. package/dist/client/makeClient.d.ts.map +1 -1
  193. package/dist/client/makeClient.js +62 -30
  194. package/dist/client.d.ts +2 -0
  195. package/dist/client.d.ts.map +1 -1
  196. package/dist/client.js +3 -1
  197. package/dist/faker.d.ts.map +1 -1
  198. package/dist/http/Request.d.ts +1 -1
  199. package/dist/http/Request.d.ts.map +1 -1
  200. package/dist/http/Request.js +2 -2
  201. package/dist/ids.d.ts +42 -14
  202. package/dist/ids.d.ts.map +1 -1
  203. package/dist/ids.js +30 -5
  204. package/dist/index.d.ts +6 -7
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +8 -8
  207. package/dist/middleware.d.ts +13 -7
  208. package/dist/middleware.d.ts.map +1 -1
  209. package/dist/middleware.js +14 -8
  210. package/dist/rpc/Invalidation.d.ts +1124 -0
  211. package/dist/rpc/Invalidation.d.ts.map +1 -0
  212. package/dist/rpc/Invalidation.js +178 -0
  213. package/dist/rpc/MiddlewareMaker.d.ts +11 -7
  214. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  215. package/dist/rpc/MiddlewareMaker.js +59 -38
  216. package/dist/rpc/RpcContextMap.d.ts +3 -3
  217. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  218. package/dist/rpc/RpcContextMap.js +4 -4
  219. package/dist/rpc/RpcMiddleware.d.ts +14 -10
  220. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  221. package/dist/rpc/RpcMiddleware.js +1 -1
  222. package/dist/rpc.d.ts +1 -1
  223. package/dist/rpc.d.ts.map +1 -1
  224. package/dist/rpc.js +2 -2
  225. package/dist/runtime.d.ts +19 -0
  226. package/dist/runtime.d.ts.map +1 -0
  227. package/dist/runtime.js +40 -0
  228. package/dist/setupRequest.d.ts +20 -0
  229. package/dist/setupRequest.d.ts.map +1 -0
  230. package/dist/setupRequest.js +72 -0
  231. package/dist/toast.d.ts +51 -0
  232. package/dist/toast.d.ts.map +1 -0
  233. package/dist/toast.js +34 -0
  234. package/dist/transform.d.ts +1 -1
  235. package/dist/transform.d.ts.map +1 -1
  236. package/dist/transform.js +4 -5
  237. package/dist/utils/effectify.d.ts +1 -1
  238. package/dist/utils/effectify.d.ts.map +1 -1
  239. package/dist/utils/effectify.js +2 -2
  240. package/dist/utils/extend.d.ts.map +1 -1
  241. package/dist/utils/gen.d.ts +4 -4
  242. package/dist/utils/gen.d.ts.map +1 -1
  243. package/dist/utils/logLevel.d.ts +2 -2
  244. package/dist/utils/logLevel.d.ts.map +1 -1
  245. package/dist/utils/logger.d.ts +4 -3
  246. package/dist/utils/logger.d.ts.map +1 -1
  247. package/dist/utils/logger.js +4 -4
  248. package/dist/utils.d.ts +34 -39
  249. package/dist/utils.d.ts.map +1 -1
  250. package/dist/utils.js +33 -37
  251. package/dist/validation/validators.d.ts.map +1 -1
  252. package/dist/validation.d.ts.map +1 -1
  253. package/dist/withToast.d.ts +30 -0
  254. package/dist/withToast.d.ts.map +1 -0
  255. package/dist/withToast.js +64 -0
  256. package/package.json +27 -251
  257. package/src/Array.ts +5 -5
  258. package/src/Chunk.ts +3 -3
  259. package/src/Config/SecretURL.ts +6 -3
  260. package/src/Config/internal/configSecretURL.ts +2 -2
  261. package/src/Config.ts +7 -0
  262. package/src/ConfigProvider.ts +5 -0
  263. package/src/{ServiceMap.ts → Context.ts} +56 -63
  264. package/src/DataDependencies.ts +171 -0
  265. package/src/Effect.ts +15 -17
  266. package/src/Emailer.ts +51 -0
  267. package/src/Inputify.type.ts +1 -1
  268. package/src/Layer.ts +11 -7
  269. package/src/Model/Repository/Registry.ts +35 -0
  270. package/src/Model/Repository/dependency.ts +32 -0
  271. package/src/Model/Repository/ext.ts +374 -0
  272. package/src/Model/Repository/internal/internal.ts +950 -0
  273. package/src/Model/Repository/legacy.ts +29 -0
  274. package/src/Model/Repository/makeRepo.ts +156 -0
  275. package/src/Model/Repository/service.ts +676 -0
  276. package/src/Model/Repository/validation.ts +31 -0
  277. package/src/Model/Repository.ts +7 -0
  278. package/src/Model/dsl.ts +129 -0
  279. package/src/Model/filter/filterApi.ts +78 -0
  280. package/src/Model/filter/types/errors.ts +47 -0
  281. package/src/Model/filter/types/fields.ts +50 -0
  282. package/src/Model/filter/types/path/common.ts +404 -0
  283. package/src/Model/filter/types/path/eager.ts +329 -0
  284. package/src/Model/filter/types/path/index.ts +4 -0
  285. package/src/Model/filter/types/utils.ts +128 -0
  286. package/src/Model/filter/types/validator.ts +46 -0
  287. package/src/Model/filter/types.ts +6 -0
  288. package/src/Model/query/dsl.ts +3092 -0
  289. package/src/Model/query/new-kid-interpreter.ts +532 -0
  290. package/src/Model/query.ts +13 -0
  291. package/src/Model.ts +5 -0
  292. package/src/NonEmptySet.ts +6 -4
  293. package/src/Option.ts +2 -0
  294. package/src/Pure.ts +10 -7
  295. package/src/QueueMaker.ts +11 -0
  296. package/src/RequestContext.ts +48 -0
  297. package/src/RequestScopedDependencies.ts +45 -0
  298. package/src/Schema/Class.ts +648 -60
  299. package/src/Schema/SchemaParser.ts +12 -0
  300. package/src/Schema/SpecialJsonSchema.ts +137 -0
  301. package/src/Schema/SpecialOpenApi.ts +130 -0
  302. package/src/Schema/brand.ts +24 -9
  303. package/src/Schema/email.ts +9 -7
  304. package/src/Schema/ext.ts +502 -98
  305. package/src/Schema/moreStrings.ts +145 -83
  306. package/src/Schema/numbers.ts +97 -28
  307. package/src/Schema/phoneNumber.ts +8 -8
  308. package/src/Schema/schema.ts +1 -1
  309. package/src/Schema/strings.ts +23 -14
  310. package/src/Schema.ts +403 -46
  311. package/src/SchemaAST.ts +1 -0
  312. package/src/Set.ts +6 -2
  313. package/src/Store.ts +280 -0
  314. package/src/_ext/Array.ts +4 -2
  315. package/src/_ext/misc.ts +4 -1
  316. package/src/_ext/ord.ext.ts +2 -1
  317. package/src/builtin-json.d.ts +24 -0
  318. package/src/builtin.ts +16 -21
  319. package/src/client/InvalidationKeys.ts +55 -0
  320. package/src/client/apiClientFactory.ts +301 -141
  321. package/src/client/clientFor.ts +107 -34
  322. package/src/client/errors.ts +100 -29
  323. package/src/client/makeClient.ts +594 -80
  324. package/src/client.ts +6 -4
  325. package/src/http/Request.ts +3 -3
  326. package/src/http.ts +1 -1
  327. package/src/ids.ts +33 -6
  328. package/src/index.ts +20 -23
  329. package/src/middleware.ts +13 -9
  330. package/src/rpc/Invalidation.ts +278 -0
  331. package/src/rpc/MiddlewareMaker.ts +88 -80
  332. package/src/rpc/README.md +2 -2
  333. package/src/rpc/RpcContextMap.ts +7 -6
  334. package/src/rpc/RpcMiddleware.ts +19 -13
  335. package/src/rpc.ts +4 -4
  336. package/src/runtime.ts +57 -0
  337. package/src/setupRequest.ts +138 -0
  338. package/src/toast.ts +54 -0
  339. package/src/transform.ts +4 -4
  340. package/src/utils/effectify.ts +1 -1
  341. package/src/utils/gen.ts +8 -8
  342. package/src/utils/logLevel.ts +1 -1
  343. package/src/utils/logger.ts +4 -3
  344. package/src/utils.ts +85 -158
  345. package/src/validation.ts +2 -2
  346. package/src/withToast.ts +133 -0
  347. package/test/dist/rpc.test.d.ts.map +1 -1
  348. package/test/dist/rpcMiddlewareContext.test.d.ts.map +1 -0
  349. package/test/dist/secretURL.test.d.ts.map +1 -0
  350. package/test/dist/special.test.d.ts.map +1 -0
  351. package/test/moreStrings.test.ts +7 -9
  352. package/test/rpc.test.ts +42 -14
  353. package/test/rpcMiddlewareContext.test.ts +63 -0
  354. package/test/schema.test.ts +514 -35
  355. package/test/secretURL.test.ts +160 -0
  356. package/test/special.test.ts +1261 -0
  357. package/test/utils.test.ts +7 -7
  358. package/tsconfig.base.json +6 -5
  359. package/tsconfig.json +9 -2
  360. package/tsconfig.src.json +29 -29
  361. package/tsconfig.test.json +2 -2
  362. package/dist/Operations.d.ts +0 -123
  363. package/dist/Operations.d.ts.map +0 -1
  364. package/dist/Operations.js +0 -29
  365. package/dist/ServiceMap.d.ts.map +0 -1
  366. package/dist/ServiceMap.js +0 -91
  367. package/eslint.config.mjs +0 -26
  368. package/src/Operations.ts +0 -55
  369. package/tsconfig.json.bak +0 -12
@@ -1,31 +1,33 @@
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";
13
+ import * as DataDependencies from "../DataDependencies.js";
10
14
  import * as Effect from "../Effect.js";
11
15
  import { HttpClient, HttpClientRequest } from "../http.js";
12
- import * as Option from "../Option.js";
13
- import * as ServiceMap from "../ServiceMap.js";
16
+ import { Invalidation } from "../rpc.js";
14
17
  import { typedKeysOf, typedValuesOf } from "../utils.js";
18
+ import { InvalidationKeysFromServer } from "./InvalidationKeys.js";
15
19
  export const DefaultApiConfig = Config.all({
16
- url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
17
- headers: Config
18
- .schema(Config.Record(Schema.String, Schema.String), "headers")
19
- .pipe(Config.option)
20
+ url: Config.String("apiUrl").pipe(Config.withDefault("/api")),
21
+ headers: Config.Record(Schema.String, Schema.String, "headers").pipe(Config.option)
20
22
  });
21
- class RequestName extends ServiceMap.Reference("RequestName", {
23
+ class RequestName extends Context.Reference("RequestName", {
22
24
  defaultValue: () => ({ requestName: "Unspecified", moduleName: "Error" })
23
25
  }) {
24
26
  }
25
27
  export const HttpClientLayer = (config) => Layer.effect(HttpClient.HttpClient, Effect
26
28
  .gen(function* () {
27
29
  const baseClient = yield* HttpClient.HttpClient;
28
- const client = baseClient.pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")), HttpClient.mapRequest(HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => ({}))))), HttpClient.mapRequestEffect((req) => Effect.map(RequestName.asEffect(), (ctx) => flow(HttpClientRequest.appendUrlParam("action", ctx.requestName), HttpClientRequest.appendUrl("/" + ctx.moduleName))(req))));
30
+ const client = baseClient.pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")), HttpClient.mapRequest(HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => ({}))))), HttpClient.mapRequestEffect((req) => Effect.map(RequestName, (ctx) => flow(HttpClientRequest.appendUrlParam("action", ctx.requestName), HttpClientRequest.appendUrl("/" + ctx.moduleName))(req))));
29
31
  return client;
30
32
  }));
31
33
  export const HttpClientFromConfigLayer = Layer.unwrap(Effect.gen(function* () {
@@ -45,49 +47,105 @@ const getFiltered = (resource) => {
45
47
  return filtered;
46
48
  };
47
49
  export const getMeta = (resource) => {
48
- const meta = resource.meta;
49
- if (!meta)
50
- throw new Error("No meta defined in Resource!");
51
- return meta;
50
+ const first = typedValuesOf(getFiltered(resource))[0];
51
+ if (first && "moduleName" in first)
52
+ return { moduleName: first.moduleName, middleware: first.middleware };
53
+ throw new Error("No moduleName on requests!");
52
54
  };
53
- export const makeRpcGroupFromRequestsAndModuleName = (resource, moduleName) => {
55
+ export const makeRpcGroupFromRequestsAndModuleName = (resource, moduleName,
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ middleware) => {
54
58
  const filtered = getFiltered(resource);
55
- const rpcs = RpcGroup
59
+ const baseRpcs = RpcGroup
56
60
  .make(...typedValuesOf(filtered).map((_) => {
57
- return Rpc.make(_._tag, { payload: _, success: _.success, error: _.error });
61
+ const r = _;
62
+ const isStream = r.stream;
63
+ const isCommand = r.type === "command";
64
+ return (isCommand
65
+ ? isStream
66
+ ? Invalidation.makeStreamRpc(r._tag, {
67
+ payload: r,
68
+ success: r.success,
69
+ error: r.error,
70
+ stream: true
71
+ })
72
+ : Invalidation.makeCommandRpc(r._tag, { payload: r, success: r.success, error: r.error })
73
+ : Rpc.make(r._tag, {
74
+ payload: r,
75
+ success: isStream ? r.success : Invalidation.QueryResponseWithMetaData(r.success),
76
+ error: r.error,
77
+ stream: isStream
78
+ }));
58
79
  }))
59
80
  .prefix(`${moduleName}.`);
81
+ // Attach the middleware tag (schema-only on the client — no Live invoked)
82
+ // so its declared `error` joins the rpc failure union via
83
+ // `Rpc.exitSchema`'s `rpc.middlewares[*].error` walk. Required for stream
84
+ // rpcs whose top-level `errorSchema` is forced to `Never` by effect-rpc;
85
+ // without it, middleware-thrown errors fail client decode.
86
+ const rpcs = (middleware ? baseRpcs.middleware(middleware) : baseRpcs);
60
87
  return rpcs;
61
88
  };
62
- export const makeRpcGroup = (resource) => makeRpcGroupFromRequestsAndModuleName(resource, resource.meta.moduleName);
63
- const makeRpcTag = (resource) => {
89
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
+ const makeRpcTag = (resource, middleware) => {
64
91
  const meta = getMeta(resource);
65
- const rpcs = makeRpcGroupFromRequestsAndModuleName(resource, meta.moduleName);
92
+ const rpcs = makeRpcGroupFromRequestsAndModuleName(resource, meta.moduleName, middleware);
66
93
  // Use Object.assign instead of class extension to avoid TS2509 with complex generic return types.
67
94
  // 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}`);
95
+ const TheClient = Context.Opaque()(`RpcClient.${meta.moduleName}`);
69
96
  // Use Layer.effect directly (not TheClient.toLayer) so TypeScript properly excludes Scope
70
- const layer = Layer.effect(TheClient, RpcClient.make(rpcs, { spanPrefix: "RpcClient." + meta.moduleName }));
97
+ const layer = Layer.effect(TheClient, RpcClient.make(rpcs));
71
98
  return Object.assign(TheClient, { layer });
72
99
  };
73
100
  const makeApiClientFactory = Effect
74
101
  .gen(function* () {
75
- const ctx = yield* Effect.services();
76
- const makeClientFor = (resource, requestLevelLayers = Layer.empty, options) => Effect.gen(function* () {
77
- const TheClient = makeRpcTag(resource);
102
+ const ctx = yield* Effect.context();
103
+ const makeClientFor = Effect.fnUntraced(function* (resource, requestLevelLayers = Layer.empty, options) {
78
104
  const meta = getMeta(resource);
105
+ const TheClient = makeRpcTag(resource, meta.middleware);
79
106
  // TODO: somehow we need a protocol per REQUEST kind of it seems ...
80
107
  // otherwise it locks up on the client, navigation remains empty...
81
108
  const clientLayer = TheClient.layer.pipe(
82
109
  // add ApiClientFactory for nested schemas
83
110
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
84
111
  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)))));
112
+ .layerProtocolHttp({ url: "" }) // why not here set meta.moduleName as root?
113
+ .pipe(Layer.provideMerge(Layer.succeedContext(ctx)))));
89
114
  const mr = ManagedRuntime.make(clientLayer);
90
115
  const filtered = getFiltered(resource);
116
+ // Unwrap `CommandResponseWithMetaData` (success) and `CommandFailureWithMetaData`
117
+ // (handler-thrown failure): forward accumulated invalidation keys to
118
+ // `InvalidationKeysFromServer` and yield the raw payload / re-fail with the raw
119
+ // error. Middleware-thrown failures arrive raw on the Cause already (no wrap to
120
+ // strip) — the `else` branch passes them through.
121
+ const forwardDependencies = (dependencies, options) => dependencies === undefined
122
+ ? Effect.void
123
+ : Effect.gen(function* () {
124
+ const dependencyRecorder = yield* DataDependencies.getDataDependencyRecorder;
125
+ if (options?.reads) {
126
+ yield* Effect.forEach(dependencies.reads, dependencyRecorder.read, { discard: true });
127
+ }
128
+ yield* Effect.forEach(dependencies.writes, dependencyRecorder.write, { discard: true });
129
+ });
130
+ const unwrapCommand = (eff) => eff.pipe(Effect.flatMap((result) => Effect.gen(function* () {
131
+ const keys = result?.metadata?.invalidateQueries ?? [];
132
+ const invalidationKeys = yield* InvalidationKeysFromServer;
133
+ yield* Effect.forEach(keys, (key) => invalidationKeys.add(key), { discard: true });
134
+ yield* forwardDependencies(result?.metadata?.dataDependencies);
135
+ return result.payload;
136
+ })), Effect.catch((result) => result?._tag === "CommandFailureWithMetaData"
137
+ ? Effect.gen(function* () {
138
+ const keys = result.metadata?.invalidateQueries ?? [];
139
+ const invalidationKeys = yield* InvalidationKeysFromServer;
140
+ yield* Effect.forEach(keys, (key) => invalidationKeys.add(key), { discard: true });
141
+ yield* forwardDependencies(result.metadata?.dataDependencies);
142
+ return yield* Effect.fail(result.error);
143
+ })
144
+ : Effect.fail(result)));
145
+ const unwrapQuery = (eff) => eff.pipe(Effect.flatMap((result) => Effect.gen(function* () {
146
+ yield* forwardDependencies(result?.metadata?.dataDependencies, { reads: true });
147
+ return result.payload;
148
+ })));
91
149
  return {
92
150
  mr,
93
151
  client: typedKeysOf(filtered)
@@ -99,7 +157,10 @@ const makeApiClientFactory = Effect
99
157
  const requestMeta = {
100
158
  Request,
101
159
  id,
102
- options
160
+ options,
161
+ disableQueryInvalidation: h
162
+ .config
163
+ ?.disableQueryInvalidation === true
103
164
  };
104
165
  const requestNameLayer = Layer.succeed(RequestName, {
105
166
  requestName: cur,
@@ -108,18 +169,75 @@ const makeApiClientFactory = Effect
108
169
  const layers = requestLevelLayers.pipe(Layer.provideMerge(requestNameLayer));
109
170
  const fields = Struct.omit(Request.fields, ["_tag"]);
110
171
  const requestAttr = `${meta.moduleName}.${h._tag}`;
172
+ const isCommand = h.type === "command";
173
+ const isStream = h.stream;
174
+ const buildEffect = (input) => mr.contextEffect.pipe(Effect.flatMap((svcs) => {
175
+ const rpcEffect = TheClient
176
+ .use((client) => client[requestAttr](Request.make(input)))
177
+ .pipe(
178
+ // local: true → isolate to this RPC call. `layers` is pure today
179
+ // (RequestName + caller-supplied requestLevelLayers), but the
180
+ // flag prevents a stateful caller-supplied layer from leaking
181
+ // across RPC calls via the ambient fiber MemoMap.
182
+ Effect.provide(layers, { local: true }), Effect.provide(svcs));
183
+ return isCommand ? unwrapCommand(rpcEffect) : isStream ? rpcEffect : unwrapQuery(rpcEffect);
184
+ }),
185
+ // Forwarding the server's dependency metadata needs a recorder in scope. A parent
186
+ // query/command (vue) provides one; a top-level call gets a fresh per-request one.
187
+ DataDependencies.ensureDataDependencyRecorder);
188
+ const buildStream = (input) => {
189
+ const stream = Stream.unwrap(mr.contextEffect.pipe(Effect.flatMap((svcs) => TheClient
190
+ .useSync((client) => {
191
+ const rpcStream = client[requestAttr](Request.make(input));
192
+ return rpcStream.pipe(
193
+ // Collect server invalidation keys from the "done" chunk, then discard it.
194
+ Stream.tap((item) => item._tag === "done" || item._tag === "metadata"
195
+ ? Effect.gen(function* () {
196
+ const metadata = item.metadata;
197
+ const invalidationKeys = yield* InvalidationKeysFromServer;
198
+ yield* Effect.forEach(metadata.invalidateQueries, invalidationKeys.add, {
199
+ discard: true
200
+ });
201
+ const dependencyRecorder = yield* DataDependencies.getDataDependencyRecorder;
202
+ yield* Effect.forEach(metadata.dataDependencies.reads, dependencyRecorder.read, { discard: true });
203
+ yield* Effect.forEach(metadata.dataDependencies.writes, dependencyRecorder.write, { discard: true });
204
+ })
205
+ : Effect.void), Stream.filter((item) => item._tag === "value"), Stream.map((item) => item.value),
206
+ // V2: unwrap StreamFailureChunk — forward keys from failures too,
207
+ // then re-fail with the original error so callers see the unmodified
208
+ // error type.
209
+ Stream.catch((err) => err?._tag === "error" && err?.metadata
210
+ ? Stream.fromEffect(Effect.gen(function* () {
211
+ const metadata = err.metadata;
212
+ const invalidationKeys = yield* InvalidationKeysFromServer;
213
+ yield* Effect.forEach(metadata.invalidateQueries, invalidationKeys.add, {
214
+ discard: true
215
+ });
216
+ const dependencyRecorder = yield* DataDependencies.getDataDependencyRecorder;
217
+ yield* Effect.forEach(metadata.dataDependencies.writes, dependencyRecorder.write, { discard: true });
218
+ return yield* Effect.fail(err.error);
219
+ }))
220
+ : Stream.fail(err)),
221
+ // local: true — see buildEffect above.
222
+ Stream.provide(layers, { local: true }), Stream.provide(svcs));
223
+ })
224
+ .pipe(Effect.provide(svcs)))));
225
+ // Forwarding the server's dependency metadata needs a recorder in scope. A parent
226
+ // query/command (vue) provides one; a top-level stream call gets a fresh per-request one.
227
+ return Stream.unwrap(Effect.map(DataDependencies.DataDependencyRecorder, (current) => current === "root"
228
+ ? Stream.provide(stream, DataDependencies.DataDependencyRecorder.layer)
229
+ : stream));
230
+ };
111
231
  // @ts-expect-error doc
112
232
  prev[cur] = Object.keys(fields).length === 0
113
233
  ? {
114
- handler: mr.servicesEffect.pipe(Effect.flatMap((svcs) => TheClient
115
- .use((client) => client[requestAttr](new Request()))
116
- .pipe(Effect.provide(layers), Effect.provide(svcs)))),
234
+ handler: isStream ? constant(buildStream({})) : constant(buildEffect({})),
117
235
  ...requestMeta
118
236
  }
119
237
  : {
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)))),
238
+ handler: isStream
239
+ ? (req) => buildStream(req)
240
+ : (req) => buildEffect(req),
123
241
  ...requestMeta
124
242
  };
125
243
  return prev;
@@ -135,7 +253,7 @@ const makeApiClientFactory = Effect
135
253
  cache = new Map();
136
254
  cacheL.set(requestLevelLayers, cache);
137
255
  }
138
- return (models) => Effect.gen(function* () {
256
+ return Effect.fnUntraced(function* (models) {
139
257
  const found = cache.get(models);
140
258
  if (found) {
141
259
  return found;
@@ -151,7 +269,7 @@ const makeApiClientFactory = Effect
151
269
  /**
152
270
  * Used to create clients for resource modules.
153
271
  */
154
- export class ApiClientFactory extends ServiceMap.Opaque()("ApiClientFactory") {
272
+ export class ApiClientFactory extends Context.Opaque()("ApiClientFactory") {
155
273
  static layer = (config) => ApiClientFactory.toLayer(makeApiClientFactory).pipe(Layer.provide(RpcSerializationLayer(config)));
156
274
  static layerFromConfig = Layer.unwrap(Effect.gen(function* () {
157
275
  const config = yield* DefaultApiConfig;
@@ -162,4 +280,4 @@ export class ApiClientFactory extends ServiceMap.Opaque()("ApiClientFactory") {
162
280
  return f(resource);
163
281
  });
164
282
  }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBRXRDLE9BQU8sS0FBSyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFReEQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUN6QyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxPQUFPLEVBQUUsTUFBTTtTQUNaLE1BQU0sQ0FDTCxNQUFNLENBQUMsTUFBTSxDQUFD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
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDaEYsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxLQUFLLGdCQUFnQixNQUFNLHdCQUF3QixDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQU9sRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxN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
@@ -1,41 +1,77 @@
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
- export type ExtractResponse<T> = T extends S.Codec<any> ? S.Schema.Type<T> : T extends unknown ? void : never;
16
- 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>;
16
+ export type ExtractResponse<T> = T extends S.Codec<any> ? T["Type"] : T extends unknown ? void : never;
17
+ export type ExtractEResponse<T> = T extends S.Codec<any> ? T["Encoded"] : T extends unknown ? void : never;
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;
30
+ queryKeyProjectionHash?: string;
31
+ disableQueryInvalidation?: boolean;
27
32
  }
28
- export interface RequestHandlerWithInput<I, A, E, R, Request extends Req, Id extends string> {
29
- handler: (i: I) => Effect.Effect<A, E, R>;
33
+ /** Type alias: a no-input handler is simply `RequestHandlerWithInput<void, …>`. */
34
+ export type RequestHandler<A, E, R, Request extends Req, Id extends string> = RequestHandlerWithInput<void, A, E, R, Request, Id>;
35
+ export interface RequestStreamHandlerWithInput<I, A, E, R, Request extends Req, Id extends string, Final = A> {
36
+ handler: (i: I) => Stream.Stream<A, E, R>;
30
37
  id: Id;
31
38
  options?: ClientForOptions;
32
39
  Request: Request;
40
+ /**
41
+ * Phantom type property (never set at runtime) that carries the `Final` type to
42
+ * `StreamMutationWithExtensions`. The tilde prefix follows the Effect convention for
43
+ * phantom/virtual properties and prevents accidental runtime access.
44
+ * Stream failures bubble through the execute effect's typed error channel `E`;
45
+ * the reactive `AsyncResult` ref also mirrors the failure for live progress UI.
46
+ */
47
+ readonly "~final"?: Final;
33
48
  }
34
- type ReqDecodingServices<M> = M extends {
35
- readonly "~decodingServices": infer DS;
36
- } ? DS : never;
49
+ /** Type alias: a no-input stream handler is simply `RequestStreamHandlerWithInput<void, …>`. */
50
+ export type RequestStreamHandler<A, E, R, Request extends Req, Id extends string, Final = A> = RequestStreamHandlerWithInput<void, A, E, R, Request, Id, Final>;
51
+ export type RequestInputFromMake<I extends {
52
+ readonly make: (...args: any[]) => any;
53
+ }> = Parameters<I["make"]> extends [
54
+ ] ? void : Parameters<I["make"]>[0];
55
+ type HasNoFields<I> = I extends {
56
+ readonly fields: infer F extends S.Struct.Fields;
57
+ } ? [Exclude<keyof F, "_tag">] extends [never] ? true : false : false;
58
+ type RequestInput<I extends {
59
+ readonly make: (...args: any[]) => any;
60
+ }> = Parameters<I["make"]>[0];
61
+ /**
62
+ * Caller-facing input type for a request. `void` when the request schema has no fields;
63
+ * otherwise `make`'s first param type.
64
+ */
65
+ export type HandlerInput<I extends {
66
+ readonly make: (...args: any[]) => any;
67
+ }> = HasNoFields<I> extends true ? void : RequestInput<I>;
68
+ /** Extracts the final-value type from a stream request. Defaults to the success type when no `final` schema is set. */
69
+ type FinalTypeOf<T extends Req> = T extends {
70
+ readonly final: infer F extends S.Top;
71
+ } ? F["Type"] : T["success"]["Type"];
72
+ type RequestHandlerFor<R, E, T extends Req, Id extends string> = T["stream"] extends true ? RequestStreamHandlerWithInput<HandlerInput<T>, T["success"]["Type"], T["error"]["Type"] | E, R | T["success"]["DecodingServices"] | T["error"]["DecodingServices"], T, Id, FinalTypeOf<T>> : RequestHandlerWithInput<HandlerInput<T>, T["success"]["Type"], T["error"]["Type"] | E, R | T["success"]["DecodingServices"] | T["error"]["DecodingServices"], T, Id>;
37
73
  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}`>;
74
+ [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
75
  };
40
76
  export {};
41
77
  //# sourceMappingURL=clientFor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,12 @@ export function makePathWithQuery(path, pars) {
13
13
  export function makePathWithBody(path, pars) {
14
14
  return path.build(pars, { ignoreSearch: true, ignoreConstraints: true });
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUd2QyxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFLN0IsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUFVLEVBQ1YsSUFTQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQSxDQUFDLHFIQUFxSDtJQUNySSxPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO1VBQy9ELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3RCLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNSLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFVLEVBQ1YsSUFTQztJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDMUUsQ0FBQyJ9
16
+ // $Project/$Configuration.Index
17
+ // -> "$Project", "$Configuration", "Index"
18
+ export const makeQueryKey = ({ id, options }) => id
19
+ .split("/")
20
+ .filter((segment) => !options || !options.skipQueryKey?.includes(segment))
21
+ .map((segment) => "$" + segment)
22
+ .join(".")
23
+ .split(".");
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUd2QyxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFLN0IsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUFVLEVBQ1YsSUFTQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQSxDQUFDLHFIQUFxSDtJQUNySSxPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO1VBQy9ELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3RCLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNSLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFVLEVBQ1YsSUFTQztJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQXNDRCxnQ0FBZ0M7QUFDaEMsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBOEMsRUFBRSxFQUFFLENBQzFGLEVBQUU7S0FDQyxLQUFLLENBQUMsR0FBRyxDQUFDO0tBQ1YsTUFBTSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2pGLEdBQUcsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQztLQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDO0tBQ1QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBIn0=