@effect-gql/core 0.1.0 → 1.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.
- package/README.md +100 -0
- package/builder/index.cjs +1446 -0
- package/builder/index.cjs.map +1 -0
- package/builder/index.d.cts +260 -0
- package/{dist/builder/pipe-api.d.ts → builder/index.d.ts} +50 -21
- package/builder/index.js +1405 -0
- package/builder/index.js.map +1 -0
- package/index.cjs +3469 -0
- package/index.cjs.map +1 -0
- package/index.d.cts +529 -0
- package/index.d.ts +529 -0
- package/index.js +3292 -0
- package/index.js.map +1 -0
- package/package.json +19 -28
- package/schema-builder-DKvkzU_M.d.cts +965 -0
- package/schema-builder-DKvkzU_M.d.ts +965 -0
- package/server/index.cjs +1579 -0
- package/server/index.cjs.map +1 -0
- package/server/index.d.cts +682 -0
- package/server/index.d.ts +682 -0
- package/server/index.js +1548 -0
- package/server/index.js.map +1 -0
- package/dist/analyzer-extension.d.ts +0 -105
- package/dist/analyzer-extension.d.ts.map +0 -1
- package/dist/analyzer-extension.js +0 -137
- package/dist/analyzer-extension.js.map +0 -1
- package/dist/builder/execute.d.ts +0 -26
- package/dist/builder/execute.d.ts.map +0 -1
- package/dist/builder/execute.js +0 -104
- package/dist/builder/execute.js.map +0 -1
- package/dist/builder/field-builders.d.ts +0 -30
- package/dist/builder/field-builders.d.ts.map +0 -1
- package/dist/builder/field-builders.js +0 -200
- package/dist/builder/field-builders.js.map +0 -1
- package/dist/builder/index.d.ts +0 -7
- package/dist/builder/index.d.ts.map +0 -1
- package/dist/builder/index.js +0 -31
- package/dist/builder/index.js.map +0 -1
- package/dist/builder/pipe-api.d.ts.map +0 -1
- package/dist/builder/pipe-api.js +0 -151
- package/dist/builder/pipe-api.js.map +0 -1
- package/dist/builder/schema-builder.d.ts +0 -301
- package/dist/builder/schema-builder.d.ts.map +0 -1
- package/dist/builder/schema-builder.js +0 -566
- package/dist/builder/schema-builder.js.map +0 -1
- package/dist/builder/type-registry.d.ts +0 -80
- package/dist/builder/type-registry.d.ts.map +0 -1
- package/dist/builder/type-registry.js +0 -505
- package/dist/builder/type-registry.js.map +0 -1
- package/dist/builder/types.d.ts +0 -283
- package/dist/builder/types.d.ts.map +0 -1
- package/dist/builder/types.js +0 -3
- package/dist/builder/types.js.map +0 -1
- package/dist/cli/generate-schema.d.ts +0 -29
- package/dist/cli/generate-schema.d.ts.map +0 -1
- package/dist/cli/generate-schema.js +0 -233
- package/dist/cli/generate-schema.js.map +0 -1
- package/dist/cli/index.d.ts +0 -19
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -24
- package/dist/cli/index.js.map +0 -1
- package/dist/context.d.ts +0 -18
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -11
- package/dist/context.js.map +0 -1
- package/dist/error.d.ts +0 -45
- package/dist/error.d.ts.map +0 -1
- package/dist/error.js +0 -29
- package/dist/error.js.map +0 -1
- package/dist/extensions.d.ts +0 -130
- package/dist/extensions.d.ts.map +0 -1
- package/dist/extensions.js +0 -78
- package/dist/extensions.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -47
- package/dist/index.js.map +0 -1
- package/dist/loader.d.ts +0 -169
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -237
- package/dist/loader.js.map +0 -1
- package/dist/resolver-context.d.ts +0 -154
- package/dist/resolver-context.d.ts.map +0 -1
- package/dist/resolver-context.js +0 -184
- package/dist/resolver-context.js.map +0 -1
- package/dist/schema-mapping.d.ts +0 -30
- package/dist/schema-mapping.d.ts.map +0 -1
- package/dist/schema-mapping.js +0 -280
- package/dist/schema-mapping.js.map +0 -1
- package/dist/server/cache-control.d.ts +0 -96
- package/dist/server/cache-control.d.ts.map +0 -1
- package/dist/server/cache-control.js +0 -308
- package/dist/server/cache-control.js.map +0 -1
- package/dist/server/complexity.d.ts +0 -165
- package/dist/server/complexity.d.ts.map +0 -1
- package/dist/server/complexity.js +0 -433
- package/dist/server/complexity.js.map +0 -1
- package/dist/server/config.d.ts +0 -66
- package/dist/server/config.d.ts.map +0 -1
- package/dist/server/config.js +0 -104
- package/dist/server/config.js.map +0 -1
- package/dist/server/graphiql.d.ts +0 -5
- package/dist/server/graphiql.d.ts.map +0 -1
- package/dist/server/graphiql.js +0 -43
- package/dist/server/graphiql.js.map +0 -1
- package/dist/server/index.d.ts +0 -18
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -48
- package/dist/server/index.js.map +0 -1
- package/dist/server/router.d.ts +0 -79
- package/dist/server/router.d.ts.map +0 -1
- package/dist/server/router.js +0 -232
- package/dist/server/router.js.map +0 -1
- package/dist/server/schema-builder-extensions.d.ts +0 -42
- package/dist/server/schema-builder-extensions.d.ts.map +0 -1
- package/dist/server/schema-builder-extensions.js +0 -48
- package/dist/server/schema-builder-extensions.js.map +0 -1
- package/dist/server/sse-adapter.d.ts +0 -64
- package/dist/server/sse-adapter.d.ts.map +0 -1
- package/dist/server/sse-adapter.js +0 -227
- package/dist/server/sse-adapter.js.map +0 -1
- package/dist/server/sse-types.d.ts +0 -192
- package/dist/server/sse-types.d.ts.map +0 -1
- package/dist/server/sse-types.js +0 -63
- package/dist/server/sse-types.js.map +0 -1
- package/dist/server/ws-adapter.d.ts +0 -39
- package/dist/server/ws-adapter.d.ts.map +0 -1
- package/dist/server/ws-adapter.js +0 -247
- package/dist/server/ws-adapter.js.map +0 -1
- package/dist/server/ws-types.d.ts +0 -169
- package/dist/server/ws-types.d.ts.map +0 -1
- package/dist/server/ws-types.js +0 -11
- package/dist/server/ws-types.js.map +0 -1
- package/dist/server/ws-utils.d.ts +0 -42
- package/dist/server/ws-utils.d.ts.map +0 -1
- package/dist/server/ws-utils.js +0 -99
- package/dist/server/ws-utils.js.map +0 -1
- package/src/analyzer-extension.ts +0 -254
- package/src/builder/execute.ts +0 -153
- package/src/builder/field-builders.ts +0 -322
- package/src/builder/index.ts +0 -48
- package/src/builder/pipe-api.ts +0 -312
- package/src/builder/schema-builder.ts +0 -970
- package/src/builder/type-registry.ts +0 -670
- package/src/builder/types.ts +0 -305
- package/src/context.ts +0 -23
- package/src/error.ts +0 -32
- package/src/extensions.ts +0 -240
- package/src/index.ts +0 -32
- package/src/loader.ts +0 -363
- package/src/resolver-context.ts +0 -253
- package/src/schema-mapping.ts +0 -307
- package/src/server/cache-control.ts +0 -590
- package/src/server/complexity.ts +0 -774
- package/src/server/config.ts +0 -174
- package/src/server/graphiql.ts +0 -38
- package/src/server/index.ts +0 -96
- package/src/server/router.ts +0 -432
- package/src/server/schema-builder-extensions.ts +0 -51
- package/src/server/sse-adapter.ts +0 -327
- package/src/server/sse-types.ts +0 -234
- package/src/server/ws-adapter.ts +0 -355
- package/src/server/ws-types.ts +0 -192
- package/src/server/ws-utils.ts +0 -136
|
@@ -1,566 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GraphQLSchemaBuilder = void 0;
|
|
4
|
-
const effect_1 = require("effect");
|
|
5
|
-
const graphql_1 = require("graphql");
|
|
6
|
-
const type_registry_1 = require("./type-registry");
|
|
7
|
-
const field_builders_1 = require("./field-builders");
|
|
8
|
-
/**
|
|
9
|
-
* Create a new state with one map updated
|
|
10
|
-
*/
|
|
11
|
-
function updateState(state, key, value) {
|
|
12
|
-
return { ...state, [key]: value };
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* GraphQL Schema Builder with type-safe service requirements (Layer-per-Request Pattern)
|
|
16
|
-
*
|
|
17
|
-
* The type parameter R accumulates all service requirements from resolvers.
|
|
18
|
-
* Unlike the runtime-in-context approach, this pattern builds the schema without
|
|
19
|
-
* executing any Effects. At request time, you provide a Layer with all required services.
|
|
20
|
-
*/
|
|
21
|
-
class GraphQLSchemaBuilder {
|
|
22
|
-
state;
|
|
23
|
-
constructor(state) {
|
|
24
|
-
this.state = state;
|
|
25
|
-
}
|
|
26
|
-
pipe() {
|
|
27
|
-
return effect_1.Pipeable.pipeArguments(this, arguments);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Create an empty schema builder
|
|
31
|
-
*/
|
|
32
|
-
static empty = new GraphQLSchemaBuilder({
|
|
33
|
-
types: new Map(),
|
|
34
|
-
interfaces: new Map(),
|
|
35
|
-
enums: new Map(),
|
|
36
|
-
unions: new Map(),
|
|
37
|
-
inputs: new Map(),
|
|
38
|
-
directives: new Map(),
|
|
39
|
-
middlewares: [],
|
|
40
|
-
extensions: [],
|
|
41
|
-
queries: new Map(),
|
|
42
|
-
mutations: new Map(),
|
|
43
|
-
subscriptions: new Map(),
|
|
44
|
-
objectFields: new Map(),
|
|
45
|
-
});
|
|
46
|
-
/**
|
|
47
|
-
* Create a new builder with updated state
|
|
48
|
-
*/
|
|
49
|
-
with(newState) {
|
|
50
|
-
return new GraphQLSchemaBuilder(newState);
|
|
51
|
-
}
|
|
52
|
-
// ============================================================================
|
|
53
|
-
// Registration Methods
|
|
54
|
-
// ============================================================================
|
|
55
|
-
/**
|
|
56
|
-
* Add a query field
|
|
57
|
-
*/
|
|
58
|
-
query(name, config) {
|
|
59
|
-
const newQueries = new Map(this.state.queries);
|
|
60
|
-
newQueries.set(name, config);
|
|
61
|
-
return this.with(updateState(this.state, "queries", newQueries));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Add a mutation field
|
|
65
|
-
*/
|
|
66
|
-
mutation(name, config) {
|
|
67
|
-
const newMutations = new Map(this.state.mutations);
|
|
68
|
-
newMutations.set(name, config);
|
|
69
|
-
return this.with(updateState(this.state, "mutations", newMutations));
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Add a subscription field
|
|
73
|
-
*
|
|
74
|
-
* Subscriptions return a Stream that yields values over time.
|
|
75
|
-
* The subscribe function returns an Effect that produces a Stream.
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```typescript
|
|
79
|
-
* builder.subscription("userCreated", {
|
|
80
|
-
* type: User,
|
|
81
|
-
* subscribe: Effect.gen(function*() {
|
|
82
|
-
* const pubsub = yield* PubSubService
|
|
83
|
-
* return pubsub.subscribe("USER_CREATED")
|
|
84
|
-
* }),
|
|
85
|
-
* })
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
subscription(name, config) {
|
|
89
|
-
const newSubscriptions = new Map(this.state.subscriptions);
|
|
90
|
-
newSubscriptions.set(name, config);
|
|
91
|
-
return this.with(updateState(this.state, "subscriptions", newSubscriptions));
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Register an object type from a schema
|
|
95
|
-
*/
|
|
96
|
-
objectType(config) {
|
|
97
|
-
const { schema, implements: implementsInterfaces, directives, cacheControl, fields } = config;
|
|
98
|
-
const name = config.name ?? (0, type_registry_1.getSchemaName)(schema);
|
|
99
|
-
if (!name) {
|
|
100
|
-
throw new Error("objectType requires a name. Either provide one explicitly or use a TaggedStruct/TaggedClass/Schema.Class");
|
|
101
|
-
}
|
|
102
|
-
const newTypes = new Map(this.state.types);
|
|
103
|
-
newTypes.set(name, { name, schema, implements: implementsInterfaces, directives, cacheControl });
|
|
104
|
-
let newObjectFields = this.state.objectFields;
|
|
105
|
-
if (fields) {
|
|
106
|
-
newObjectFields = new Map(this.state.objectFields);
|
|
107
|
-
const typeFields = new Map();
|
|
108
|
-
for (const [fieldName, fieldConfig] of Object.entries(fields)) {
|
|
109
|
-
typeFields.set(fieldName, fieldConfig);
|
|
110
|
-
}
|
|
111
|
-
newObjectFields.set(name, typeFields);
|
|
112
|
-
}
|
|
113
|
-
return this.with({
|
|
114
|
-
...this.state,
|
|
115
|
-
types: newTypes,
|
|
116
|
-
objectFields: newObjectFields,
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Register an interface type from a schema
|
|
121
|
-
*/
|
|
122
|
-
interfaceType(config) {
|
|
123
|
-
const { schema, resolveType, directives } = config;
|
|
124
|
-
const name = config.name ?? (0, type_registry_1.getSchemaName)(schema);
|
|
125
|
-
if (!name) {
|
|
126
|
-
throw new Error("interfaceType requires a name. Either provide one explicitly or use a TaggedStruct/TaggedClass/Schema.Class");
|
|
127
|
-
}
|
|
128
|
-
const newInterfaces = new Map(this.state.interfaces);
|
|
129
|
-
newInterfaces.set(name, {
|
|
130
|
-
name,
|
|
131
|
-
schema,
|
|
132
|
-
resolveType: resolveType ?? ((value) => value._tag),
|
|
133
|
-
directives,
|
|
134
|
-
});
|
|
135
|
-
return this.with(updateState(this.state, "interfaces", newInterfaces));
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Register an enum type
|
|
139
|
-
*/
|
|
140
|
-
enumType(config) {
|
|
141
|
-
const { name, values, description, directives } = config;
|
|
142
|
-
const newEnums = new Map(this.state.enums);
|
|
143
|
-
newEnums.set(name, { name, values, description, directives });
|
|
144
|
-
return this.with(updateState(this.state, "enums", newEnums));
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Register a union type
|
|
148
|
-
*/
|
|
149
|
-
unionType(config) {
|
|
150
|
-
const { name, types, resolveType, directives } = config;
|
|
151
|
-
const newUnions = new Map(this.state.unions);
|
|
152
|
-
newUnions.set(name, {
|
|
153
|
-
name,
|
|
154
|
-
types,
|
|
155
|
-
resolveType: resolveType ?? ((value) => value._tag),
|
|
156
|
-
directives,
|
|
157
|
-
});
|
|
158
|
-
return this.with(updateState(this.state, "unions", newUnions));
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Register an input type
|
|
162
|
-
*/
|
|
163
|
-
inputType(config) {
|
|
164
|
-
const { schema, description, directives } = config;
|
|
165
|
-
const name = config.name ?? (0, type_registry_1.getSchemaName)(schema);
|
|
166
|
-
if (!name) {
|
|
167
|
-
throw new Error("inputType requires a name. Either provide one explicitly or use a TaggedStruct/TaggedClass/Schema.Class");
|
|
168
|
-
}
|
|
169
|
-
const newInputs = new Map(this.state.inputs);
|
|
170
|
-
newInputs.set(name, { name, schema, description, directives });
|
|
171
|
-
return this.with(updateState(this.state, "inputs", newInputs));
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Register a directive
|
|
175
|
-
*/
|
|
176
|
-
directive(config) {
|
|
177
|
-
const newDirectives = new Map(this.state.directives);
|
|
178
|
-
newDirectives.set(config.name, config);
|
|
179
|
-
return this.with(updateState(this.state, "directives", newDirectives));
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Register a middleware
|
|
183
|
-
*
|
|
184
|
-
* Middleware wraps all resolvers (or those matching a pattern) and executes
|
|
185
|
-
* in an "onion" model - first registered middleware is the outermost layer.
|
|
186
|
-
*
|
|
187
|
-
* @param config.name - Middleware name (for debugging/logging)
|
|
188
|
-
* @param config.description - Optional description
|
|
189
|
-
* @param config.match - Optional predicate to filter which fields this applies to
|
|
190
|
-
* @param config.apply - Function that transforms the resolver Effect
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* ```typescript
|
|
194
|
-
* builder.middleware({
|
|
195
|
-
* name: "logging",
|
|
196
|
-
* apply: (effect, ctx) => Effect.gen(function*() {
|
|
197
|
-
* yield* Effect.logInfo(`Resolving ${ctx.info.fieldName}`)
|
|
198
|
-
* const start = Date.now()
|
|
199
|
-
* const result = yield* effect
|
|
200
|
-
* yield* Effect.logInfo(`Resolved in ${Date.now() - start}ms`)
|
|
201
|
-
* return result
|
|
202
|
-
* })
|
|
203
|
-
* })
|
|
204
|
-
* ```
|
|
205
|
-
*/
|
|
206
|
-
middleware(config) {
|
|
207
|
-
const newMiddlewares = [...this.state.middlewares, config];
|
|
208
|
-
return this.with({ ...this.state, middlewares: newMiddlewares });
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Register an extension
|
|
212
|
-
*
|
|
213
|
-
* Extensions provide lifecycle hooks that run at each phase of request processing
|
|
214
|
-
* (parse, validate, execute) and can contribute data to the response's extensions field.
|
|
215
|
-
*
|
|
216
|
-
* @param config.name - Extension name (for debugging/logging)
|
|
217
|
-
* @param config.description - Optional description
|
|
218
|
-
* @param config.onParse - Called after query parsing
|
|
219
|
-
* @param config.onValidate - Called after validation
|
|
220
|
-
* @param config.onExecuteStart - Called before execution begins
|
|
221
|
-
* @param config.onExecuteEnd - Called after execution completes
|
|
222
|
-
*
|
|
223
|
-
* @example
|
|
224
|
-
* ```typescript
|
|
225
|
-
* builder.extension({
|
|
226
|
-
* name: "tracing",
|
|
227
|
-
* onExecuteStart: () => Effect.gen(function*() {
|
|
228
|
-
* const ext = yield* ExtensionsService
|
|
229
|
-
* yield* ext.set("tracing", { startTime: Date.now() })
|
|
230
|
-
* }),
|
|
231
|
-
* onExecuteEnd: () => Effect.gen(function*() {
|
|
232
|
-
* const ext = yield* ExtensionsService
|
|
233
|
-
* yield* ext.merge("tracing", { endTime: Date.now() })
|
|
234
|
-
* }),
|
|
235
|
-
* })
|
|
236
|
-
* ```
|
|
237
|
-
*/
|
|
238
|
-
extension(config) {
|
|
239
|
-
const newExtensions = [...this.state.extensions, config];
|
|
240
|
-
return this.with({ ...this.state, extensions: newExtensions });
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Get the registered extensions for use by the execution layer
|
|
244
|
-
*/
|
|
245
|
-
getExtensions() {
|
|
246
|
-
return this.state.extensions;
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Add a computed/relational field to an object type
|
|
250
|
-
*/
|
|
251
|
-
field(typeName, fieldName, config) {
|
|
252
|
-
const newObjectFields = new Map(this.state.objectFields);
|
|
253
|
-
const typeFields = newObjectFields.get(typeName) || new Map();
|
|
254
|
-
typeFields.set(fieldName, config);
|
|
255
|
-
newObjectFields.set(typeName, typeFields);
|
|
256
|
-
return this.with(updateState(this.state, "objectFields", newObjectFields));
|
|
257
|
-
}
|
|
258
|
-
// ============================================================================
|
|
259
|
-
// Schema Building
|
|
260
|
-
// ============================================================================
|
|
261
|
-
/**
|
|
262
|
-
* Get the field complexity map for use in complexity validation.
|
|
263
|
-
* Maps "TypeName.fieldName" to the complexity value or function.
|
|
264
|
-
*/
|
|
265
|
-
getFieldComplexities() {
|
|
266
|
-
const complexities = new Map();
|
|
267
|
-
// Query fields
|
|
268
|
-
for (const [name, config] of this.state.queries) {
|
|
269
|
-
if (config.complexity !== undefined) {
|
|
270
|
-
complexities.set(`Query.${name}`, config.complexity);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
// Mutation fields
|
|
274
|
-
for (const [name, config] of this.state.mutations) {
|
|
275
|
-
if (config.complexity !== undefined) {
|
|
276
|
-
complexities.set(`Mutation.${name}`, config.complexity);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
// Subscription fields
|
|
280
|
-
for (const [name, config] of this.state.subscriptions) {
|
|
281
|
-
if (config.complexity !== undefined) {
|
|
282
|
-
complexities.set(`Subscription.${name}`, config.complexity);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// Object type fields
|
|
286
|
-
for (const [typeName, fields] of this.state.objectFields) {
|
|
287
|
-
for (const [fieldName, config] of fields) {
|
|
288
|
-
if (config.complexity !== undefined) {
|
|
289
|
-
complexities.set(`${typeName}.${fieldName}`, config.complexity);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
return complexities;
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Get the cache hint map for use in cache control calculation.
|
|
297
|
-
* Maps "TypeName.fieldName" to the cache hint for field-level hints,
|
|
298
|
-
* or "TypeName" to the cache hint for type-level hints.
|
|
299
|
-
*/
|
|
300
|
-
getCacheHints() {
|
|
301
|
-
const hints = new Map();
|
|
302
|
-
// Type-level hints
|
|
303
|
-
for (const [typeName, typeReg] of this.state.types) {
|
|
304
|
-
if (typeReg.cacheControl !== undefined) {
|
|
305
|
-
hints.set(typeName, typeReg.cacheControl);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
// Query fields
|
|
309
|
-
for (const [name, config] of this.state.queries) {
|
|
310
|
-
if (config.cacheControl !== undefined) {
|
|
311
|
-
hints.set(`Query.${name}`, config.cacheControl);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
// Subscription fields
|
|
315
|
-
for (const [name, config] of this.state.subscriptions) {
|
|
316
|
-
if (config.cacheControl !== undefined) {
|
|
317
|
-
hints.set(`Subscription.${name}`, config.cacheControl);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
// Object type fields
|
|
321
|
-
for (const [typeName, fields] of this.state.objectFields) {
|
|
322
|
-
for (const [fieldName, config] of fields) {
|
|
323
|
-
if (config.cacheControl !== undefined) {
|
|
324
|
-
hints.set(`${typeName}.${fieldName}`, config.cacheControl);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
return hints;
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Build the GraphQL schema (no services required)
|
|
332
|
-
*/
|
|
333
|
-
buildSchema() {
|
|
334
|
-
// Build all registries
|
|
335
|
-
const directiveRegistry = this.buildDirectiveRegistry();
|
|
336
|
-
const enumRegistry = this.buildEnumRegistry();
|
|
337
|
-
const inputRegistry = this.buildInputRegistry(enumRegistry);
|
|
338
|
-
const interfaceRegistry = this.buildInterfaceRegistry(enumRegistry);
|
|
339
|
-
const { typeRegistry, unionRegistry } = this.buildTypeAndUnionRegistries(enumRegistry, interfaceRegistry);
|
|
340
|
-
// Build field builder context
|
|
341
|
-
const fieldCtx = this.createFieldBuilderContext(typeRegistry, interfaceRegistry, enumRegistry, unionRegistry, inputRegistry);
|
|
342
|
-
// Build root type fields
|
|
343
|
-
const queryFields = this.buildQueryFields(fieldCtx);
|
|
344
|
-
const mutationFields = this.buildMutationFields(fieldCtx);
|
|
345
|
-
const subscriptionFields = this.buildSubscriptionFields(fieldCtx);
|
|
346
|
-
// Assemble schema
|
|
347
|
-
return this.assembleSchema({
|
|
348
|
-
directiveRegistry,
|
|
349
|
-
enumRegistry,
|
|
350
|
-
inputRegistry,
|
|
351
|
-
interfaceRegistry,
|
|
352
|
-
typeRegistry,
|
|
353
|
-
unionRegistry,
|
|
354
|
-
queryFields,
|
|
355
|
-
mutationFields,
|
|
356
|
-
subscriptionFields,
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
buildDirectiveRegistry() {
|
|
360
|
-
const registry = new Map();
|
|
361
|
-
// Build cache once for O(1) lookups across all directives
|
|
362
|
-
const cache = (0, type_registry_1.buildInputTypeLookupCache)(this.state.inputs, this.state.enums);
|
|
363
|
-
for (const [name, reg] of this.state.directives) {
|
|
364
|
-
const graphqlDirective = new graphql_1.GraphQLDirective({
|
|
365
|
-
name,
|
|
366
|
-
description: reg.description,
|
|
367
|
-
locations: [...reg.locations],
|
|
368
|
-
args: reg.args
|
|
369
|
-
? (0, type_registry_1.toGraphQLArgsWithRegistry)(reg.args, new Map(), new Map(), this.state.inputs, this.state.enums, cache)
|
|
370
|
-
: undefined,
|
|
371
|
-
});
|
|
372
|
-
registry.set(name, graphqlDirective);
|
|
373
|
-
}
|
|
374
|
-
return registry;
|
|
375
|
-
}
|
|
376
|
-
buildEnumRegistry() {
|
|
377
|
-
const registry = new Map();
|
|
378
|
-
for (const [name, reg] of this.state.enums) {
|
|
379
|
-
const enumValues = {};
|
|
380
|
-
for (const value of reg.values) {
|
|
381
|
-
enumValues[value] = { value };
|
|
382
|
-
}
|
|
383
|
-
registry.set(name, new graphql_1.GraphQLEnumType({
|
|
384
|
-
name,
|
|
385
|
-
values: enumValues,
|
|
386
|
-
description: reg.description,
|
|
387
|
-
extensions: reg.directives ? { directives: reg.directives } : undefined,
|
|
388
|
-
}));
|
|
389
|
-
}
|
|
390
|
-
return registry;
|
|
391
|
-
}
|
|
392
|
-
buildInputRegistry(enumRegistry) {
|
|
393
|
-
const registry = new Map();
|
|
394
|
-
// Build cache once for O(1) lookups across all input types
|
|
395
|
-
const cache = (0, type_registry_1.buildInputTypeLookupCache)(this.state.inputs, this.state.enums);
|
|
396
|
-
for (const [name, reg] of this.state.inputs) {
|
|
397
|
-
const inputType = new graphql_1.GraphQLInputObjectType({
|
|
398
|
-
name,
|
|
399
|
-
description: reg.description,
|
|
400
|
-
fields: () => (0, type_registry_1.schemaToInputFields)(reg.schema, enumRegistry, registry, this.state.inputs, this.state.enums, cache),
|
|
401
|
-
extensions: reg.directives ? { directives: reg.directives } : undefined,
|
|
402
|
-
});
|
|
403
|
-
registry.set(name, inputType);
|
|
404
|
-
}
|
|
405
|
-
return registry;
|
|
406
|
-
}
|
|
407
|
-
buildInterfaceRegistry(enumRegistry) {
|
|
408
|
-
const registry = new Map();
|
|
409
|
-
// We need type and union registries for interface fields, but they're built later
|
|
410
|
-
// Use empty maps for now - interfaces shouldn't reference object types directly
|
|
411
|
-
const typeRegistry = new Map();
|
|
412
|
-
const unionRegistry = new Map();
|
|
413
|
-
// Create shared TypeConversionContext once for all interface field builders
|
|
414
|
-
const sharedCtx = {
|
|
415
|
-
types: this.state.types,
|
|
416
|
-
interfaces: this.state.interfaces,
|
|
417
|
-
enums: this.state.enums,
|
|
418
|
-
unions: this.state.unions,
|
|
419
|
-
inputs: this.state.inputs,
|
|
420
|
-
typeRegistry,
|
|
421
|
-
interfaceRegistry: registry,
|
|
422
|
-
enumRegistry,
|
|
423
|
-
unionRegistry,
|
|
424
|
-
inputRegistry: new Map(),
|
|
425
|
-
};
|
|
426
|
-
// Pre-build reverse lookup maps once
|
|
427
|
-
(0, type_registry_1.buildReverseLookups)(sharedCtx);
|
|
428
|
-
for (const [name, reg] of this.state.interfaces) {
|
|
429
|
-
const interfaceType = new graphql_1.GraphQLInterfaceType({
|
|
430
|
-
name,
|
|
431
|
-
fields: () => (0, type_registry_1.schemaToFields)(reg.schema, sharedCtx),
|
|
432
|
-
resolveType: reg.resolveType,
|
|
433
|
-
extensions: reg.directives ? { directives: reg.directives } : undefined,
|
|
434
|
-
});
|
|
435
|
-
registry.set(name, interfaceType);
|
|
436
|
-
}
|
|
437
|
-
return registry;
|
|
438
|
-
}
|
|
439
|
-
buildTypeAndUnionRegistries(enumRegistry, interfaceRegistry) {
|
|
440
|
-
const typeRegistry = new Map();
|
|
441
|
-
const unionRegistry = new Map();
|
|
442
|
-
// Create shared TypeConversionContext once and reuse for all lazy field builders
|
|
443
|
-
const sharedCtx = {
|
|
444
|
-
types: this.state.types,
|
|
445
|
-
interfaces: this.state.interfaces,
|
|
446
|
-
enums: this.state.enums,
|
|
447
|
-
unions: this.state.unions,
|
|
448
|
-
inputs: this.state.inputs,
|
|
449
|
-
typeRegistry,
|
|
450
|
-
interfaceRegistry,
|
|
451
|
-
enumRegistry,
|
|
452
|
-
unionRegistry,
|
|
453
|
-
inputRegistry: new Map(),
|
|
454
|
-
};
|
|
455
|
-
// Pre-build reverse lookup maps once
|
|
456
|
-
(0, type_registry_1.buildReverseLookups)(sharedCtx);
|
|
457
|
-
// Create shared FieldBuilderContext for additional fields
|
|
458
|
-
const sharedFieldCtx = this.createFieldBuilderContext(typeRegistry, interfaceRegistry, enumRegistry, unionRegistry, new Map());
|
|
459
|
-
// Build object types with lazy field builders (allows circular references)
|
|
460
|
-
for (const [typeName, typeReg] of this.state.types) {
|
|
461
|
-
const implementedInterfaces = typeReg.implements?.map((name) => interfaceRegistry.get(name)).filter(Boolean) ?? [];
|
|
462
|
-
const graphqlType = new graphql_1.GraphQLObjectType({
|
|
463
|
-
name: typeName,
|
|
464
|
-
fields: () => {
|
|
465
|
-
const baseFields = (0, type_registry_1.schemaToFields)(typeReg.schema, sharedCtx);
|
|
466
|
-
const additionalFields = this.state.objectFields.get(typeName);
|
|
467
|
-
if (additionalFields) {
|
|
468
|
-
for (const [fieldName, fieldConfig] of additionalFields) {
|
|
469
|
-
baseFields[fieldName] = (0, field_builders_1.buildObjectField)(fieldConfig, sharedFieldCtx);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
return baseFields;
|
|
473
|
-
},
|
|
474
|
-
interfaces: implementedInterfaces.length > 0 ? implementedInterfaces : undefined,
|
|
475
|
-
extensions: typeReg.directives ? { directives: typeReg.directives } : undefined,
|
|
476
|
-
});
|
|
477
|
-
typeRegistry.set(typeName, graphqlType);
|
|
478
|
-
}
|
|
479
|
-
// Build union types (reference object types)
|
|
480
|
-
for (const [name, reg] of this.state.unions) {
|
|
481
|
-
const unionType = new graphql_1.GraphQLUnionType({
|
|
482
|
-
name,
|
|
483
|
-
types: () => reg.types.map((typeName) => typeRegistry.get(typeName)).filter(Boolean),
|
|
484
|
-
resolveType: reg.resolveType,
|
|
485
|
-
extensions: reg.directives ? { directives: reg.directives } : undefined,
|
|
486
|
-
});
|
|
487
|
-
unionRegistry.set(name, unionType);
|
|
488
|
-
}
|
|
489
|
-
return { typeRegistry, unionRegistry };
|
|
490
|
-
}
|
|
491
|
-
createFieldBuilderContext(typeRegistry, interfaceRegistry, enumRegistry, unionRegistry, inputRegistry) {
|
|
492
|
-
// Build cache once for O(1) input type lookups across all fields
|
|
493
|
-
const inputTypeLookupCache = (0, type_registry_1.buildInputTypeLookupCache)(this.state.inputs, this.state.enums);
|
|
494
|
-
return {
|
|
495
|
-
types: this.state.types,
|
|
496
|
-
interfaces: this.state.interfaces,
|
|
497
|
-
enums: this.state.enums,
|
|
498
|
-
unions: this.state.unions,
|
|
499
|
-
inputs: this.state.inputs,
|
|
500
|
-
typeRegistry,
|
|
501
|
-
interfaceRegistry,
|
|
502
|
-
enumRegistry,
|
|
503
|
-
unionRegistry,
|
|
504
|
-
inputRegistry,
|
|
505
|
-
directiveRegistrations: this.state.directives,
|
|
506
|
-
middlewares: this.state.middlewares,
|
|
507
|
-
inputTypeLookupCache,
|
|
508
|
-
};
|
|
509
|
-
}
|
|
510
|
-
buildQueryFields(ctx) {
|
|
511
|
-
const fields = {};
|
|
512
|
-
for (const [name, config] of this.state.queries) {
|
|
513
|
-
fields[name] = (0, field_builders_1.buildField)(config, ctx);
|
|
514
|
-
}
|
|
515
|
-
return fields;
|
|
516
|
-
}
|
|
517
|
-
buildMutationFields(ctx) {
|
|
518
|
-
const fields = {};
|
|
519
|
-
for (const [name, config] of this.state.mutations) {
|
|
520
|
-
fields[name] = (0, field_builders_1.buildField)(config, ctx);
|
|
521
|
-
}
|
|
522
|
-
return fields;
|
|
523
|
-
}
|
|
524
|
-
buildSubscriptionFields(ctx) {
|
|
525
|
-
const fields = {};
|
|
526
|
-
for (const [name, config] of this.state.subscriptions) {
|
|
527
|
-
fields[name] = (0, field_builders_1.buildSubscriptionField)(config, ctx);
|
|
528
|
-
}
|
|
529
|
-
return fields;
|
|
530
|
-
}
|
|
531
|
-
assembleSchema(registries) {
|
|
532
|
-
const schemaConfig = {
|
|
533
|
-
types: [
|
|
534
|
-
...Array.from(registries.enumRegistry.values()),
|
|
535
|
-
...Array.from(registries.inputRegistry.values()),
|
|
536
|
-
...Array.from(registries.interfaceRegistry.values()),
|
|
537
|
-
...Array.from(registries.typeRegistry.values()),
|
|
538
|
-
...Array.from(registries.unionRegistry.values()),
|
|
539
|
-
],
|
|
540
|
-
directives: registries.directiveRegistry.size > 0
|
|
541
|
-
? [...Array.from(registries.directiveRegistry.values())]
|
|
542
|
-
: undefined,
|
|
543
|
-
};
|
|
544
|
-
if (Object.keys(registries.queryFields).length > 0) {
|
|
545
|
-
schemaConfig.query = new graphql_1.GraphQLObjectType({
|
|
546
|
-
name: "Query",
|
|
547
|
-
fields: registries.queryFields,
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
if (Object.keys(registries.mutationFields).length > 0) {
|
|
551
|
-
schemaConfig.mutation = new graphql_1.GraphQLObjectType({
|
|
552
|
-
name: "Mutation",
|
|
553
|
-
fields: registries.mutationFields,
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
if (Object.keys(registries.subscriptionFields).length > 0) {
|
|
557
|
-
schemaConfig.subscription = new graphql_1.GraphQLObjectType({
|
|
558
|
-
name: "Subscription",
|
|
559
|
-
fields: registries.subscriptionFields,
|
|
560
|
-
});
|
|
561
|
-
}
|
|
562
|
-
return new graphql_1.GraphQLSchema(schemaConfig);
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
exports.GraphQLSchemaBuilder = GraphQLSchemaBuilder;
|
|
566
|
-
//# sourceMappingURL=schema-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../src/builder/schema-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import * as S from "effect/Schema";
|
|
2
|
-
import * as AST from "effect/SchemaAST";
|
|
3
|
-
import { GraphQLObjectType, GraphQLInterfaceType, GraphQLEnumType, GraphQLUnionType, GraphQLInputObjectType, GraphQLNonNull, GraphQLFieldConfigMap, GraphQLInputFieldConfigMap } from "graphql";
|
|
4
|
-
import type { TypeRegistration, InterfaceRegistration, EnumRegistration, UnionRegistration, InputTypeRegistration } from "./types";
|
|
5
|
-
/**
|
|
6
|
-
* Extract type name from a schema if it has one.
|
|
7
|
-
* Supports:
|
|
8
|
-
* - S.TaggedStruct("Name", {...}) - extracts from _tag literal
|
|
9
|
-
* - S.TaggedClass()("Name", {...}) - extracts from identifier annotation
|
|
10
|
-
* - S.Class<T>("Name")({...}) - extracts from identifier annotation
|
|
11
|
-
*/
|
|
12
|
-
export declare function getSchemaName(schema: S.Schema<any, any, any>): string | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* Context needed for type conversion operations
|
|
15
|
-
*/
|
|
16
|
-
export interface TypeConversionContext {
|
|
17
|
-
types: Map<string, TypeRegistration>;
|
|
18
|
-
interfaces: Map<string, InterfaceRegistration>;
|
|
19
|
-
enums: Map<string, EnumRegistration>;
|
|
20
|
-
unions: Map<string, UnionRegistration>;
|
|
21
|
-
inputs: Map<string, InputTypeRegistration>;
|
|
22
|
-
typeRegistry: Map<string, GraphQLObjectType>;
|
|
23
|
-
interfaceRegistry: Map<string, GraphQLInterfaceType>;
|
|
24
|
-
enumRegistry: Map<string, GraphQLEnumType>;
|
|
25
|
-
unionRegistry: Map<string, GraphQLUnionType>;
|
|
26
|
-
inputRegistry: Map<string, GraphQLInputObjectType>;
|
|
27
|
-
schemaToTypeName?: Map<S.Schema<any, any, any>, string>;
|
|
28
|
-
astToTypeName?: Map<AST.AST, string>;
|
|
29
|
-
schemaToInterfaceName?: Map<S.Schema<any, any, any>, string>;
|
|
30
|
-
astToInterfaceName?: Map<AST.AST, string>;
|
|
31
|
-
schemaToInputName?: Map<S.Schema<any, any, any>, string>;
|
|
32
|
-
astToInputName?: Map<AST.AST, string>;
|
|
33
|
-
enumSortedValues?: Map<string, readonly string[]>;
|
|
34
|
-
unionSortedTypes?: Map<string, readonly string[]>;
|
|
35
|
-
literalToEnumName?: Map<string, string>;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Build reverse lookup maps from registration maps for O(1) type resolution
|
|
39
|
-
*/
|
|
40
|
-
export declare function buildReverseLookups(ctx: TypeConversionContext): void;
|
|
41
|
-
/**
|
|
42
|
-
* Get or create a GraphQLNonNull wrapper (memoized)
|
|
43
|
-
*/
|
|
44
|
-
export declare function getNonNull<T extends import("graphql").GraphQLNullableType>(type: T): GraphQLNonNull<T>;
|
|
45
|
-
/**
|
|
46
|
-
* Convert schema to GraphQL type, checking registry first for registered types
|
|
47
|
-
*/
|
|
48
|
-
export declare function toGraphQLTypeWithRegistry(schema: S.Schema<any, any, any>, ctx: TypeConversionContext): any;
|
|
49
|
-
/**
|
|
50
|
-
* Convert a schema to GraphQL fields
|
|
51
|
-
*/
|
|
52
|
-
export declare function schemaToFields(schema: S.Schema<any, any, any>, ctx: TypeConversionContext): GraphQLFieldConfigMap<any, any>;
|
|
53
|
-
/**
|
|
54
|
-
* Convert a schema to GraphQL input fields
|
|
55
|
-
*/
|
|
56
|
-
export declare function schemaToInputFields(schema: S.Schema<any, any, any>, enumRegistry: Map<string, GraphQLEnumType>, inputRegistry: Map<string, GraphQLInputObjectType>, inputs: Map<string, InputTypeRegistration>, enums: Map<string, EnumRegistration>, cache?: InputTypeLookupCache): GraphQLInputFieldConfigMap;
|
|
57
|
-
/**
|
|
58
|
-
* Optional cache for input type lookups to enable O(1) resolution
|
|
59
|
-
*/
|
|
60
|
-
export interface InputTypeLookupCache {
|
|
61
|
-
schemaToInputName?: Map<S.Schema<any, any, any>, string>;
|
|
62
|
-
astToInputName?: Map<AST.AST, string>;
|
|
63
|
-
literalToEnumName?: Map<string, string>;
|
|
64
|
-
enumSortedValues?: Map<string, readonly string[]>;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Build lookup caches for input type resolution
|
|
68
|
-
*/
|
|
69
|
-
export declare function buildInputTypeLookupCache(inputs: Map<string, InputTypeRegistration>, enums: Map<string, EnumRegistration>): InputTypeLookupCache;
|
|
70
|
-
/**
|
|
71
|
-
* Convert a schema to GraphQL input type, checking enum and input registries.
|
|
72
|
-
* Uses O(1) reverse lookups when cache is provided.
|
|
73
|
-
*/
|
|
74
|
-
export declare function toGraphQLInputTypeWithRegistry(schema: S.Schema<any, any, any>, enumRegistry: Map<string, GraphQLEnumType>, inputRegistry: Map<string, GraphQLInputObjectType>, inputs: Map<string, InputTypeRegistration>, enums: Map<string, EnumRegistration>, cache?: InputTypeLookupCache): any;
|
|
75
|
-
/**
|
|
76
|
-
* Convert a schema to GraphQL arguments with registry support.
|
|
77
|
-
* Uses O(1) reverse lookups when cache is provided.
|
|
78
|
-
*/
|
|
79
|
-
export declare function toGraphQLArgsWithRegistry(schema: S.Schema<any, any, any>, enumRegistry: Map<string, GraphQLEnumType>, inputRegistry: Map<string, GraphQLInputObjectType>, inputs: Map<string, InputTypeRegistration>, enums: Map<string, EnumRegistration>, cache?: InputTypeLookupCache): any;
|
|
80
|
-
//# sourceMappingURL=type-registry.d.ts.map
|