effect 4.0.3 → 4.0.4

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 (207) 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 +111 -0
  5. package/ai-docs/src/52_graphql/20_testing.ts +45 -0
  6. package/ai-docs/src/52_graphql/30_batching.ts +116 -0
  7. package/ai-docs/src/52_graphql/40_aliased-batching.ts +122 -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/Context.d.ts.map +1 -1
  11. package/dist/Context.js +9 -0
  12. package/dist/Context.js.map +1 -1
  13. package/dist/RequestResolver.d.ts.map +1 -1
  14. package/dist/RequestResolver.js +4 -10
  15. package/dist/RequestResolver.js.map +1 -1
  16. package/dist/Scheduler.d.ts +9 -0
  17. package/dist/Scheduler.d.ts.map +1 -1
  18. package/dist/Scheduler.js +9 -0
  19. package/dist/Scheduler.js.map +1 -1
  20. package/dist/Schema.d.ts +8 -0
  21. package/dist/Schema.d.ts.map +1 -1
  22. package/dist/Schema.js +7 -0
  23. package/dist/Schema.js.map +1 -1
  24. package/dist/SchemaGetter.d.ts +4 -0
  25. package/dist/SchemaGetter.d.ts.map +1 -1
  26. package/dist/SchemaGetter.js +52 -33
  27. package/dist/SchemaGetter.js.map +1 -1
  28. package/dist/Sink.d.ts.map +1 -1
  29. package/dist/Sink.js +38 -17
  30. package/dist/Sink.js.map +1 -1
  31. package/dist/Stream.d.ts +11 -0
  32. package/dist/Stream.d.ts.map +1 -1
  33. package/dist/Stream.js +16 -1
  34. package/dist/Stream.js.map +1 -1
  35. package/dist/Utils.js +8 -3
  36. package/dist/Utils.js.map +1 -1
  37. package/dist/ai/AnthropicStructuredOutput.js +0 -2
  38. package/dist/ai/AnthropicStructuredOutput.js.map +1 -1
  39. package/dist/ai/Chat.d.ts +2 -2
  40. package/dist/ai/Chat.d.ts.map +1 -1
  41. package/dist/ai/LanguageModel.d.ts +38 -7
  42. package/dist/ai/LanguageModel.d.ts.map +1 -1
  43. package/dist/ai/LanguageModel.js +25 -7
  44. package/dist/ai/LanguageModel.js.map +1 -1
  45. package/dist/ai/McpServer.d.ts +55 -0
  46. package/dist/ai/McpServer.d.ts.map +1 -1
  47. package/dist/ai/McpServer.js +132 -22
  48. package/dist/ai/McpServer.js.map +1 -1
  49. package/dist/ai/Prompt.d.ts.map +1 -1
  50. package/dist/ai/Prompt.js +28 -5
  51. package/dist/ai/Prompt.js.map +1 -1
  52. package/dist/ai/Response.d.ts +4 -3
  53. package/dist/ai/Response.d.ts.map +1 -1
  54. package/dist/ai/Response.js.map +1 -1
  55. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  56. package/dist/cluster/ClusterWorkflowEngine.js +46 -8
  57. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  58. package/dist/cluster/Sharding.d.ts.map +1 -1
  59. package/dist/cluster/Sharding.js +6 -4
  60. package/dist/cluster/Sharding.js.map +1 -1
  61. package/dist/encoding/Sse.d.ts +6 -0
  62. package/dist/encoding/Sse.d.ts.map +1 -1
  63. package/dist/encoding/Sse.js +62 -70
  64. package/dist/encoding/Sse.js.map +1 -1
  65. package/dist/graphql/GraphQL.d.ts +349 -0
  66. package/dist/graphql/GraphQL.d.ts.map +1 -0
  67. package/dist/graphql/GraphQL.js +207 -0
  68. package/dist/graphql/GraphQL.js.map +1 -0
  69. package/dist/graphql/GraphQLClient.d.ts +562 -0
  70. package/dist/graphql/GraphQLClient.d.ts.map +1 -0
  71. package/dist/graphql/GraphQLClient.js +498 -0
  72. package/dist/graphql/GraphQLClient.js.map +1 -0
  73. package/dist/graphql/GraphQLClientError.d.ts +445 -0
  74. package/dist/graphql/GraphQLClientError.d.ts.map +1 -0
  75. package/dist/graphql/GraphQLClientError.js +479 -0
  76. package/dist/graphql/GraphQLClientError.js.map +1 -0
  77. package/dist/graphql/GraphQLGroup.d.ts +118 -0
  78. package/dist/graphql/GraphQLGroup.d.ts.map +1 -0
  79. package/dist/graphql/GraphQLGroup.js +109 -0
  80. package/dist/graphql/GraphQLGroup.js.map +1 -0
  81. package/dist/graphql/GraphQLMiddleware.d.ts +249 -0
  82. package/dist/graphql/GraphQLMiddleware.d.ts.map +1 -0
  83. package/dist/graphql/GraphQLMiddleware.js +130 -0
  84. package/dist/graphql/GraphQLMiddleware.js.map +1 -0
  85. package/dist/graphql/GraphQLProtocol.d.ts +731 -0
  86. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -0
  87. package/dist/graphql/GraphQLProtocol.js +719 -0
  88. package/dist/graphql/GraphQLProtocol.js.map +1 -0
  89. package/dist/graphql/GraphQLResolver.d.ts +453 -0
  90. package/dist/graphql/GraphQLResolver.d.ts.map +1 -0
  91. package/dist/graphql/GraphQLResolver.js +552 -0
  92. package/dist/graphql/GraphQLResolver.js.map +1 -0
  93. package/dist/graphql/index.d.ts +40 -0
  94. package/dist/graphql/index.d.ts.map +1 -0
  95. package/dist/graphql/index.js +41 -0
  96. package/dist/graphql/index.js.map +1 -0
  97. package/dist/http/HttpClient.d.ts +15 -0
  98. package/dist/http/HttpClient.d.ts.map +1 -1
  99. package/dist/http/HttpClient.js +24 -10
  100. package/dist/http/HttpClient.js.map +1 -1
  101. package/dist/http/HttpEffect.d.ts.map +1 -1
  102. package/dist/http/HttpEffect.js +14 -7
  103. package/dist/http/HttpEffect.js.map +1 -1
  104. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  105. package/dist/http/HttpMiddleware.js +31 -32
  106. package/dist/http/HttpMiddleware.js.map +1 -1
  107. package/dist/http/HttpRouter.d.ts +35 -0
  108. package/dist/http/HttpRouter.d.ts.map +1 -1
  109. package/dist/http/HttpRouter.js +35 -0
  110. package/dist/http/HttpRouter.js.map +1 -1
  111. package/dist/http/HttpServerResponse.d.ts +8 -6
  112. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  113. package/dist/http/HttpServerResponse.js +27 -16
  114. package/dist/http/HttpServerResponse.js.map +1 -1
  115. package/dist/http/Multipart.d.ts.map +1 -1
  116. package/dist/http/Multipart.js +15 -1
  117. package/dist/http/Multipart.js.map +1 -1
  118. package/dist/http-api/HttpApiScalar.d.ts +5 -0
  119. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  120. package/dist/http-api/HttpApiScalar.js.map +1 -1
  121. package/dist/internal/dateTime.js +40 -35
  122. package/dist/internal/dateTime.js.map +1 -1
  123. package/dist/internal/effect.js +8 -3
  124. package/dist/internal/effect.js.map +1 -1
  125. package/dist/internal/graphql.d.ts +2 -0
  126. package/dist/internal/graphql.d.ts.map +1 -0
  127. package/dist/internal/graphql.js +195 -0
  128. package/dist/internal/graphql.js.map +1 -0
  129. package/dist/internal/graphqlHeaders.d.ts +4 -0
  130. package/dist/internal/graphqlHeaders.d.ts.map +1 -0
  131. package/dist/internal/graphqlHeaders.js +11 -0
  132. package/dist/internal/graphqlHeaders.js.map +1 -0
  133. package/dist/internal/request.js +20 -1
  134. package/dist/internal/request.js.map +1 -1
  135. package/dist/internal/schema/toCodeDocument.js +4 -1
  136. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  137. package/dist/internal/schema/toJsonSchemaDocument.js +29 -5
  138. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  139. package/dist/internal/version.js +1 -1
  140. package/dist/net/Host.d.ts +49 -0
  141. package/dist/net/Host.d.ts.map +1 -1
  142. package/dist/net/Host.js +55 -0
  143. package/dist/net/Host.js.map +1 -1
  144. package/dist/net/NetAddress.d.ts +8 -0
  145. package/dist/net/NetAddress.d.ts.map +1 -1
  146. package/dist/net/NetAddress.js +8 -0
  147. package/dist/net/NetAddress.js.map +1 -1
  148. package/dist/rpc/RpcServer.d.ts.map +1 -1
  149. package/dist/rpc/RpcServer.js +36 -9
  150. package/dist/rpc/RpcServer.js.map +1 -1
  151. package/dist/socket/Socket.d.ts +6 -0
  152. package/dist/socket/Socket.d.ts.map +1 -1
  153. package/dist/socket/Socket.js.map +1 -1
  154. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  155. package/dist/workflow/DurableDeferred.js +32 -3
  156. package/dist/workflow/DurableDeferred.js.map +1 -1
  157. package/dist/workflow/WorkflowEngine.d.ts +24 -2
  158. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  159. package/dist/workflow/WorkflowEngine.js +11 -2
  160. package/dist/workflow/WorkflowEngine.js.map +1 -1
  161. package/package.json +6 -3
  162. package/src/Context.ts +9 -0
  163. package/src/RequestResolver.ts +4 -10
  164. package/src/Scheduler.ts +9 -0
  165. package/src/Schema.ts +8 -0
  166. package/src/SchemaGetter.ts +47 -35
  167. package/src/Sink.ts +45 -18
  168. package/src/Stream.ts +33 -4
  169. package/src/Utils.ts +8 -5
  170. package/src/ai/AnthropicStructuredOutput.ts +2 -2
  171. package/src/ai/Chat.ts +2 -2
  172. package/src/ai/LanguageModel.ts +96 -24
  173. package/src/ai/McpServer.ts +244 -90
  174. package/src/ai/Prompt.ts +24 -10
  175. package/src/ai/Response.ts +6 -3
  176. package/src/cluster/ClusterWorkflowEngine.ts +51 -12
  177. package/src/cluster/Sharding.ts +12 -9
  178. package/src/encoding/Sse.ts +69 -79
  179. package/src/graphql/GraphQL.ts +494 -0
  180. package/src/graphql/GraphQLClient.ts +912 -0
  181. package/src/graphql/GraphQLClientError.ts +542 -0
  182. package/src/graphql/GraphQLGroup.ts +167 -0
  183. package/src/graphql/GraphQLMiddleware.ts +253 -0
  184. package/src/graphql/GraphQLProtocol.ts +1286 -0
  185. package/src/graphql/GraphQLResolver.ts +1010 -0
  186. package/src/graphql/index.ts +48 -0
  187. package/src/http/HttpClient.ts +54 -10
  188. package/src/http/HttpEffect.ts +11 -5
  189. package/src/http/HttpMiddleware.ts +33 -34
  190. package/src/http/HttpRouter.ts +35 -0
  191. package/src/http/HttpServerResponse.ts +28 -16
  192. package/src/http/Multipart.ts +17 -1
  193. package/src/http-api/HttpApiScalar.ts +5 -0
  194. package/src/internal/dateTime.ts +13 -10
  195. package/src/internal/effect.ts +8 -3
  196. package/src/internal/graphql.ts +263 -0
  197. package/src/internal/graphqlHeaders.ts +11 -0
  198. package/src/internal/request.ts +31 -3
  199. package/src/internal/schema/toCodeDocument.ts +7 -1
  200. package/src/internal/schema/toJsonSchemaDocument.ts +34 -2
  201. package/src/internal/version.ts +1 -1
  202. package/src/net/Host.ts +72 -0
  203. package/src/net/NetAddress.ts +9 -0
  204. package/src/rpc/RpcServer.ts +55 -15
  205. package/src/socket/Socket.ts +6 -0
  206. package/src/workflow/DurableDeferred.ts +43 -5
  207. package/src/workflow/WorkflowEngine.ts +48 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphQLProtocol.js","names":[],"sources":["../../src/graphql/GraphQLProtocol.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,453 @@
1
+ import * as Cause from "../Cause.ts";
2
+ import type * as Context from "../Context.ts";
3
+ import * as Effect from "../Effect.ts";
4
+ import * as Request from "../Request.ts";
5
+ import * as RequestResolver from "../RequestResolver.ts";
6
+ import type * as Types from "../Types.ts";
7
+ import type * as GraphQL from "./GraphQL.ts";
8
+ import type { OperationMethod } from "./GraphQLClient.ts";
9
+ type NonNull<A> = Exclude<A, null | undefined>;
10
+ type Step<A, K> = K extends keyof NonNull<A> ? NonNull<A>[K] : never;
11
+ type CheckPath<A, P> = NonNull<A> extends ReadonlyArray<any> ? readonly [] : P extends readonly [infer Head, ...infer Tail] ? readonly [Head extends keyof NonNull<A> ? Head : keyof NonNull<A>, ...CheckPath<Step<A, Head>, Tail>] : readonly [keyof NonNull<A>];
12
+ type Path<A, P> = P extends CheckPath<A, P> ? P : CheckPath<A, P>;
13
+ type AtPath<A, P> = P extends readonly [infer Head, ...infer Tail] ? AtPath<Step<A, Head>, Tail> : A;
14
+ type Item<A, P> = NonNull<AtPath<A, P>> extends ReadonlyArray<infer I> ? NonNull<I> : never;
15
+ type Typenames<I> = Types.IsUnion<I> extends true ? I extends {
16
+ readonly __typename: infer T extends string;
17
+ } ? T : never : never;
18
+ type Narrow<I, T> = [T] extends [never] ? I : Extract<I, {
19
+ readonly __typename: T;
20
+ }>;
21
+ type BatchKey<Op extends GraphQL.Any> = [GraphQL.Services<Op>] extends [never] ? {
22
+ readonly batchKey?: never;
23
+ } : {
24
+ readonly batchKey: (context: Context.Context<GraphQL.Services<Op>>) => unknown;
25
+ };
26
+ interface KeyRequest<K, A, E, R> extends Request.Request<A, E, R> {
27
+ readonly key: K;
28
+ }
29
+ /**
30
+ * Looks up a key with an {@link ordered}, {@link findById} or {@link aliased}
31
+ * resolver, using `request(resolver)(key)` or `request(key, resolver)`.
32
+ *
33
+ * **Details**
34
+ *
35
+ * Concurrent lookups are batched. Keys equal under `Equal` and `Hash`
36
+ * are sent once per batch and share the result.
37
+ *
38
+ * **Example** (Looking up repositories by id)
39
+ *
40
+ * ```ts import.meta.vitest
41
+ * import { Effect, Layer, Schema, Stream } from "effect"
42
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
43
+ *
44
+ * const RepoNodes = GraphQL.query("RepoNodes", {
45
+ * document: "query RepoNodes($ids:[ID!]!){nodes(ids:$ids){... on Repository{name}}}",
46
+ * variables: { ids: Schema.Array(Schema.String) },
47
+ * result: Schema.Struct({ nodes: Schema.Array(Schema.NullOr(Schema.Struct({ name: Schema.String }))) })
48
+ * })
49
+ *
50
+ * let calls = 0
51
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
52
+ * execute: (request) => {
53
+ * calls++
54
+ * const { ids } = request.variables as { ids: Array<string> }
55
+ * return Effect.succeed({ body: { data: { nodes: ids.map((id) => ({ name: `repo-${id}` })) } } })
56
+ * },
57
+ * subscribe: () => Stream.empty
58
+ * })
59
+ *
60
+ * const program = Effect.gen(function*() {
61
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(RepoNodes))
62
+ * const getRepo = GraphQLResolver.request(GraphQLResolver.ordered(client.RepoNodes, {
63
+ * variables: (ids: ReadonlyArray<string>) => ({ ids }),
64
+ * path: ["nodes"]
65
+ * }))
66
+ * const repos = yield* Effect.forEach(["1", "2", "1"], getRepo, { concurrency: "unbounded" })
67
+ * return [repos.map((repo) => repo.name), calls]
68
+ * })
69
+ *
70
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => [["repo-1", "repo-2", "repo-1"], 1]
71
+ * ```
72
+ *
73
+ * @stability experimental
74
+ * @category running
75
+ * @since 4.0.0
76
+ */
77
+ export declare const request: {
78
+ /**
79
+ * Looks up a key with an {@link ordered}, {@link findById} or {@link aliased}
80
+ * resolver, using `request(resolver)(key)` or `request(key, resolver)`.
81
+ *
82
+ * **Details**
83
+ *
84
+ * Concurrent lookups are batched. Keys equal under `Equal` and `Hash`
85
+ * are sent once per batch and share the result.
86
+ *
87
+ * **Example** (Looking up repositories by id)
88
+ *
89
+ * ```ts import.meta.vitest
90
+ * import { Effect, Layer, Schema, Stream } from "effect"
91
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
92
+ *
93
+ * const RepoNodes = GraphQL.query("RepoNodes", {
94
+ * document: "query RepoNodes($ids:[ID!]!){nodes(ids:$ids){... on Repository{name}}}",
95
+ * variables: { ids: Schema.Array(Schema.String) },
96
+ * result: Schema.Struct({ nodes: Schema.Array(Schema.NullOr(Schema.Struct({ name: Schema.String }))) })
97
+ * })
98
+ *
99
+ * let calls = 0
100
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
101
+ * execute: (request) => {
102
+ * calls++
103
+ * const { ids } = request.variables as { ids: Array<string> }
104
+ * return Effect.succeed({ body: { data: { nodes: ids.map((id) => ({ name: `repo-${id}` })) } } })
105
+ * },
106
+ * subscribe: () => Stream.empty
107
+ * })
108
+ *
109
+ * const program = Effect.gen(function*() {
110
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(RepoNodes))
111
+ * const getRepo = GraphQLResolver.request(GraphQLResolver.ordered(client.RepoNodes, {
112
+ * variables: (ids: ReadonlyArray<string>) => ({ ids }),
113
+ * path: ["nodes"]
114
+ * }))
115
+ * const repos = yield* Effect.forEach(["1", "2", "1"], getRepo, { concurrency: "unbounded" })
116
+ * return [repos.map((repo) => repo.name), calls]
117
+ * })
118
+ *
119
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => [["repo-1", "repo-2", "repo-1"], 1]
120
+ * ```
121
+ *
122
+ * @stability experimental
123
+ * @category running
124
+ * @since 4.0.0
125
+ */
126
+ <K, A, E, R>(resolver: RequestResolver.RequestResolver<KeyRequest<K, A, E, R>>): (key: K) => Effect.Effect<A, E, R>;
127
+ /**
128
+ * Looks up a key with an {@link ordered}, {@link findById} or {@link aliased}
129
+ * resolver, using `request(resolver)(key)` or `request(key, resolver)`.
130
+ *
131
+ * **Details**
132
+ *
133
+ * Concurrent lookups are batched. Keys equal under `Equal` and `Hash`
134
+ * are sent once per batch and share the result.
135
+ *
136
+ * **Example** (Looking up repositories by id)
137
+ *
138
+ * ```ts import.meta.vitest
139
+ * import { Effect, Layer, Schema, Stream } from "effect"
140
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
141
+ *
142
+ * const RepoNodes = GraphQL.query("RepoNodes", {
143
+ * document: "query RepoNodes($ids:[ID!]!){nodes(ids:$ids){... on Repository{name}}}",
144
+ * variables: { ids: Schema.Array(Schema.String) },
145
+ * result: Schema.Struct({ nodes: Schema.Array(Schema.NullOr(Schema.Struct({ name: Schema.String }))) })
146
+ * })
147
+ *
148
+ * let calls = 0
149
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
150
+ * execute: (request) => {
151
+ * calls++
152
+ * const { ids } = request.variables as { ids: Array<string> }
153
+ * return Effect.succeed({ body: { data: { nodes: ids.map((id) => ({ name: `repo-${id}` })) } } })
154
+ * },
155
+ * subscribe: () => Stream.empty
156
+ * })
157
+ *
158
+ * const program = Effect.gen(function*() {
159
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(RepoNodes))
160
+ * const getRepo = GraphQLResolver.request(GraphQLResolver.ordered(client.RepoNodes, {
161
+ * variables: (ids: ReadonlyArray<string>) => ({ ids }),
162
+ * path: ["nodes"]
163
+ * }))
164
+ * const repos = yield* Effect.forEach(["1", "2", "1"], getRepo, { concurrency: "unbounded" })
165
+ * return [repos.map((repo) => repo.name), calls]
166
+ * })
167
+ *
168
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => [["repo-1", "repo-2", "repo-1"], 1]
169
+ * ```
170
+ *
171
+ * @stability experimental
172
+ * @category running
173
+ * @since 4.0.0
174
+ */
175
+ <K, A, E, R>(key: K, resolver: RequestResolver.RequestResolver<KeyRequest<K, A, E, R>>): Effect.Effect<A, E, R>;
176
+ };
177
+ /**
178
+ * Batches lookups for fields such as `nodes(ids:)` that return one entry per
179
+ * key in input order.
180
+ *
181
+ * **Details**
182
+ *
183
+ * `variables` maps batch keys to operation variables; annotate its parameter
184
+ * to set the key type. `path` selects a list through object fields, with
185
+ * autocomplete at each level. For `__typename` unions, `typename` narrows
186
+ * the success type and treats other types as missing.
187
+ *
188
+ * Null entries, typename mismatches and null parents fail with
189
+ * `Cause.NoSuchElementError`. GraphQL errors whose paths start with
190
+ * `[...path, i]` fail only entry `i`; its `ResponseError` contains those errors
191
+ * and the response status. Other GraphQL errors fail the batch with the same
192
+ * `ResponseError` as a non-partial call. Transport, encode and decode errors
193
+ * also fail the batch. A list length mismatch fails with `DecodeError`.
194
+ *
195
+ * `pageInfo.hasNextPage: true` on the list's parent fails the batch with
196
+ * `DecodeError` to avoid reporting unreturned entries as missing. Set the
197
+ * operation's page size at least as large as `RequestResolver.batchN`.
198
+ *
199
+ * A batch uses one lookup's services. Methods requiring services also require
200
+ * `batchKey`; only lookups with keys equal under `Equal` share a batch. Return
201
+ * the value that distinguishes those services, for example
202
+ * `(context) => Context.get(context, CurrentUser).tenantId`. Methods without
203
+ * services use one batch and do not accept `batchKey`.
204
+ *
205
+ * **Gotchas**
206
+ *
207
+ * Don't return the whole context from `batchKey`. It also holds the caller's
208
+ * span, so most lookups would get a batch of their own.
209
+ *
210
+ * A middleware that reads a `Context.Reference` with a default value doesn't
211
+ * add it to the method's services. `batchKey` isn't required for it, and
212
+ * lookups with different values can share a batch.
213
+ *
214
+ * **Example** (Looking up repositories in a `Node` union)
215
+ *
216
+ * ```ts import.meta.vitest
217
+ * import { Cause, Effect, Layer, RequestResolver, Schema, Stream } from "effect"
218
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
219
+ *
220
+ * const Repository = Schema.Struct({ __typename: Schema.Literal("Repository"), nameWithOwner: Schema.String })
221
+ * const User = Schema.Struct({ __typename: Schema.Literal("User"), login: Schema.String })
222
+ *
223
+ * const RepoNodes = GraphQL.query("RepoNodes", {
224
+ * document: "query RepoNodes($ids:[ID!]!){nodes(ids:$ids){__typename ...on Repository{nameWithOwner} ...on User{login}}}",
225
+ * variables: { ids: Schema.Array(Schema.String) },
226
+ * result: Schema.Struct({ nodes: Schema.Array(Schema.NullOr(Schema.Union([Repository, User]))) })
227
+ * })
228
+ *
229
+ * const store: Record<string, unknown> = {
230
+ * R_1: { __typename: "Repository", nameWithOwner: "Effect-TS/effect" },
231
+ * U_1: { __typename: "User", login: "tim" }
232
+ * }
233
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
234
+ * execute: (request) => {
235
+ * const { ids } = request.variables as { ids: Array<string> }
236
+ * return Effect.succeed({ body: { data: { nodes: ids.map((id) => store[id] ?? null) } } })
237
+ * },
238
+ * subscribe: () => Stream.empty
239
+ * })
240
+ *
241
+ * const program = Effect.gen(function*() {
242
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(RepoNodes))
243
+ * const RepoById = GraphQLResolver.ordered(client.RepoNodes, {
244
+ * variables: (ids: ReadonlyArray<string>) => ({ ids }),
245
+ * path: ["nodes"],
246
+ * typename: "Repository"
247
+ * }).pipe(RequestResolver.batchN(100))
248
+ * const getRepo = GraphQLResolver.request(RepoById)
249
+ * return yield* Effect.forEach(
250
+ * ["R_1", "U_1", "R_2"],
251
+ * (id) => getRepo(id).pipe(
252
+ * Effect.map((repo) => repo.nameWithOwner),
253
+ * Effect.catchIf(Cause.isNoSuchElementError, () => Effect.succeed("missing"))
254
+ * ),
255
+ * { concurrency: "unbounded" }
256
+ * )
257
+ * })
258
+ *
259
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => ["Effect-TS/effect", "missing", "missing"]
260
+ * ```
261
+ *
262
+ * @stability experimental
263
+ * @category resolvers
264
+ * @since 4.0.0
265
+ */
266
+ export declare const ordered: <Op extends GraphQL.Any, K, const P extends ReadonlyArray<string>, T extends Typenames<Item<GraphQL.Result<Op>, P>> = never>(method: OperationMethod<Op>, options: {
267
+ readonly variables: (keys: ReadonlyArray<K>) => GraphQL.Variables<Op>;
268
+ readonly path: Path<GraphQL.Result<Op>, P>;
269
+ readonly typename?: T | undefined;
270
+ } & BatchKey<Op>) => RequestResolver.RequestResolver<KeyRequest<K, Narrow<Item<GraphQL.Result<Op>, P>, T>, GraphQL.Error<Op> | Cause.NoSuchElementError, GraphQL.Services<Op>>>;
271
+ /**
272
+ * Batches lookups by key for searches and collections that return results
273
+ * in any order.
274
+ *
275
+ * **Details**
276
+ *
277
+ * Write `key` before `variables` to infer the key type from its return type.
278
+ * `variables` maps batch keys to operation variables. Keys are compared with
279
+ * `Equal` and `Hash`. `path` and `typename` work as in {@link ordered};
280
+ * `key` receives the narrowed item type.
281
+ *
282
+ * Missing keys, null parents, pagination and `batchKey` behave as in
283
+ * {@link ordered}.
284
+ * Any GraphQL error fails the batch with the same `ResponseError` as a
285
+ * non-partial call, since error paths cannot be matched to keys.
286
+ *
287
+ * **Example** (Finding repositories through search)
288
+ *
289
+ * ```ts import.meta.vitest
290
+ * import { Effect, Layer, Schema, Stream } from "effect"
291
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
292
+ *
293
+ * const Repository = Schema.Struct({ __typename: Schema.Literal("Repository"), nameWithOwner: Schema.String })
294
+ * const User = Schema.Struct({ __typename: Schema.Literal("User"), login: Schema.String })
295
+ *
296
+ * const SearchRepos = GraphQL.query("SearchRepos", {
297
+ * document: "query SearchRepos($query:String!){search(query:$query,type:REPOSITORY,first:100){pageInfo{hasNextPage} nodes{__typename ...on Repository{nameWithOwner} ...on User{login}}}}",
298
+ * variables: { query: Schema.String },
299
+ * result: Schema.Struct({
300
+ * search: Schema.Struct({
301
+ * pageInfo: Schema.Struct({ hasNextPage: Schema.Boolean }),
302
+ * nodes: Schema.NullOr(Schema.Array(Schema.NullOr(Schema.Union([Repository, User]))))
303
+ * })
304
+ * })
305
+ * })
306
+ *
307
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
308
+ * execute: (request) => {
309
+ * const { query } = request.variables as { query: string }
310
+ * const nodes = query.split(" ").map((term) => ({ __typename: "Repository", nameWithOwner: term.slice(5) }))
311
+ * return Effect.succeed({ body: { data: { search: { pageInfo: { hasNextPage: false }, nodes: nodes.reverse() } } } })
312
+ * },
313
+ * subscribe: () => Stream.empty
314
+ * })
315
+ *
316
+ * const program = Effect.gen(function*() {
317
+ * const client = yield* GraphQLClient.make(GraphQLGroup.make(SearchRepos))
318
+ * const RepoByName = GraphQLResolver.findById(client.SearchRepos, {
319
+ * key: (repo) => repo.nameWithOwner,
320
+ * variables: (names) => ({ query: names.map((name) => `repo:${name}`).join(" ") }),
321
+ * path: ["search", "nodes"],
322
+ * typename: "Repository"
323
+ * })
324
+ * const repos = yield* Effect.forEach(
325
+ * ["Effect-TS/effect", "Effect-TS/website"],
326
+ * GraphQLResolver.request(RepoByName),
327
+ * { concurrency: "unbounded" }
328
+ * )
329
+ * return repos.map((repo) => repo.nameWithOwner)
330
+ * })
331
+ *
332
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => ["Effect-TS/effect", "Effect-TS/website"]
333
+ * ```
334
+ *
335
+ * @stability experimental
336
+ * @category resolvers
337
+ * @since 4.0.0
338
+ */
339
+ export declare const findById: <Op extends GraphQL.Any, K, const P extends ReadonlyArray<string>, T extends Typenames<Item<GraphQL.Result<Op>, P>> = never>(method: OperationMethod<Op>, options: {
340
+ readonly variables: (keys: ReadonlyArray<K>) => GraphQL.Variables<Op>;
341
+ readonly path: Path<GraphQL.Result<Op>, P>;
342
+ readonly key: (item: Narrow<Item<GraphQL.Result<Op>, P>, T>) => K;
343
+ readonly typename?: T | undefined;
344
+ } & BatchKey<Op>) => RequestResolver.RequestResolver<KeyRequest<K, Narrow<Item<GraphQL.Result<Op>, P>, T>, GraphQL.Error<Op> | Cause.NoSuchElementError, GraphQL.Services<Op>>>;
345
+ /**
346
+ * Batches calls to a generated query or mutation by repeating the operation
347
+ * under aliases in one request.
348
+ *
349
+ * **When to use**
350
+ *
351
+ * Use when the API has no list-key field, such as GitHub's pull requests by
352
+ * repository and number. Otherwise, {@link ordered} or {@link findById} send
353
+ * a smaller query.
354
+ *
355
+ * **Details**
356
+ *
357
+ * Use {@link request} to get `(variables) => Effect`. Variables that encode
358
+ * to the same JSON share a slice; each slice uses the operation's result Schema.
359
+ * Throws when the resolver is built if the operation has no document
360
+ * template, if an operation directive references a variable, or if a root
361
+ * selection is a fragment spread or inline fragment, since none of these can
362
+ * be repeated under aliases.
363
+ *
364
+ * Batches use `POST` even with `queryMethod: "GET"`. The default batch size
365
+ * is 10; change it with `RequestResolver.batchN`. Middleware run once per
366
+ * batch, and `batchKey` works as in {@link ordered}. Mock and custom methods
367
+ * are called once per slice instead.
368
+ *
369
+ * Errors with a matching `path[0]` fail only that slice, with the alias prefix
370
+ * removed from the error path. Errors without a matching path, transport errors
371
+ * and middleware failures fail the batch.
372
+ *
373
+ * **Gotchas**
374
+ *
375
+ * An error under a non-null root field can null the entire response, failing
376
+ * every slice. GitHub's `repository` and `pullRequest` are nullable.
377
+ *
378
+ * Middleware that hash queries must use `request.query`, not
379
+ * `operation.document`. Trusted-document allowlists don't support batching;
380
+ * query hashing does, since the same operation and slice count produce the
381
+ * same document.
382
+ *
383
+ * Mutations are allowed, but the caller cannot control root-field order.
384
+ *
385
+ * **Example** (Looking up pull requests by number)
386
+ *
387
+ * ```ts import.meta.vitest
388
+ * import { Effect, Layer, RequestResolver, Schema, Stream } from "effect"
389
+ * import { GraphQL, GraphQLClient, GraphQLGroup, GraphQLProtocol, GraphQLResolver } from "effect/graphql"
390
+ *
391
+ * // Generated from:
392
+ * // query PullRequest($owner: String!, $name: String!, $number: Int!) {
393
+ * // repository(owner: $owner, name: $name) { pullRequest(number: $number) { title } }
394
+ * // }
395
+ * const PullRequest = GraphQL.query("PullRequest", {
396
+ * document: {
397
+ * variables: [
398
+ * { name: "owner", body: "String!" },
399
+ * { name: "name", body: "String!" },
400
+ * { name: "number", body: "Int!" }
401
+ * ],
402
+ * selections: [{
403
+ * name: "repository",
404
+ * body: ["(owner:$", "owner", ",name:$", "name", "){pullRequest(number:$", "number", "){title}}"]
405
+ * }],
406
+ * fragments: []
407
+ * },
408
+ * variables: { owner: Schema.String, name: Schema.String, number: Schema.Int },
409
+ * result: Schema.Struct({
410
+ * repository: Schema.NullOr(Schema.Struct({
411
+ * pullRequest: Schema.NullOr(Schema.Struct({ title: Schema.String }))
412
+ * }))
413
+ * })
414
+ * })
415
+ *
416
+ * // A stand-in server that answers every aliased slice
417
+ * const queries: Array<string> = []
418
+ * const Scripted = Layer.succeed(GraphQLProtocol.GraphQLProtocol, {
419
+ * execute: (request) => {
420
+ * queries.push(request.query)
421
+ * const data: Record<string, unknown> = {}
422
+ * for (const [key, number] of Object.entries(request.variables as Record<string, unknown>)) {
423
+ * const prefix = /^(_\d+_)number$/.exec(key)?.[1]
424
+ * if (prefix !== undefined) data[`${prefix}repository`] = { pullRequest: { title: `PR ${number}` } }
425
+ * }
426
+ * return Effect.succeed({ body: { data } })
427
+ * },
428
+ * subscribe: () => Stream.empty
429
+ * })
430
+ *
431
+ * const program = Effect.gen(function*() {
432
+ * const github = yield* GraphQLClient.make(GraphQLGroup.make(PullRequest))
433
+ * const PullRequests = GraphQLResolver.aliased(github.PullRequest).pipe(RequestResolver.batchN(20))
434
+ * const getPullRequest = GraphQLResolver.request(PullRequests)
435
+ * const results = yield* Effect.forEach(
436
+ * [1, 2, 3],
437
+ * (number) => getPullRequest({ owner: "Effect-TS", name: "effect", number }),
438
+ * { concurrency: "unbounded" }
439
+ * )
440
+ * return [results.map((result) => result.repository?.pullRequest?.title), queries.length]
441
+ * })
442
+ *
443
+ * await Effect.runPromise(program.pipe(Effect.provide(Scripted))) // => [["PR 1", "PR 2", "PR 3"], 1]
444
+ * ```
445
+ *
446
+ * @stability experimental
447
+ * @category resolvers
448
+ * @since 4.0.0
449
+ */
450
+ export declare const aliased: <Op extends GraphQL.Any>(method: OperationMethod<Op>, ...[options]: {} extends BatchKey<Op> ? [options?: BatchKey<Op>] : [options: BatchKey<Op>]) => RequestResolver.RequestResolver<AliasedRequest<Op>>;
451
+ type AliasedRequest<Op extends GraphQL.Any> = KeyRequest<GraphQL.Variables<Op>, GraphQL.Result<Op>, GraphQL.Error<Op>, GraphQL.Services<Op>>;
452
+ export {};
453
+ //# sourceMappingURL=GraphQLResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphQLResolver.d.ts","sourceRoot":"","sources":["../../src/graphql/GraphQLResolver.ts"],"names":[],"mappings":"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"}