effect 4.0.3 → 4.0.5

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 (449) hide show
  1. package/AGENTS.md +24 -0
  2. package/CLAUDE.md +24 -0
  3. package/ai-docs/package.json +2 -2
  4. package/ai-docs/src/52_graphql/10_basics.ts +117 -0
  5. package/ai-docs/src/52_graphql/20_testing.ts +45 -0
  6. package/ai-docs/src/52_graphql/30_batching.ts +118 -0
  7. package/ai-docs/src/52_graphql/40_aliased-batching.ts +124 -0
  8. package/ai-docs/src/52_graphql/50_errors-and-retries.ts +74 -0
  9. package/ai-docs/src/52_graphql/index.md +6 -0
  10. package/dist/Array.d.ts +90 -6
  11. package/dist/Array.d.ts.map +1 -1
  12. package/dist/Array.js +4 -2
  13. package/dist/Array.js.map +1 -1
  14. package/dist/Channel.d.ts +6 -1
  15. package/dist/Channel.d.ts.map +1 -1
  16. package/dist/Channel.js +17 -3
  17. package/dist/Channel.js.map +1 -1
  18. package/dist/ConfigProvider.d.ts.map +1 -1
  19. package/dist/ConfigProvider.js +33 -32
  20. package/dist/ConfigProvider.js.map +1 -1
  21. package/dist/Context.d.ts.map +1 -1
  22. package/dist/Context.js +9 -0
  23. package/dist/Context.js.map +1 -1
  24. package/dist/Duration.d.ts.map +1 -1
  25. package/dist/Duration.js +2 -5
  26. package/dist/Duration.js.map +1 -1
  27. package/dist/Effect.d.ts +61 -19
  28. package/dist/Effect.d.ts.map +1 -1
  29. package/dist/Effect.js +58 -39
  30. package/dist/Effect.js.map +1 -1
  31. package/dist/FileSystem.d.ts +23 -9
  32. package/dist/FileSystem.d.ts.map +1 -1
  33. package/dist/FileSystem.js.map +1 -1
  34. package/dist/Match.d.ts +20 -6
  35. package/dist/Match.d.ts.map +1 -1
  36. package/dist/Match.js +2 -2
  37. package/dist/Match.js.map +1 -1
  38. package/dist/Path.d.ts +37 -5
  39. package/dist/Path.d.ts.map +1 -1
  40. package/dist/Path.js +36 -5
  41. package/dist/Path.js.map +1 -1
  42. package/dist/RequestResolver.d.ts.map +1 -1
  43. package/dist/RequestResolver.js +4 -10
  44. package/dist/RequestResolver.js.map +1 -1
  45. package/dist/Scheduler.d.ts +9 -0
  46. package/dist/Scheduler.d.ts.map +1 -1
  47. package/dist/Scheduler.js +9 -0
  48. package/dist/Scheduler.js.map +1 -1
  49. package/dist/Schema.d.ts +15 -2
  50. package/dist/Schema.d.ts.map +1 -1
  51. package/dist/Schema.js +16 -2
  52. package/dist/Schema.js.map +1 -1
  53. package/dist/SchemaGetter.d.ts +4 -0
  54. package/dist/SchemaGetter.d.ts.map +1 -1
  55. package/dist/SchemaGetter.js +52 -33
  56. package/dist/SchemaGetter.js.map +1 -1
  57. package/dist/Sink.d.ts.map +1 -1
  58. package/dist/Sink.js +38 -17
  59. package/dist/Sink.js.map +1 -1
  60. package/dist/Stream.d.ts +11 -0
  61. package/dist/Stream.d.ts.map +1 -1
  62. package/dist/Stream.js +16 -1
  63. package/dist/Stream.js.map +1 -1
  64. package/dist/String.d.ts +12 -0
  65. package/dist/String.d.ts.map +1 -1
  66. package/dist/String.js +17 -4
  67. package/dist/String.js.map +1 -1
  68. package/dist/TxRef.d.ts.map +1 -1
  69. package/dist/TxRef.js +3 -2
  70. package/dist/TxRef.js.map +1 -1
  71. package/dist/Utils.js +8 -3
  72. package/dist/Utils.js.map +1 -1
  73. package/dist/ai/AiError.d.ts +10 -10
  74. package/dist/ai/AiError.d.ts.map +1 -1
  75. package/dist/ai/AiError.js +1 -1
  76. package/dist/ai/AiError.js.map +1 -1
  77. package/dist/ai/AnthropicStructuredOutput.js +0 -2
  78. package/dist/ai/AnthropicStructuredOutput.js.map +1 -1
  79. package/dist/ai/Chat.d.ts +2 -2
  80. package/dist/ai/Chat.d.ts.map +1 -1
  81. package/dist/ai/Decision.d.ts +70 -19
  82. package/dist/ai/Decision.d.ts.map +1 -1
  83. package/dist/ai/Decision.js +37 -3
  84. package/dist/ai/Decision.js.map +1 -1
  85. package/dist/ai/DecisionModel.js +1 -1
  86. package/dist/ai/DecisionModel.js.map +1 -1
  87. package/dist/ai/LanguageModel.d.ts +38 -7
  88. package/dist/ai/LanguageModel.d.ts.map +1 -1
  89. package/dist/ai/LanguageModel.js +70 -40
  90. package/dist/ai/LanguageModel.js.map +1 -1
  91. package/dist/ai/McpServer.d.ts +61 -52
  92. package/dist/ai/McpServer.d.ts.map +1 -1
  93. package/dist/ai/McpServer.js +134 -50
  94. package/dist/ai/McpServer.js.map +1 -1
  95. package/dist/ai/Prompt.d.ts.map +1 -1
  96. package/dist/ai/Prompt.js +28 -5
  97. package/dist/ai/Prompt.js.map +1 -1
  98. package/dist/ai/Response.d.ts +5 -4
  99. package/dist/ai/Response.d.ts.map +1 -1
  100. package/dist/ai/Response.js.map +1 -1
  101. package/dist/cli/Completions.d.ts +5 -0
  102. package/dist/cli/Completions.d.ts.map +1 -1
  103. package/dist/cli/Completions.js.map +1 -1
  104. package/dist/cli/Flag.d.ts +100 -0
  105. package/dist/cli/Flag.d.ts.map +1 -1
  106. package/dist/cli/Flag.js +33 -0
  107. package/dist/cli/Flag.js.map +1 -1
  108. package/dist/cli/Param.d.ts +87 -0
  109. package/dist/cli/Param.d.ts.map +1 -1
  110. package/dist/cli/Param.js +30 -0
  111. package/dist/cli/Param.js.map +1 -1
  112. package/dist/cli/internal/command.d.ts.map +1 -1
  113. package/dist/cli/internal/command.js +2 -1
  114. package/dist/cli/internal/command.js.map +1 -1
  115. package/dist/cli/internal/completions/bash.js +4 -3
  116. package/dist/cli/internal/completions/bash.js.map +1 -1
  117. package/dist/cli/internal/completions/descriptor.js +8 -1
  118. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  119. package/dist/cli/internal/completions/fish.js +4 -4
  120. package/dist/cli/internal/completions/fish.js.map +1 -1
  121. package/dist/cli/internal/completions/powershell.js +3 -2
  122. package/dist/cli/internal/completions/powershell.js.map +1 -1
  123. package/dist/cli/internal/completions/zsh.js +7 -3
  124. package/dist/cli/internal/completions/zsh.js.map +1 -1
  125. package/dist/cli/internal/parser.js +11 -3
  126. package/dist/cli/internal/parser.js.map +1 -1
  127. package/dist/cli/internal/wizard.d.ts.map +1 -1
  128. package/dist/cli/internal/wizard.js +2 -1
  129. package/dist/cli/internal/wizard.js.map +1 -1
  130. package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -0
  131. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  132. package/dist/cluster/ClusterWorkflowEngine.js +113 -21
  133. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  134. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  135. package/dist/cluster/MessageStorage.js +20 -12
  136. package/dist/cluster/MessageStorage.js.map +1 -1
  137. package/dist/cluster/Runners.d.ts.map +1 -1
  138. package/dist/cluster/Runners.js +54 -34
  139. package/dist/cluster/Runners.js.map +1 -1
  140. package/dist/cluster/Sharding.d.ts.map +1 -1
  141. package/dist/cluster/Sharding.js +6 -4
  142. package/dist/cluster/Sharding.js.map +1 -1
  143. package/dist/cluster/internal/entityManager.js +1 -1
  144. package/dist/cluster/internal/entityManager.js.map +1 -1
  145. package/dist/encoding/Sse.d.ts +6 -0
  146. package/dist/encoding/Sse.d.ts.map +1 -1
  147. package/dist/encoding/Sse.js +63 -71
  148. package/dist/encoding/Sse.js.map +1 -1
  149. package/dist/graphql/GraphQL.d.ts +349 -0
  150. package/dist/graphql/GraphQL.d.ts.map +1 -0
  151. package/dist/graphql/GraphQL.js +207 -0
  152. package/dist/graphql/GraphQL.js.map +1 -0
  153. package/dist/graphql/GraphQLClient.d.ts +562 -0
  154. package/dist/graphql/GraphQLClient.d.ts.map +1 -0
  155. package/dist/graphql/GraphQLClient.js +505 -0
  156. package/dist/graphql/GraphQLClient.js.map +1 -0
  157. package/dist/graphql/GraphQLClientError.d.ts +445 -0
  158. package/dist/graphql/GraphQLClientError.d.ts.map +1 -0
  159. package/dist/graphql/GraphQLClientError.js +479 -0
  160. package/dist/graphql/GraphQLClientError.js.map +1 -0
  161. package/dist/graphql/GraphQLGroup.d.ts +118 -0
  162. package/dist/graphql/GraphQLGroup.d.ts.map +1 -0
  163. package/dist/graphql/GraphQLGroup.js +109 -0
  164. package/dist/graphql/GraphQLGroup.js.map +1 -0
  165. package/dist/graphql/GraphQLMiddleware.d.ts +249 -0
  166. package/dist/graphql/GraphQLMiddleware.d.ts.map +1 -0
  167. package/dist/graphql/GraphQLMiddleware.js +130 -0
  168. package/dist/graphql/GraphQLMiddleware.js.map +1 -0
  169. package/dist/graphql/GraphQLProtocol.d.ts +969 -0
  170. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -0
  171. package/dist/graphql/GraphQLProtocol.js +809 -0
  172. package/dist/graphql/GraphQLProtocol.js.map +1 -0
  173. package/dist/graphql/GraphQLResolver.d.ts +453 -0
  174. package/dist/graphql/GraphQLResolver.d.ts.map +1 -0
  175. package/dist/graphql/GraphQLResolver.js +582 -0
  176. package/dist/graphql/GraphQLResolver.js.map +1 -0
  177. package/dist/graphql/index.d.ts +40 -0
  178. package/dist/graphql/index.d.ts.map +1 -0
  179. package/dist/graphql/index.js +41 -0
  180. package/dist/graphql/index.js.map +1 -0
  181. package/dist/http/FetchHttpClient.d.ts +6 -3
  182. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  183. package/dist/http/FetchHttpClient.js +6 -3
  184. package/dist/http/FetchHttpClient.js.map +1 -1
  185. package/dist/http/FindMyWay/internal/router.js +2 -1
  186. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  187. package/dist/http/Headers.d.ts +3 -3
  188. package/dist/http/Headers.d.ts.map +1 -1
  189. package/dist/http/Headers.js +6 -5
  190. package/dist/http/Headers.js.map +1 -1
  191. package/dist/http/HttpClient.d.ts +27 -0
  192. package/dist/http/HttpClient.d.ts.map +1 -1
  193. package/dist/http/HttpClient.js +38 -11
  194. package/dist/http/HttpClient.js.map +1 -1
  195. package/dist/http/HttpClientError.d.ts.map +1 -1
  196. package/dist/http/HttpClientError.js +8 -6
  197. package/dist/http/HttpClientError.js.map +1 -1
  198. package/dist/http/HttpClientRequest.d.ts +147 -4
  199. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  200. package/dist/http/HttpClientRequest.js +47 -1
  201. package/dist/http/HttpClientRequest.js.map +1 -1
  202. package/dist/http/HttpEffect.d.ts.map +1 -1
  203. package/dist/http/HttpEffect.js +14 -7
  204. package/dist/http/HttpEffect.js.map +1 -1
  205. package/dist/http/HttpMiddleware.d.ts +60 -0
  206. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  207. package/dist/http/HttpMiddleware.js +93 -32
  208. package/dist/http/HttpMiddleware.js.map +1 -1
  209. package/dist/http/HttpRouter.d.ts +35 -0
  210. package/dist/http/HttpRouter.d.ts.map +1 -1
  211. package/dist/http/HttpRouter.js +87 -13
  212. package/dist/http/HttpRouter.js.map +1 -1
  213. package/dist/http/HttpServerError.d.ts.map +1 -1
  214. package/dist/http/HttpServerError.js +6 -4
  215. package/dist/http/HttpServerError.js.map +1 -1
  216. package/dist/http/HttpServerRequest.js +2 -2
  217. package/dist/http/HttpServerRequest.js.map +1 -1
  218. package/dist/http/HttpServerResponse.d.ts +8 -6
  219. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  220. package/dist/http/HttpServerResponse.js +27 -16
  221. package/dist/http/HttpServerResponse.js.map +1 -1
  222. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  223. package/dist/http/HttpStaticServer.js +4 -10
  224. package/dist/http/HttpStaticServer.js.map +1 -1
  225. package/dist/http/HttpTraceContext.js +1 -1
  226. package/dist/http/HttpTraceContext.js.map +1 -1
  227. package/dist/http/Multipart.d.ts.map +1 -1
  228. package/dist/http/Multipart.js +15 -1
  229. package/dist/http/Multipart.js.map +1 -1
  230. package/dist/http/Url.d.ts.map +1 -1
  231. package/dist/http/Url.js +2 -1
  232. package/dist/http/Url.js.map +1 -1
  233. package/dist/http/UrlParams.d.ts +112 -8
  234. package/dist/http/UrlParams.d.ts.map +1 -1
  235. package/dist/http/UrlParams.js +141 -14
  236. package/dist/http/UrlParams.js.map +1 -1
  237. package/dist/http/internal/compression.d.ts +1 -1
  238. package/dist/http/internal/compression.d.ts.map +1 -1
  239. package/dist/http/internal/compression.js +2 -10
  240. package/dist/http/internal/compression.js.map +1 -1
  241. package/dist/http/internal/compressionBody.d.ts +2 -0
  242. package/dist/http/internal/compressionBody.d.ts.map +1 -0
  243. package/dist/http/internal/compressionBody.js +36 -0
  244. package/dist/http/internal/compressionBody.js.map +1 -0
  245. package/dist/http/internal/decompression.d.ts +2 -0
  246. package/dist/http/internal/decompression.d.ts.map +1 -0
  247. package/dist/http/internal/decompression.js +162 -0
  248. package/dist/http/internal/decompression.js.map +1 -0
  249. package/dist/http/internal/tracing.js +14 -4
  250. package/dist/http/internal/tracing.js.map +1 -1
  251. package/dist/http/internal/urlParams.d.ts +2 -0
  252. package/dist/http/internal/urlParams.d.ts.map +1 -0
  253. package/dist/http/internal/urlParams.js +4 -0
  254. package/dist/http/internal/urlParams.js.map +1 -0
  255. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  256. package/dist/http-api/HttpApiClient.js +2 -1
  257. package/dist/http-api/HttpApiClient.js.map +1 -1
  258. package/dist/http-api/HttpApiScalar.d.ts +5 -0
  259. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  260. package/dist/http-api/HttpApiScalar.js.map +1 -1
  261. package/dist/internal/core.js +17 -1
  262. package/dist/internal/core.js.map +1 -1
  263. package/dist/internal/dateTime.js +40 -35
  264. package/dist/internal/dateTime.js.map +1 -1
  265. package/dist/internal/effect.js +13 -6
  266. package/dist/internal/effect.js.map +1 -1
  267. package/dist/internal/graphql.d.ts +2 -0
  268. package/dist/internal/graphql.d.ts.map +1 -0
  269. package/dist/internal/graphql.js +205 -0
  270. package/dist/internal/graphql.js.map +1 -0
  271. package/dist/internal/graphqlHeaders.d.ts +4 -0
  272. package/dist/internal/graphqlHeaders.d.ts.map +1 -0
  273. package/dist/internal/graphqlHeaders.js +11 -0
  274. package/dist/internal/graphqlHeaders.js.map +1 -0
  275. package/dist/internal/request.js +20 -1
  276. package/dist/internal/request.js.map +1 -1
  277. package/dist/internal/schema/toCodeDocument.js +4 -1
  278. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  279. package/dist/internal/schema/toJsonSchemaDocument.js +29 -5
  280. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  281. package/dist/internal/version.js +1 -1
  282. package/dist/net/Host.d.ts +49 -0
  283. package/dist/net/Host.d.ts.map +1 -1
  284. package/dist/net/Host.js +55 -0
  285. package/dist/net/Host.js.map +1 -1
  286. package/dist/net/NetAddress.d.ts +8 -0
  287. package/dist/net/NetAddress.d.ts.map +1 -1
  288. package/dist/net/NetAddress.js +8 -0
  289. package/dist/net/NetAddress.js.map +1 -1
  290. package/dist/observability/Otlp.d.ts +15 -0
  291. package/dist/observability/Otlp.d.ts.map +1 -1
  292. package/dist/observability/Otlp.js +3 -0
  293. package/dist/observability/Otlp.js.map +1 -1
  294. package/dist/observability/OtlpExporter.d.ts +8 -0
  295. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  296. package/dist/observability/OtlpExporter.js +10 -1
  297. package/dist/observability/OtlpExporter.js.map +1 -1
  298. package/dist/observability/OtlpLogger.d.ts +17 -0
  299. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  300. package/dist/observability/OtlpLogger.js +14 -1
  301. package/dist/observability/OtlpLogger.js.map +1 -1
  302. package/dist/observability/OtlpMetrics.d.ts +17 -0
  303. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  304. package/dist/observability/OtlpMetrics.js +13 -0
  305. package/dist/observability/OtlpMetrics.js.map +1 -1
  306. package/dist/observability/OtlpTracer.d.ts +17 -0
  307. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  308. package/dist/observability/OtlpTracer.js +15 -2
  309. package/dist/observability/OtlpTracer.js.map +1 -1
  310. package/dist/reactivity/AsyncResult.d.ts +6 -0
  311. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  312. package/dist/reactivity/AsyncResult.js +27 -0
  313. package/dist/reactivity/AsyncResult.js.map +1 -1
  314. package/dist/reactivity/AtomRegistry.js +3 -1
  315. package/dist/reactivity/AtomRegistry.js.map +1 -1
  316. package/dist/rpc/RpcClient.d.ts.map +1 -1
  317. package/dist/rpc/RpcClient.js +6 -1
  318. package/dist/rpc/RpcClient.js.map +1 -1
  319. package/dist/rpc/RpcServer.d.ts.map +1 -1
  320. package/dist/rpc/RpcServer.js +36 -9
  321. package/dist/rpc/RpcServer.js.map +1 -1
  322. package/dist/socket/Socket.d.ts +6 -0
  323. package/dist/socket/Socket.d.ts.map +1 -1
  324. package/dist/socket/Socket.js.map +1 -1
  325. package/dist/sql/SqlClient.d.ts +8 -7
  326. package/dist/sql/SqlClient.d.ts.map +1 -1
  327. package/dist/sql/SqlClient.js +8 -7
  328. package/dist/sql/SqlClient.js.map +1 -1
  329. package/dist/testing/TestClock.d.ts +16 -3
  330. package/dist/testing/TestClock.d.ts.map +1 -1
  331. package/dist/testing/TestClock.js +112 -22
  332. package/dist/testing/TestClock.js.map +1 -1
  333. package/dist/workflow/Activity.js +1 -0
  334. package/dist/workflow/Activity.js.map +1 -1
  335. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  336. package/dist/workflow/DurableDeferred.js +32 -3
  337. package/dist/workflow/DurableDeferred.js.map +1 -1
  338. package/dist/workflow/Workflow.d.ts +22 -0
  339. package/dist/workflow/Workflow.d.ts.map +1 -1
  340. package/dist/workflow/Workflow.js +15 -3
  341. package/dist/workflow/Workflow.js.map +1 -1
  342. package/dist/workflow/WorkflowEngine.d.ts +44 -3
  343. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  344. package/dist/workflow/WorkflowEngine.js +45 -22
  345. package/dist/workflow/WorkflowEngine.js.map +1 -1
  346. package/package.json +6 -3
  347. package/src/Array.ts +95 -6
  348. package/src/Channel.ts +24 -3
  349. package/src/ConfigProvider.ts +40 -44
  350. package/src/Context.ts +9 -0
  351. package/src/Duration.ts +4 -5
  352. package/src/Effect.ts +140 -53
  353. package/src/FileSystem.ts +23 -9
  354. package/src/Match.ts +65 -12
  355. package/src/Path.ts +52 -7
  356. package/src/RequestResolver.ts +4 -10
  357. package/src/Scheduler.ts +9 -0
  358. package/src/Schema.ts +25 -4
  359. package/src/SchemaGetter.ts +47 -35
  360. package/src/Sink.ts +45 -18
  361. package/src/Stream.ts +33 -4
  362. package/src/String.ts +17 -4
  363. package/src/TxRef.ts +4 -2
  364. package/src/Utils.ts +8 -5
  365. package/src/ai/AiError.ts +3 -1
  366. package/src/ai/AnthropicStructuredOutput.ts +2 -2
  367. package/src/ai/Chat.ts +2 -2
  368. package/src/ai/Decision.ts +70 -21
  369. package/src/ai/DecisionModel.ts +1 -1
  370. package/src/ai/LanguageModel.ts +141 -63
  371. package/src/ai/McpServer.ts +259 -145
  372. package/src/ai/Prompt.ts +24 -10
  373. package/src/ai/Response.ts +6 -3
  374. package/src/cli/Completions.ts +5 -0
  375. package/src/cli/Flag.ts +101 -0
  376. package/src/cli/Param.ts +96 -0
  377. package/src/cli/internal/command.ts +2 -1
  378. package/src/cli/internal/completions/bash.ts +4 -3
  379. package/src/cli/internal/completions/descriptor.ts +10 -1
  380. package/src/cli/internal/completions/fish.ts +4 -4
  381. package/src/cli/internal/completions/powershell.ts +5 -2
  382. package/src/cli/internal/completions/zsh.ts +7 -3
  383. package/src/cli/internal/parser.ts +12 -3
  384. package/src/cli/internal/wizard.ts +2 -1
  385. package/src/cluster/ClusterWorkflowEngine.ts +143 -36
  386. package/src/cluster/MessageStorage.ts +14 -3
  387. package/src/cluster/Runners.ts +88 -66
  388. package/src/cluster/Sharding.ts +12 -9
  389. package/src/cluster/internal/entityManager.ts +1 -1
  390. package/src/encoding/Sse.ts +70 -80
  391. package/src/graphql/GraphQL.ts +494 -0
  392. package/src/graphql/GraphQLClient.ts +924 -0
  393. package/src/graphql/GraphQLClientError.ts +542 -0
  394. package/src/graphql/GraphQLGroup.ts +167 -0
  395. package/src/graphql/GraphQLMiddleware.ts +253 -0
  396. package/src/graphql/GraphQLProtocol.ts +1540 -0
  397. package/src/graphql/GraphQLResolver.ts +1038 -0
  398. package/src/graphql/index.ts +48 -0
  399. package/src/http/FetchHttpClient.ts +6 -3
  400. package/src/http/FindMyWay/internal/router.ts +2 -1
  401. package/src/http/Headers.ts +6 -9
  402. package/src/http/HttpClient.ts +72 -11
  403. package/src/http/HttpClientError.ts +10 -6
  404. package/src/http/HttpClientRequest.ts +173 -7
  405. package/src/http/HttpEffect.ts +11 -5
  406. package/src/http/HttpMiddleware.ts +113 -34
  407. package/src/http/HttpRouter.ts +95 -13
  408. package/src/http/HttpServerError.ts +8 -4
  409. package/src/http/HttpServerRequest.ts +2 -2
  410. package/src/http/HttpServerResponse.ts +28 -16
  411. package/src/http/HttpStaticServer.ts +4 -10
  412. package/src/http/HttpTraceContext.ts +1 -1
  413. package/src/http/Multipart.ts +17 -1
  414. package/src/http/Url.ts +2 -1
  415. package/src/http/UrlParams.ts +225 -26
  416. package/src/http/internal/compression.ts +3 -17
  417. package/src/http/internal/compressionBody.ts +56 -0
  418. package/src/http/internal/decompression.ts +226 -0
  419. package/src/http/internal/tracing.ts +21 -4
  420. package/src/http/internal/urlParams.ts +5 -0
  421. package/src/http-api/HttpApiClient.ts +2 -1
  422. package/src/http-api/HttpApiScalar.ts +5 -0
  423. package/src/internal/core.ts +21 -1
  424. package/src/internal/dateTime.ts +13 -10
  425. package/src/internal/effect.ts +13 -7
  426. package/src/internal/graphql.ts +286 -0
  427. package/src/internal/graphqlHeaders.ts +11 -0
  428. package/src/internal/request.ts +31 -3
  429. package/src/internal/schema/toCodeDocument.ts +7 -1
  430. package/src/internal/schema/toJsonSchemaDocument.ts +34 -2
  431. package/src/internal/version.ts +1 -1
  432. package/src/net/Host.ts +72 -0
  433. package/src/net/NetAddress.ts +9 -0
  434. package/src/observability/Otlp.ts +18 -0
  435. package/src/observability/OtlpExporter.ts +14 -3
  436. package/src/observability/OtlpLogger.ts +31 -2
  437. package/src/observability/OtlpMetrics.ts +30 -1
  438. package/src/observability/OtlpTracer.ts +32 -3
  439. package/src/reactivity/AsyncResult.ts +31 -0
  440. package/src/reactivity/AtomRegistry.ts +3 -1
  441. package/src/rpc/RpcClient.ts +6 -1
  442. package/src/rpc/RpcServer.ts +55 -15
  443. package/src/socket/Socket.ts +6 -0
  444. package/src/sql/SqlClient.ts +9 -7
  445. package/src/testing/TestClock.ts +144 -29
  446. package/src/workflow/Activity.ts +1 -0
  447. package/src/workflow/DurableDeferred.ts +43 -5
  448. package/src/workflow/Workflow.ts +31 -5
  449. package/src/workflow/WorkflowEngine.ts +107 -25
@@ -0,0 +1,582 @@
1
+ /**
2
+ * Batch lookups through a GraphQL client method with `RequestResolver`.
3
+ * {@link ordered} matches results by position; {@link findById} matches by
4
+ * key; {@link aliased} repeats an operation under aliases in one request.
5
+ * {@link request} turns any of them into `(key) => Effect`.
6
+ *
7
+ * Client middleware still run. When a method needs services, such as a
8
+ * middleware's `requires`, `batchKey` keeps lookups with different services
9
+ * in separate batches. Compose `RequestResolver.setDelay` and
10
+ * `RequestResolver.batchN` with `.pipe` to control batching.
11
+ *
12
+ * Lookups with different protocol URLs are batched separately. See
13
+ * `GraphQLProtocol.layerHttp` for middleware and caching constraints.
14
+ *
15
+ * @stability experimental
16
+ * @since 4.0.0
17
+ */
18
+ import * as Arr from "../Array.js";
19
+ import * as Cause from "../Cause.js";
20
+ import * as Context from "../Context.js";
21
+ import * as Effect from "../Effect.js";
22
+ import * as Exit from "../Exit.js";
23
+ import { dual } from "../Function.js";
24
+ import * as Headers from "../http/Headers.js";
25
+ import * as UrlParams from "../http/UrlParams.js";
26
+ import * as internalGraphQL from "../internal/graphql.js";
27
+ import * as MutableHashMap from "../MutableHashMap.js";
28
+ import * as Request from "../Request.js";
29
+ import * as RequestResolver from "../RequestResolver.js";
30
+ import { DecodeError } from "./GraphQLClientError.js";
31
+ // Requests are structural, so two requests with equal keys are one request.
32
+ const makeRequest = key => Request.of()({
33
+ key
34
+ });
35
+ // -----------------------------------------------------------------------------
36
+ // Running
37
+ // -----------------------------------------------------------------------------
38
+ /**
39
+ * Looks up a key with an {@link ordered}, {@link findById} or {@link aliased}
40
+ * resolver, using `request(resolver)(key)` or `request(key, resolver)`.
41
+ *
42
+ * **Details**
43
+ *
44
+ * Concurrent lookups are batched. Keys equal under `Equal` and `Hash`
45
+ * are sent once per batch and share the result.
46
+ *
47
+ * **Example** (Looking up repositories by id)
48
+ *
49
+ * ```ts import.meta.vitest
50
+ * import { Effect, Layer, Schema, Stream } from "effect"
51
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
52
+ *
53
+ * const RepoNodes = GraphQL.query("RepoNodes", {
54
+ * document: "query RepoNodes($ids:[ID!]!){nodes(ids:$ids){... on Repository{name}}}",
55
+ * variables: { ids: Schema.Array(Schema.String) },
56
+ * result: Schema.Struct({ nodes: Schema.Array(Schema.NullOr(Schema.Struct({ name: Schema.String }))) })
57
+ * })
58
+ *
59
+ * let calls = 0
60
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
61
+ * execute: (request) => {
62
+ * calls++
63
+ * const { ids } = request.variables as { ids: Array<string> }
64
+ * return Effect.succeed({ body: { data: { nodes: ids.map((id) => ({ name: `repo-${id}` })) } } })
65
+ * },
66
+ * subscribe: () => Stream.empty
67
+ * })
68
+ *
69
+ * const program = Effect.gen(function*() {
70
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(RepoNodes))
71
+ * const getRepo = GraphQLResolver.request(GraphQLResolver.ordered(client.RepoNodes, {
72
+ * variables: (ids: ReadonlyArray<string>) => ({ ids }),
73
+ * path: ["nodes"]
74
+ * }))
75
+ * const repos = yield* Effect.forEach(["1", "2", "1"], getRepo, { concurrency: "unbounded" })
76
+ * return [repos.map((repo) => repo.name), calls]
77
+ * })
78
+ *
79
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => [["repo-1", "repo-2", "repo-1"], 1]
80
+ * ```
81
+ *
82
+ * @stability experimental
83
+ * @category running
84
+ * @since 4.0.0
85
+ */
86
+ export const request = /*#__PURE__*/dual(2, (key, resolver) => Effect.request(makeRequest(key), resolver));
87
+ // -----------------------------------------------------------------------------
88
+ // Resolvers
89
+ // -----------------------------------------------------------------------------
90
+ /**
91
+ * Batches lookups for fields such as `nodes(ids:)` that return one entry per
92
+ * key in input order.
93
+ *
94
+ * **Details**
95
+ *
96
+ * `variables` maps batch keys to operation variables; annotate its parameter
97
+ * to set the key type. `path` selects a list through object fields, with
98
+ * autocomplete at each level. For `__typename` unions, `typename` narrows
99
+ * the success type and treats other types as missing.
100
+ *
101
+ * Null entries, typename mismatches and null parents fail with
102
+ * `Cause.NoSuchElementError`. GraphQL errors whose paths start with
103
+ * `[...path, i]` fail only entry `i`; its `ResponseError` contains those errors
104
+ * and the response status. Other GraphQL errors fail the batch with the same
105
+ * `ResponseError` as a non-partial call. Transport, encode and decode errors
106
+ * also fail the batch. A list length mismatch fails with `DecodeError`.
107
+ *
108
+ * `pageInfo.hasNextPage: true` on the list's parent fails the batch with
109
+ * `DecodeError` to avoid reporting unreturned entries as missing. Set the
110
+ * operation's page size at least as large as `RequestResolver.batchN`.
111
+ *
112
+ * A batch uses one lookup's services. Methods requiring services also require
113
+ * `batchKey`; only lookups with keys equal under `Equal` share a batch. Return
114
+ * the value that distinguishes those services, for example
115
+ * `(context) => Context.get(context, CurrentUser).tenantId`. Methods without
116
+ * services use one batch and do not accept `batchKey`.
117
+ *
118
+ * **Gotchas**
119
+ *
120
+ * Don't return the whole context from `batchKey`. It also holds the caller's
121
+ * span, so most lookups would get a batch of their own.
122
+ *
123
+ * A middleware that reads a `Context.Reference` with a default value doesn't
124
+ * add it to the method's services. `batchKey` isn't required for it, and
125
+ * lookups with different values can share a batch.
126
+ *
127
+ * **Example** (Looking up repositories in a `Node` union)
128
+ *
129
+ * ```ts import.meta.vitest
130
+ * import { Cause, Effect, Layer, RequestResolver, Schema, Stream } from "effect"
131
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
132
+ *
133
+ * const Repository = Schema.Struct({ __typename: Schema.Literal("Repository"), nameWithOwner: Schema.String })
134
+ * const User = Schema.Struct({ __typename: Schema.Literal("User"), login: Schema.String })
135
+ *
136
+ * const RepoNodes = GraphQL.query("RepoNodes", {
137
+ * document: "query RepoNodes($ids:[ID!]!){nodes(ids:$ids){__typename ...on Repository{nameWithOwner} ...on User{login}}}",
138
+ * variables: { ids: Schema.Array(Schema.String) },
139
+ * result: Schema.Struct({ nodes: Schema.Array(Schema.NullOr(Schema.Union([Repository, User]))) })
140
+ * })
141
+ *
142
+ * const store: Record<string, unknown> = {
143
+ * R_1: { __typename: "Repository", nameWithOwner: "Effect-TS/effect" },
144
+ * U_1: { __typename: "User", login: "tim" }
145
+ * }
146
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
147
+ * execute: (request) => {
148
+ * const { ids } = request.variables as { ids: Array<string> }
149
+ * return Effect.succeed({ body: { data: { nodes: ids.map((id) => store[id] ?? null) } } })
150
+ * },
151
+ * subscribe: () => Stream.empty
152
+ * })
153
+ *
154
+ * const program = Effect.gen(function*() {
155
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(RepoNodes))
156
+ * const RepoById = GraphQLResolver.ordered(client.RepoNodes, {
157
+ * variables: (ids: ReadonlyArray<string>) => ({ ids }),
158
+ * path: ["nodes"],
159
+ * typename: "Repository"
160
+ * }).pipe(RequestResolver.batchN(100))
161
+ * const getRepo = GraphQLResolver.request(RepoById)
162
+ * return yield* Effect.forEach(
163
+ * ["R_1", "U_1", "R_2"],
164
+ * (id) => getRepo(id).pipe(
165
+ * Effect.map((repo) => repo.nameWithOwner),
166
+ * Effect.catchIf(Cause.isNoSuchElementError, () => Effect.succeed("missing"))
167
+ * ),
168
+ * { concurrency: "unbounded" }
169
+ * )
170
+ * })
171
+ *
172
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => ["Effect-TS/effect", "missing", "missing"]
173
+ * ```
174
+ *
175
+ * @stability experimental
176
+ * @category resolvers
177
+ * @since 4.0.0
178
+ */
179
+ export const ordered = (method, options) => {
180
+ const path = options.path;
181
+ const codec = internalGraphQL.makeCodec(method.operation);
182
+ return makeResolver(method, options.batchKey, entries => Effect.flatMap(callBatch(method, entries, options.variables), ({
183
+ keys,
184
+ targets,
185
+ result
186
+ }) => {
187
+ const byIndex = new Map();
188
+ for (const error of result.errors) {
189
+ const index = entryIndex(error, path, keys.length);
190
+ if (index === undefined) return batchError(codec, result);
191
+ const errors = byIndex.get(index);
192
+ if (errors === undefined) byIndex.set(index, [error]);else errors.push(error);
193
+ }
194
+ const list = findList(result.data, path);
195
+ // An error in a non-null item nulls the whole list, so every entry lost its data to it.
196
+ if (list === undefined) return result.errors.length > 0 ? batchError(codec, result) : completeAll(targets);
197
+ if (list.truncated) return Effect.fail(codec.fail(truncated(path)));
198
+ if (list.items.length !== keys.length) {
199
+ return Effect.fail(codec.fail(new DecodeError({
200
+ description: `Expected ${keys.length} entries at ${path.join(".")}, received ${list.items.length}`
201
+ })));
202
+ }
203
+ const response = internalGraphQL.partialResponses.get(result);
204
+ for (let i = 0; i < targets.length; i++) {
205
+ const errors = byIndex.get(i);
206
+ const item = list.items[i];
207
+ targets[i].completeUnsafe(errors !== undefined ? Exit.fail(codec.fail(internalGraphQL.responseError({
208
+ status: response?.status,
209
+ headers: response?.headers
210
+ }, errors))) : matchesTypename(item, options.typename) ? Exit.succeed(item) : constNoSuchElement);
211
+ }
212
+ return Effect.void;
213
+ }));
214
+ };
215
+ /**
216
+ * Batches lookups by key for searches and collections that return results
217
+ * in any order.
218
+ *
219
+ * **Details**
220
+ *
221
+ * Write `key` before `variables` to infer the key type from its return type.
222
+ * `variables` maps batch keys to operation variables. Keys are compared with
223
+ * `Equal` and `Hash`. `path` and `typename` work as in {@link ordered};
224
+ * `key` receives the narrowed item type.
225
+ *
226
+ * Missing keys, null parents, pagination and `batchKey` behave as in
227
+ * {@link ordered}.
228
+ * Any GraphQL error fails the batch with the same `ResponseError` as a
229
+ * non-partial call, since error paths cannot be matched to keys.
230
+ *
231
+ * **Example** (Finding repositories through search)
232
+ *
233
+ * ```ts import.meta.vitest
234
+ * import { Effect, Layer, Schema, Stream } from "effect"
235
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
236
+ *
237
+ * const Repository = Schema.Struct({ __typename: Schema.Literal("Repository"), nameWithOwner: Schema.String })
238
+ * const User = Schema.Struct({ __typename: Schema.Literal("User"), login: Schema.String })
239
+ *
240
+ * const SearchRepos = GraphQL.query("SearchRepos", {
241
+ * document: "query SearchRepos($query:String!){search(query:$query,type:REPOSITORY,first:100){pageInfo{hasNextPage} nodes{__typename ...on Repository{nameWithOwner} ...on User{login}}}}",
242
+ * variables: { query: Schema.String },
243
+ * result: Schema.Struct({
244
+ * search: Schema.Struct({
245
+ * pageInfo: Schema.Struct({ hasNextPage: Schema.Boolean }),
246
+ * nodes: Schema.NullOr(Schema.Array(Schema.NullOr(Schema.Union([Repository, User]))))
247
+ * })
248
+ * })
249
+ * })
250
+ *
251
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
252
+ * execute: (request) => {
253
+ * const { query } = request.variables as { query: string }
254
+ * const nodes = query.split(" ").map((term) => ({ __typename: "Repository", nameWithOwner: term.slice(5) }))
255
+ * return Effect.succeed({ body: { data: { search: { pageInfo: { hasNextPage: false }, nodes: nodes.reverse() } } } })
256
+ * },
257
+ * subscribe: () => Stream.empty
258
+ * })
259
+ *
260
+ * const program = Effect.gen(function*() {
261
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(SearchRepos))
262
+ * const RepoByName = GraphQLResolver.findById(client.SearchRepos, {
263
+ * key: (repo) => repo.nameWithOwner,
264
+ * variables: (names) => ({ query: names.map((name) => `repo:${name}`).join(" ") }),
265
+ * path: ["search", "nodes"],
266
+ * typename: "Repository"
267
+ * })
268
+ * const repos = yield* Effect.forEach(
269
+ * ["Effect-TS/effect", "Effect-TS/website"],
270
+ * GraphQLResolver.request(RepoByName),
271
+ * { concurrency: "unbounded" }
272
+ * )
273
+ * return repos.map((repo) => repo.nameWithOwner)
274
+ * })
275
+ *
276
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => ["Effect-TS/effect", "Effect-TS/website"]
277
+ * ```
278
+ *
279
+ * @stability experimental
280
+ * @category resolvers
281
+ * @since 4.0.0
282
+ */
283
+ export const findById = (method, options) => {
284
+ const path = options.path;
285
+ const codec = internalGraphQL.makeCodec(method.operation);
286
+ return makeResolver(method, options.batchKey, entries => Effect.flatMap(callBatch(method, entries, options.variables), ({
287
+ keys,
288
+ targets,
289
+ result
290
+ }) => {
291
+ if (result.errors.length > 0) return batchError(codec, result);
292
+ const list = findList(result.data, path);
293
+ if (list === undefined) return completeAll(targets);
294
+ if (list.truncated) return Effect.fail(codec.fail(truncated(path)));
295
+ const pending = MutableHashMap.empty();
296
+ for (let i = 0; i < keys.length; i++) MutableHashMap.set(pending, keys[i], targets[i]);
297
+ for (const item of list.items) {
298
+ if (!matchesTypename(item, options.typename)) continue;
299
+ const key = options.key(item);
300
+ const target = MutableHashMap.get(pending, key);
301
+ if (target._tag === "None") continue;
302
+ MutableHashMap.remove(pending, key);
303
+ target.value.completeUnsafe(Exit.succeed(item));
304
+ }
305
+ MutableHashMap.forEach(pending, target => target.completeUnsafe(constNoSuchElement));
306
+ return Effect.void;
307
+ }));
308
+ };
309
+ /**
310
+ * Batches calls to a generated query or mutation by repeating the operation
311
+ * under aliases in one request.
312
+ *
313
+ * **When to use**
314
+ *
315
+ * Use when the API has no list-key field, such as GitHub's pull requests by
316
+ * repository and number. Otherwise, {@link ordered} or {@link findById} send
317
+ * a smaller query.
318
+ *
319
+ * **Details**
320
+ *
321
+ * Use {@link request} to get `(variables) => Effect`. Variables that encode
322
+ * to the same JSON share a slice; each slice uses the operation's result Schema.
323
+ * Throws when the resolver is built if the operation has no document
324
+ * template, if an operation directive references a variable, or if a root
325
+ * selection is a fragment spread or inline fragment, since none of these can
326
+ * be repeated under aliases.
327
+ *
328
+ * Batches use `POST` even with `queryMethod: "GET"`. The default batch size
329
+ * is 10; change it with `RequestResolver.batchN`. Middleware run once per
330
+ * batch, and `batchKey` works as in {@link ordered}. Mock and custom methods
331
+ * are called once per slice instead.
332
+ *
333
+ * Errors with a matching `path[0]` fail only that slice, with the alias prefix
334
+ * removed from the error path. Errors without a matching path, transport errors
335
+ * and middleware failures fail the batch.
336
+ *
337
+ * **Gotchas**
338
+ *
339
+ * An error under a non-null root field can null the entire response, failing
340
+ * every slice. GitHub's `repository` and `pullRequest` are nullable.
341
+ *
342
+ * Middleware that hash queries must use `request.query`, not
343
+ * `operation.document`. Trusted-document allowlists don't support batching;
344
+ * query hashing does, since the same operation and slice count produce the
345
+ * same document.
346
+ *
347
+ * Mutations are allowed, but the caller cannot control root-field order.
348
+ *
349
+ * **Example** (Looking up pull requests by number)
350
+ *
351
+ * ```ts import.meta.vitest
352
+ * import { Effect, Layer, RequestResolver, Schema, Stream } from "effect"
353
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
354
+ *
355
+ * // Generated from:
356
+ * // query PullRequest($owner: String!, $name: String!, $number: Int!) {
357
+ * // repository(owner: $owner, name: $name) { pullRequest(number: $number) { title } }
358
+ * // }
359
+ * const PullRequest = GraphQL.query("PullRequest", {
360
+ * document: {
361
+ * variables: [
362
+ * { name: "owner", body: "String!" },
363
+ * { name: "name", body: "String!" },
364
+ * { name: "number", body: "Int!" }
365
+ * ],
366
+ * selections: [{
367
+ * name: "repository",
368
+ * body: ["(owner:$", "owner", ",name:$", "name", "){pullRequest(number:$", "number", "){title}}"]
369
+ * }],
370
+ * fragments: []
371
+ * },
372
+ * variables: { owner: Schema.String, name: Schema.String, number: Schema.Int },
373
+ * result: Schema.Struct({
374
+ * repository: Schema.NullOr(Schema.Struct({
375
+ * pullRequest: Schema.NullOr(Schema.Struct({ title: Schema.String }))
376
+ * }))
377
+ * })
378
+ * })
379
+ *
380
+ * // A stand-in server that answers every aliased slice
381
+ * const queries: Array<string> = []
382
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
383
+ * execute: (request) => {
384
+ * queries.push(request.query)
385
+ * const data: Record<string, unknown> = {}
386
+ * for (const [key, number] of Object.entries(request.variables as Record<string, unknown>)) {
387
+ * const prefix = /^(_\d+_)number$/.exec(key)?.[1]
388
+ * if (prefix !== undefined) data[`${prefix}repository`] = { pullRequest: { title: `PR ${number}` } }
389
+ * }
390
+ * return Effect.succeed({ body: { data } })
391
+ * },
392
+ * subscribe: () => Stream.empty
393
+ * })
394
+ *
395
+ * const program = Effect.gen(function*() {
396
+ * const github = yield* GraphQLClient.make(GraphQLGroup.make(PullRequest))
397
+ * const PullRequests = GraphQLResolver.aliased(github.PullRequest).pipe(RequestResolver.batchN(20))
398
+ * const getPullRequest = GraphQLResolver.request(PullRequests)
399
+ * const results = yield* Effect.forEach(
400
+ * [1, 2, 3],
401
+ * (number) => getPullRequest({ owner: "Effect-TS", name: "effect", number }),
402
+ * { concurrency: "unbounded" }
403
+ * )
404
+ * return [results.map((result) => result.repository?.pullRequest?.title), queries.length]
405
+ * })
406
+ *
407
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => [["PR 1", "PR 2", "PR 3"], 1]
408
+ * ```
409
+ *
410
+ * @stability experimental
411
+ * @category resolvers
412
+ * @since 4.0.0
413
+ */
414
+ export const aliased = (method, ...[options]) => {
415
+ const operation = method.operation;
416
+ const template = operation.template;
417
+ if (template === undefined) {
418
+ throw new Error(`GraphQLResolver.aliased: operation ${operation.name} has no document template`);
419
+ }
420
+ const unsliceable = internalGraphQL.templateUnsliceableReason(template);
421
+ if (unsliceable !== undefined) {
422
+ throw new Error(`GraphQLResolver.aliased: cannot batch operation ${operation.name}: ${unsliceable}`);
423
+ }
424
+ const codec = internalGraphQL.makeCodec(operation);
425
+ // The registered hook uses this operation's middleware errors and services.
426
+ const execute = internalGraphQL.rawExecutors.get(method)?.execute;
427
+ // Generic conditional parameters prevent calling the strict overload directly.
428
+ const call = method;
429
+ return makeResolver(method, options?.batchKey, entries => Effect.flatMap(Effect.forEach(entries, entry => Effect.exit(codec.encodeVariables(entry.request.key))), encoded => {
430
+ const slices = [];
431
+ const byJson = new Map();
432
+ for (let i = 0; i < entries.length; i++) {
433
+ const exit = encoded[i];
434
+ if (exit._tag === "Failure") {
435
+ entries[i].completeUnsafe(exit);
436
+ continue;
437
+ }
438
+ const json = internalGraphQL.canonicalJson(exit.value);
439
+ const slice = byJson.get(json);
440
+ if (slice !== undefined) {
441
+ slice.entries.push(entries[i]);
442
+ continue;
443
+ }
444
+ const created = {
445
+ variables: entries[i].request.key,
446
+ encoded: exit.value,
447
+ entries: [entries[i]]
448
+ };
449
+ byJson.set(json, created);
450
+ slices.push(created);
451
+ }
452
+ const complete = (slice, effect) => Effect.map(Effect.exit(effect), exit => {
453
+ for (const entry of slice.entries) entry.completeUnsafe(exit);
454
+ });
455
+ if (execute === undefined) {
456
+ return Effect.forEach(slices, slice => complete(slice, call(slice.variables)), {
457
+ discard: true
458
+ });
459
+ }
460
+ if (!Arr.isReadonlyArrayNonEmpty(slices)) return Effect.void;
461
+ const prefixes = Arr.map(slices, (_, i) => `_${i}_`);
462
+ return execute({
463
+ kind: operation.kind,
464
+ query: internalGraphQL.renderSlices(operation.kind, operation.name, template, prefixes),
465
+ operationName: operation.name,
466
+ variables: Object.fromEntries(slices.flatMap((slice, i) => Object.entries(slice.encoded ?? {}).map(([name, value]) => [prefixes[i] + name, value]))),
467
+ headers: Headers.empty,
468
+ urlParams: UrlParams.empty
469
+ }).pipe(Effect.flatMap(result => {
470
+ const results = internalGraphQL.splitSlices(result, template, prefixes);
471
+ return results === undefined ? codec.failResponse(result) : Effect.forEach(slices, (slice, i) => complete(slice, codec.decodeStrict(results[i])), {
472
+ discard: true
473
+ });
474
+ }));
475
+ })).pipe(RequestResolver.batchN(10));
476
+ };
477
+ // -----------------------------------------------------------------------------
478
+ // Internals
479
+ // -----------------------------------------------------------------------------
480
+ const constNoSuchElement = /*#__PURE__*/Exit.fail(/*#__PURE__*/new Cause.NoSuchElementError());
481
+ /**
482
+ * Resolves each entry's URL in its own context, then splits the entries by URL
483
+ * and `batchKey`. Each batch runs in its first entry's context, carrying the
484
+ * URL it was grouped by, so the transport doesn't resolve it again.
485
+ */
486
+ const makeResolver = (method, batchKey, runAll) => {
487
+ const resolve = internalGraphQL.rawExecutors.get(method)?.url;
488
+ const operation = {
489
+ kind: method.operation.kind,
490
+ operationName: method.operation.name
491
+ };
492
+ const urlOf = entry => resolve === undefined ? Effect.succeed(undefined) : Effect.provideContext(resolve(operation), entry.context);
493
+ return RequestResolver.make(entries => Effect.flatMap(Effect.forEach(entries, urlOf, {
494
+ concurrency: "unbounded"
495
+ }), urls => {
496
+ // Arrays are compared structurally, so equal keys share a batch.
497
+ const batches = MutableHashMap.empty();
498
+ entries.forEach((entry, i) => {
499
+ const key = [urls[i], batchKey?.(entry.context)];
500
+ const batch = MutableHashMap.get(batches, key);
501
+ if (batch._tag === "Some") batch.value.push(entry);else MutableHashMap.set(batches, key, [entry]);
502
+ });
503
+ return Effect.forEach(batches, ([[url], entries]) => {
504
+ const context = entries[0].context;
505
+ return Effect.provideContext(runAll(entries), url === undefined ? context : Context.add(context, internalGraphQL.ResolvedUrl, {
506
+ resolve,
507
+ url
508
+ }));
509
+ }, {
510
+ concurrency: "unbounded",
511
+ discard: true
512
+ });
513
+ }));
514
+ };
515
+ /**
516
+ * Calls the method with deduplicated keys. Each target completes all entries
517
+ * sharing its key.
518
+ */
519
+ const callBatch = (method, entries, variables) => {
520
+ const keys = [];
521
+ const targets = [];
522
+ const indices = MutableHashMap.empty();
523
+ for (const entry of entries) {
524
+ const index = MutableHashMap.get(indices, entry.request.key);
525
+ if (index._tag === "None") {
526
+ MutableHashMap.set(indices, entry.request.key, keys.length);
527
+ keys.push(entry.request.key);
528
+ targets.push(entry);
529
+ continue;
530
+ }
531
+ const previous = targets[index.value];
532
+ targets[index.value] = {
533
+ ...previous,
534
+ completeUnsafe(exit) {
535
+ previous.completeUnsafe(exit);
536
+ entry.completeUnsafe(exit);
537
+ }
538
+ };
539
+ }
540
+ // Generic conditional parameters prevent calling the partial overload directly.
541
+ const call = method;
542
+ return Effect.map(call(variables(keys), {
543
+ partial: true
544
+ }), result => ({
545
+ keys,
546
+ targets,
547
+ result
548
+ }));
549
+ };
550
+ // Fails the batch with the response's errors and transport metadata.
551
+ const batchError = (codec, result) => codec.failResponse(internalGraphQL.partialResponses.get(result) ?? {
552
+ errors: result.errors
553
+ });
554
+ const truncated = path => new DecodeError({
555
+ description: `pageInfo.hasNextPage is true next to ${path.join(".")}, so results beyond the page would be reported missing. Make the page size at least the RequestResolver.batchN size`
556
+ });
557
+ const completeAll = targets => {
558
+ for (const target of targets) target.completeUnsafe(constNoSuchElement);
559
+ return Effect.void;
560
+ };
561
+ const entryIndex = (error, path, length) => {
562
+ const errorPath = error.path;
563
+ if (errorPath === undefined || errorPath.length <= path.length) return undefined;
564
+ for (let i = 0; i < path.length; i++) {
565
+ if (errorPath[i] !== path[i]) return undefined;
566
+ }
567
+ const index = errorPath[path.length];
568
+ return typeof index === "number" && Number.isInteger(index) && index >= 0 && index < length ? index : undefined;
569
+ };
570
+ const findList = (data, path) => {
571
+ // Path guarantees object fields leading to a list.
572
+ let parent = data;
573
+ for (let i = 0; i < path.length - 1; i++) parent = parent?.[path[i]];
574
+ const items = parent?.[path[path.length - 1]];
575
+ if (items === null || items === undefined) return undefined;
576
+ return {
577
+ items,
578
+ truncated: parent.pageInfo?.hasNextPage === true
579
+ };
580
+ };
581
+ const matchesTypename = (item, typename) => item !== null && item !== undefined && (typename === undefined || item.__typename === typename);
582
+ //# sourceMappingURL=GraphQLResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphQLResolver.js","names":[],"sources":["../../src/graphql/GraphQLResolver.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @stability experimental
3
+ * @since 4.0.0
4
+ */
5
+ /**
6
+ * @stability experimental
7
+ * @since 4.0.0
8
+ */
9
+ export * as GraphQL from "./GraphQL.ts";
10
+ /**
11
+ * @stability experimental
12
+ * @since 4.0.0
13
+ */
14
+ export * as GraphQLClient from "./GraphQLClient.ts";
15
+ /**
16
+ * @stability experimental
17
+ * @since 4.0.0
18
+ */
19
+ export * as GraphQLClientError from "./GraphQLClientError.ts";
20
+ /**
21
+ * @stability experimental
22
+ * @since 4.0.0
23
+ */
24
+ export * as GraphQLGroup from "./GraphQLGroup.ts";
25
+ /**
26
+ * @stability experimental
27
+ * @since 4.0.0
28
+ */
29
+ export * as GraphQLMiddleware from "./GraphQLMiddleware.ts";
30
+ /**
31
+ * @stability experimental
32
+ * @since 4.0.0
33
+ */
34
+ export * as GraphQLProtocol from "./GraphQLProtocol.ts";
35
+ /**
36
+ * @stability experimental
37
+ * @since 4.0.0
38
+ */
39
+ export * as GraphQLResolver from "./GraphQLResolver.ts";
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;GAGG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;;GAGG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;GAGG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;;GAGG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;;GAGG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}