@effect-gql/core 0.1.0

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 (145) hide show
  1. package/LICENSE +7 -0
  2. package/dist/analyzer-extension.d.ts +105 -0
  3. package/dist/analyzer-extension.d.ts.map +1 -0
  4. package/dist/analyzer-extension.js +137 -0
  5. package/dist/analyzer-extension.js.map +1 -0
  6. package/dist/builder/execute.d.ts +26 -0
  7. package/dist/builder/execute.d.ts.map +1 -0
  8. package/dist/builder/execute.js +104 -0
  9. package/dist/builder/execute.js.map +1 -0
  10. package/dist/builder/field-builders.d.ts +30 -0
  11. package/dist/builder/field-builders.d.ts.map +1 -0
  12. package/dist/builder/field-builders.js +200 -0
  13. package/dist/builder/field-builders.js.map +1 -0
  14. package/dist/builder/index.d.ts +7 -0
  15. package/dist/builder/index.d.ts.map +1 -0
  16. package/dist/builder/index.js +31 -0
  17. package/dist/builder/index.js.map +1 -0
  18. package/dist/builder/pipe-api.d.ts +231 -0
  19. package/dist/builder/pipe-api.d.ts.map +1 -0
  20. package/dist/builder/pipe-api.js +151 -0
  21. package/dist/builder/pipe-api.js.map +1 -0
  22. package/dist/builder/schema-builder.d.ts +301 -0
  23. package/dist/builder/schema-builder.d.ts.map +1 -0
  24. package/dist/builder/schema-builder.js +566 -0
  25. package/dist/builder/schema-builder.js.map +1 -0
  26. package/dist/builder/type-registry.d.ts +80 -0
  27. package/dist/builder/type-registry.d.ts.map +1 -0
  28. package/dist/builder/type-registry.js +505 -0
  29. package/dist/builder/type-registry.js.map +1 -0
  30. package/dist/builder/types.d.ts +283 -0
  31. package/dist/builder/types.d.ts.map +1 -0
  32. package/dist/builder/types.js +3 -0
  33. package/dist/builder/types.js.map +1 -0
  34. package/dist/cli/generate-schema.d.ts +29 -0
  35. package/dist/cli/generate-schema.d.ts.map +1 -0
  36. package/dist/cli/generate-schema.js +233 -0
  37. package/dist/cli/generate-schema.js.map +1 -0
  38. package/dist/cli/index.d.ts +19 -0
  39. package/dist/cli/index.d.ts.map +1 -0
  40. package/dist/cli/index.js +24 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/context.d.ts +18 -0
  43. package/dist/context.d.ts.map +1 -0
  44. package/dist/context.js +11 -0
  45. package/dist/context.js.map +1 -0
  46. package/dist/error.d.ts +45 -0
  47. package/dist/error.d.ts.map +1 -0
  48. package/dist/error.js +29 -0
  49. package/dist/error.js.map +1 -0
  50. package/dist/extensions.d.ts +130 -0
  51. package/dist/extensions.d.ts.map +1 -0
  52. package/dist/extensions.js +78 -0
  53. package/dist/extensions.js.map +1 -0
  54. package/dist/index.d.ts +12 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +47 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/loader.d.ts +169 -0
  59. package/dist/loader.d.ts.map +1 -0
  60. package/dist/loader.js +237 -0
  61. package/dist/loader.js.map +1 -0
  62. package/dist/resolver-context.d.ts +154 -0
  63. package/dist/resolver-context.d.ts.map +1 -0
  64. package/dist/resolver-context.js +184 -0
  65. package/dist/resolver-context.js.map +1 -0
  66. package/dist/schema-mapping.d.ts +30 -0
  67. package/dist/schema-mapping.d.ts.map +1 -0
  68. package/dist/schema-mapping.js +280 -0
  69. package/dist/schema-mapping.js.map +1 -0
  70. package/dist/server/cache-control.d.ts +96 -0
  71. package/dist/server/cache-control.d.ts.map +1 -0
  72. package/dist/server/cache-control.js +308 -0
  73. package/dist/server/cache-control.js.map +1 -0
  74. package/dist/server/complexity.d.ts +165 -0
  75. package/dist/server/complexity.d.ts.map +1 -0
  76. package/dist/server/complexity.js +433 -0
  77. package/dist/server/complexity.js.map +1 -0
  78. package/dist/server/config.d.ts +66 -0
  79. package/dist/server/config.d.ts.map +1 -0
  80. package/dist/server/config.js +104 -0
  81. package/dist/server/config.js.map +1 -0
  82. package/dist/server/graphiql.d.ts +5 -0
  83. package/dist/server/graphiql.d.ts.map +1 -0
  84. package/dist/server/graphiql.js +43 -0
  85. package/dist/server/graphiql.js.map +1 -0
  86. package/dist/server/index.d.ts +18 -0
  87. package/dist/server/index.d.ts.map +1 -0
  88. package/dist/server/index.js +48 -0
  89. package/dist/server/index.js.map +1 -0
  90. package/dist/server/router.d.ts +79 -0
  91. package/dist/server/router.d.ts.map +1 -0
  92. package/dist/server/router.js +232 -0
  93. package/dist/server/router.js.map +1 -0
  94. package/dist/server/schema-builder-extensions.d.ts +42 -0
  95. package/dist/server/schema-builder-extensions.d.ts.map +1 -0
  96. package/dist/server/schema-builder-extensions.js +48 -0
  97. package/dist/server/schema-builder-extensions.js.map +1 -0
  98. package/dist/server/sse-adapter.d.ts +64 -0
  99. package/dist/server/sse-adapter.d.ts.map +1 -0
  100. package/dist/server/sse-adapter.js +227 -0
  101. package/dist/server/sse-adapter.js.map +1 -0
  102. package/dist/server/sse-types.d.ts +192 -0
  103. package/dist/server/sse-types.d.ts.map +1 -0
  104. package/dist/server/sse-types.js +63 -0
  105. package/dist/server/sse-types.js.map +1 -0
  106. package/dist/server/ws-adapter.d.ts +39 -0
  107. package/dist/server/ws-adapter.d.ts.map +1 -0
  108. package/dist/server/ws-adapter.js +247 -0
  109. package/dist/server/ws-adapter.js.map +1 -0
  110. package/dist/server/ws-types.d.ts +169 -0
  111. package/dist/server/ws-types.d.ts.map +1 -0
  112. package/dist/server/ws-types.js +11 -0
  113. package/dist/server/ws-types.js.map +1 -0
  114. package/dist/server/ws-utils.d.ts +42 -0
  115. package/dist/server/ws-utils.d.ts.map +1 -0
  116. package/dist/server/ws-utils.js +99 -0
  117. package/dist/server/ws-utils.js.map +1 -0
  118. package/package.json +61 -0
  119. package/src/analyzer-extension.ts +254 -0
  120. package/src/builder/execute.ts +153 -0
  121. package/src/builder/field-builders.ts +322 -0
  122. package/src/builder/index.ts +48 -0
  123. package/src/builder/pipe-api.ts +312 -0
  124. package/src/builder/schema-builder.ts +970 -0
  125. package/src/builder/type-registry.ts +670 -0
  126. package/src/builder/types.ts +305 -0
  127. package/src/context.ts +23 -0
  128. package/src/error.ts +32 -0
  129. package/src/extensions.ts +240 -0
  130. package/src/index.ts +32 -0
  131. package/src/loader.ts +363 -0
  132. package/src/resolver-context.ts +253 -0
  133. package/src/schema-mapping.ts +307 -0
  134. package/src/server/cache-control.ts +590 -0
  135. package/src/server/complexity.ts +774 -0
  136. package/src/server/config.ts +174 -0
  137. package/src/server/graphiql.ts +38 -0
  138. package/src/server/index.ts +96 -0
  139. package/src/server/router.ts +432 -0
  140. package/src/server/schema-builder-extensions.ts +51 -0
  141. package/src/server/sse-adapter.ts +327 -0
  142. package/src/server/sse-types.ts +234 -0
  143. package/src/server/ws-adapter.ts +355 -0
  144. package/src/server/ws-types.ts +192 -0
  145. package/src/server/ws-utils.ts +136 -0
@@ -0,0 +1,301 @@
1
+ import { Effect, Pipeable } from "effect";
2
+ import * as S from "effect/Schema";
3
+ import { GraphQLSchema, DirectiveLocation } from "graphql";
4
+ import type { DirectiveApplication, MiddlewareContext, CacheHint } from "./types";
5
+ import type { GraphQLExtension, ExecutionArgs } from "../extensions";
6
+ import type { GraphQLResolveInfo, DocumentNode, ExecutionResult, GraphQLError as GQLError } from "graphql";
7
+ import type { FieldComplexity, FieldComplexityMap } from "../server/complexity";
8
+ import type { CacheHintMap } from "../server/cache-control";
9
+ /**
10
+ * GraphQL Schema Builder with type-safe service requirements (Layer-per-Request Pattern)
11
+ *
12
+ * The type parameter R accumulates all service requirements from resolvers.
13
+ * Unlike the runtime-in-context approach, this pattern builds the schema without
14
+ * executing any Effects. At request time, you provide a Layer with all required services.
15
+ */
16
+ export declare class GraphQLSchemaBuilder<R = never> implements Pipeable.Pipeable {
17
+ private readonly state;
18
+ private constructor();
19
+ /**
20
+ * Pipeable interface implementation - enables fluent .pipe() syntax
21
+ */
22
+ pipe<A>(this: A): A;
23
+ pipe<A, B>(this: A, ab: (a: A) => B): B;
24
+ pipe<A, B, C>(this: A, ab: (a: A) => B, bc: (b: B) => C): C;
25
+ pipe<A, B, C, D>(this: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D): D;
26
+ pipe<A, B, C, D, E>(this: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): E;
27
+ pipe<A, B, C, D, E, F>(this: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): F;
28
+ pipe<A, B, C, D, E, F, G>(this: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G): G;
29
+ pipe<A, B, C, D, E, F, G, H>(this: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H): H;
30
+ pipe<A, B, C, D, E, F, G, H, I>(this: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I): I;
31
+ /**
32
+ * Create an empty schema builder
33
+ */
34
+ static readonly empty: GraphQLSchemaBuilder<never>;
35
+ /**
36
+ * Create a new builder with updated state
37
+ */
38
+ private with;
39
+ /**
40
+ * Add a query field
41
+ */
42
+ query<A, E, R2, Args = void>(name: string, config: {
43
+ type: S.Schema<A, any, any>;
44
+ args?: S.Schema<Args, any, any>;
45
+ description?: string;
46
+ directives?: readonly DirectiveApplication[];
47
+ /**
48
+ * Complexity cost of this field for query complexity limiting.
49
+ * Can be a static number or a function that receives the resolved arguments.
50
+ */
51
+ complexity?: FieldComplexity;
52
+ /**
53
+ * Cache control hint for this field.
54
+ * Used to compute HTTP Cache-Control headers for the response.
55
+ */
56
+ cacheControl?: CacheHint;
57
+ resolve: (args: Args) => Effect.Effect<A, E, R2>;
58
+ }): GraphQLSchemaBuilder<R | R2>;
59
+ /**
60
+ * Add a mutation field
61
+ */
62
+ mutation<A, E, R2, Args = void>(name: string, config: {
63
+ type: S.Schema<A, any, any>;
64
+ args?: S.Schema<Args, any, any>;
65
+ description?: string;
66
+ directives?: readonly DirectiveApplication[];
67
+ /**
68
+ * Complexity cost of this field for query complexity limiting.
69
+ * Can be a static number or a function that receives the resolved arguments.
70
+ */
71
+ complexity?: FieldComplexity;
72
+ resolve: (args: Args) => Effect.Effect<A, E, R2>;
73
+ }): GraphQLSchemaBuilder<R | R2>;
74
+ /**
75
+ * Add a subscription field
76
+ *
77
+ * Subscriptions return a Stream that yields values over time.
78
+ * The subscribe function returns an Effect that produces a Stream.
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * builder.subscription("userCreated", {
83
+ * type: User,
84
+ * subscribe: Effect.gen(function*() {
85
+ * const pubsub = yield* PubSubService
86
+ * return pubsub.subscribe("USER_CREATED")
87
+ * }),
88
+ * })
89
+ * ```
90
+ */
91
+ subscription<A, E, R2, Args = void>(name: string, config: {
92
+ type: S.Schema<A, any, any>;
93
+ args?: S.Schema<Args, any, any>;
94
+ description?: string;
95
+ directives?: readonly DirectiveApplication[];
96
+ /**
97
+ * Complexity cost of this subscription for query complexity limiting.
98
+ * Can be a static number or a function that receives the resolved arguments.
99
+ */
100
+ complexity?: FieldComplexity;
101
+ /**
102
+ * Cache control hint for this subscription.
103
+ * Note: Subscriptions are typically not cached, but this can be used for initial response hints.
104
+ */
105
+ cacheControl?: CacheHint;
106
+ subscribe: (args: Args) => Effect.Effect<import("effect").Stream.Stream<A, E, R2>, E, R2>;
107
+ resolve?: (value: A, args: Args) => Effect.Effect<A, E, R2>;
108
+ }): GraphQLSchemaBuilder<R | R2>;
109
+ /**
110
+ * Register an object type from a schema
111
+ */
112
+ objectType<A, R2 = never>(config: {
113
+ name?: string;
114
+ schema: S.Schema<A, any, any>;
115
+ implements?: readonly string[];
116
+ directives?: readonly DirectiveApplication[];
117
+ /**
118
+ * Default cache control hint for all fields returning this type.
119
+ * Can be overridden by field-level cacheControl.
120
+ */
121
+ cacheControl?: CacheHint;
122
+ fields?: Record<string, {
123
+ type: S.Schema<any, any, any>;
124
+ args?: S.Schema<any, any, any>;
125
+ description?: string;
126
+ directives?: readonly DirectiveApplication[];
127
+ /**
128
+ * Complexity cost of this field for query complexity limiting.
129
+ */
130
+ complexity?: FieldComplexity;
131
+ /**
132
+ * Cache control hint for this field.
133
+ */
134
+ cacheControl?: CacheHint;
135
+ resolve: (parent: A, args: any) => Effect.Effect<any, any, any>;
136
+ }>;
137
+ }): GraphQLSchemaBuilder<R | R2>;
138
+ /**
139
+ * Register an interface type from a schema
140
+ */
141
+ interfaceType(config: {
142
+ name?: string;
143
+ schema: S.Schema<any, any, any>;
144
+ resolveType?: (value: any) => string;
145
+ directives?: readonly DirectiveApplication[];
146
+ }): GraphQLSchemaBuilder<R>;
147
+ /**
148
+ * Register an enum type
149
+ */
150
+ enumType(config: {
151
+ name: string;
152
+ values: readonly string[];
153
+ description?: string;
154
+ directives?: readonly DirectiveApplication[];
155
+ }): GraphQLSchemaBuilder<R>;
156
+ /**
157
+ * Register a union type
158
+ */
159
+ unionType(config: {
160
+ name: string;
161
+ types: readonly string[];
162
+ resolveType?: (value: any) => string;
163
+ directives?: readonly DirectiveApplication[];
164
+ }): GraphQLSchemaBuilder<R>;
165
+ /**
166
+ * Register an input type
167
+ */
168
+ inputType(config: {
169
+ name?: string;
170
+ schema: S.Schema<any, any, any>;
171
+ description?: string;
172
+ directives?: readonly DirectiveApplication[];
173
+ }): GraphQLSchemaBuilder<R>;
174
+ /**
175
+ * Register a directive
176
+ */
177
+ directive<Args = void, R2 = never>(config: {
178
+ name: string;
179
+ description?: string;
180
+ locations: readonly DirectiveLocation[];
181
+ args?: S.Schema<Args, any, any>;
182
+ apply?: (args: Args) => <A, E, R3>(effect: Effect.Effect<A, E, R3>) => Effect.Effect<A, E, R2 | R3>;
183
+ }): GraphQLSchemaBuilder<R | R2>;
184
+ /**
185
+ * Register a middleware
186
+ *
187
+ * Middleware wraps all resolvers (or those matching a pattern) and executes
188
+ * in an "onion" model - first registered middleware is the outermost layer.
189
+ *
190
+ * @param config.name - Middleware name (for debugging/logging)
191
+ * @param config.description - Optional description
192
+ * @param config.match - Optional predicate to filter which fields this applies to
193
+ * @param config.apply - Function that transforms the resolver Effect
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * builder.middleware({
198
+ * name: "logging",
199
+ * apply: (effect, ctx) => Effect.gen(function*() {
200
+ * yield* Effect.logInfo(`Resolving ${ctx.info.fieldName}`)
201
+ * const start = Date.now()
202
+ * const result = yield* effect
203
+ * yield* Effect.logInfo(`Resolved in ${Date.now() - start}ms`)
204
+ * return result
205
+ * })
206
+ * })
207
+ * ```
208
+ */
209
+ middleware<R2 = never>(config: {
210
+ name: string;
211
+ description?: string;
212
+ match?: (info: GraphQLResolveInfo) => boolean;
213
+ apply: <A, E, R3>(effect: Effect.Effect<A, E, R3>, context: MiddlewareContext) => Effect.Effect<A, E, R2 | R3>;
214
+ }): GraphQLSchemaBuilder<R | R2>;
215
+ /**
216
+ * Register an extension
217
+ *
218
+ * Extensions provide lifecycle hooks that run at each phase of request processing
219
+ * (parse, validate, execute) and can contribute data to the response's extensions field.
220
+ *
221
+ * @param config.name - Extension name (for debugging/logging)
222
+ * @param config.description - Optional description
223
+ * @param config.onParse - Called after query parsing
224
+ * @param config.onValidate - Called after validation
225
+ * @param config.onExecuteStart - Called before execution begins
226
+ * @param config.onExecuteEnd - Called after execution completes
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * builder.extension({
231
+ * name: "tracing",
232
+ * onExecuteStart: () => Effect.gen(function*() {
233
+ * const ext = yield* ExtensionsService
234
+ * yield* ext.set("tracing", { startTime: Date.now() })
235
+ * }),
236
+ * onExecuteEnd: () => Effect.gen(function*() {
237
+ * const ext = yield* ExtensionsService
238
+ * yield* ext.merge("tracing", { endTime: Date.now() })
239
+ * }),
240
+ * })
241
+ * ```
242
+ */
243
+ extension<R2 = never>(config: {
244
+ name: string;
245
+ description?: string;
246
+ onParse?: (source: string, document: DocumentNode) => Effect.Effect<void, never, R2>;
247
+ onValidate?: (document: DocumentNode, errors: readonly GQLError[]) => Effect.Effect<void, never, R2>;
248
+ onExecuteStart?: (args: ExecutionArgs) => Effect.Effect<void, never, R2>;
249
+ onExecuteEnd?: (result: ExecutionResult) => Effect.Effect<void, never, R2>;
250
+ }): GraphQLSchemaBuilder<R | R2>;
251
+ /**
252
+ * Get the registered extensions for use by the execution layer
253
+ */
254
+ getExtensions(): readonly GraphQLExtension<any>[];
255
+ /**
256
+ * Add a computed/relational field to an object type
257
+ */
258
+ field<Parent, A, E, R2, Args = void>(typeName: string, fieldName: string, config: {
259
+ type: S.Schema<A, any, any>;
260
+ args?: S.Schema<Args, any, any>;
261
+ description?: string;
262
+ directives?: readonly DirectiveApplication[];
263
+ /**
264
+ * Complexity cost of this field for query complexity limiting.
265
+ * Can be a static number or a function that receives the resolved arguments.
266
+ */
267
+ complexity?: FieldComplexity;
268
+ /**
269
+ * Cache control hint for this field.
270
+ * Used to compute HTTP Cache-Control headers for the response.
271
+ */
272
+ cacheControl?: CacheHint;
273
+ resolve: (parent: Parent, args: Args) => Effect.Effect<A, E, R2>;
274
+ }): GraphQLSchemaBuilder<R | R2>;
275
+ /**
276
+ * Get the field complexity map for use in complexity validation.
277
+ * Maps "TypeName.fieldName" to the complexity value or function.
278
+ */
279
+ getFieldComplexities(): FieldComplexityMap;
280
+ /**
281
+ * Get the cache hint map for use in cache control calculation.
282
+ * Maps "TypeName.fieldName" to the cache hint for field-level hints,
283
+ * or "TypeName" to the cache hint for type-level hints.
284
+ */
285
+ getCacheHints(): CacheHintMap;
286
+ /**
287
+ * Build the GraphQL schema (no services required)
288
+ */
289
+ buildSchema(): GraphQLSchema;
290
+ private buildDirectiveRegistry;
291
+ private buildEnumRegistry;
292
+ private buildInputRegistry;
293
+ private buildInterfaceRegistry;
294
+ private buildTypeAndUnionRegistries;
295
+ private createFieldBuilderContext;
296
+ private buildQueryFields;
297
+ private buildMutationFields;
298
+ private buildSubscriptionFields;
299
+ private assembleSchema;
300
+ }
301
+ //# sourceMappingURL=schema-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../../src/builder/schema-builder.ts"],"names":[],"mappings":"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"}