@effect-gql/core 0.1.0 → 1.0.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 (164) hide show
  1. package/README.md +100 -0
  2. package/builder/index.cjs +1431 -0
  3. package/builder/index.cjs.map +1 -0
  4. package/builder/index.d.cts +259 -0
  5. package/{dist/builder/pipe-api.d.ts → builder/index.d.ts} +49 -21
  6. package/builder/index.js +1390 -0
  7. package/builder/index.js.map +1 -0
  8. package/index.cjs +3419 -0
  9. package/index.cjs.map +1 -0
  10. package/index.d.cts +523 -0
  11. package/index.d.ts +523 -0
  12. package/index.js +3242 -0
  13. package/index.js.map +1 -0
  14. package/package.json +19 -28
  15. package/schema-builder-Cvdq7Kz_.d.cts +963 -0
  16. package/schema-builder-Cvdq7Kz_.d.ts +963 -0
  17. package/server/index.cjs +1555 -0
  18. package/server/index.cjs.map +1 -0
  19. package/server/index.d.cts +680 -0
  20. package/server/index.d.ts +680 -0
  21. package/server/index.js +1524 -0
  22. package/server/index.js.map +1 -0
  23. package/dist/analyzer-extension.d.ts +0 -105
  24. package/dist/analyzer-extension.d.ts.map +0 -1
  25. package/dist/analyzer-extension.js +0 -137
  26. package/dist/analyzer-extension.js.map +0 -1
  27. package/dist/builder/execute.d.ts +0 -26
  28. package/dist/builder/execute.d.ts.map +0 -1
  29. package/dist/builder/execute.js +0 -104
  30. package/dist/builder/execute.js.map +0 -1
  31. package/dist/builder/field-builders.d.ts +0 -30
  32. package/dist/builder/field-builders.d.ts.map +0 -1
  33. package/dist/builder/field-builders.js +0 -200
  34. package/dist/builder/field-builders.js.map +0 -1
  35. package/dist/builder/index.d.ts +0 -7
  36. package/dist/builder/index.d.ts.map +0 -1
  37. package/dist/builder/index.js +0 -31
  38. package/dist/builder/index.js.map +0 -1
  39. package/dist/builder/pipe-api.d.ts.map +0 -1
  40. package/dist/builder/pipe-api.js +0 -151
  41. package/dist/builder/pipe-api.js.map +0 -1
  42. package/dist/builder/schema-builder.d.ts +0 -301
  43. package/dist/builder/schema-builder.d.ts.map +0 -1
  44. package/dist/builder/schema-builder.js +0 -566
  45. package/dist/builder/schema-builder.js.map +0 -1
  46. package/dist/builder/type-registry.d.ts +0 -80
  47. package/dist/builder/type-registry.d.ts.map +0 -1
  48. package/dist/builder/type-registry.js +0 -505
  49. package/dist/builder/type-registry.js.map +0 -1
  50. package/dist/builder/types.d.ts +0 -283
  51. package/dist/builder/types.d.ts.map +0 -1
  52. package/dist/builder/types.js +0 -3
  53. package/dist/builder/types.js.map +0 -1
  54. package/dist/cli/generate-schema.d.ts +0 -29
  55. package/dist/cli/generate-schema.d.ts.map +0 -1
  56. package/dist/cli/generate-schema.js +0 -233
  57. package/dist/cli/generate-schema.js.map +0 -1
  58. package/dist/cli/index.d.ts +0 -19
  59. package/dist/cli/index.d.ts.map +0 -1
  60. package/dist/cli/index.js +0 -24
  61. package/dist/cli/index.js.map +0 -1
  62. package/dist/context.d.ts +0 -18
  63. package/dist/context.d.ts.map +0 -1
  64. package/dist/context.js +0 -11
  65. package/dist/context.js.map +0 -1
  66. package/dist/error.d.ts +0 -45
  67. package/dist/error.d.ts.map +0 -1
  68. package/dist/error.js +0 -29
  69. package/dist/error.js.map +0 -1
  70. package/dist/extensions.d.ts +0 -130
  71. package/dist/extensions.d.ts.map +0 -1
  72. package/dist/extensions.js +0 -78
  73. package/dist/extensions.js.map +0 -1
  74. package/dist/index.d.ts +0 -12
  75. package/dist/index.d.ts.map +0 -1
  76. package/dist/index.js +0 -47
  77. package/dist/index.js.map +0 -1
  78. package/dist/loader.d.ts +0 -169
  79. package/dist/loader.d.ts.map +0 -1
  80. package/dist/loader.js +0 -237
  81. package/dist/loader.js.map +0 -1
  82. package/dist/resolver-context.d.ts +0 -154
  83. package/dist/resolver-context.d.ts.map +0 -1
  84. package/dist/resolver-context.js +0 -184
  85. package/dist/resolver-context.js.map +0 -1
  86. package/dist/schema-mapping.d.ts +0 -30
  87. package/dist/schema-mapping.d.ts.map +0 -1
  88. package/dist/schema-mapping.js +0 -280
  89. package/dist/schema-mapping.js.map +0 -1
  90. package/dist/server/cache-control.d.ts +0 -96
  91. package/dist/server/cache-control.d.ts.map +0 -1
  92. package/dist/server/cache-control.js +0 -308
  93. package/dist/server/cache-control.js.map +0 -1
  94. package/dist/server/complexity.d.ts +0 -165
  95. package/dist/server/complexity.d.ts.map +0 -1
  96. package/dist/server/complexity.js +0 -433
  97. package/dist/server/complexity.js.map +0 -1
  98. package/dist/server/config.d.ts +0 -66
  99. package/dist/server/config.d.ts.map +0 -1
  100. package/dist/server/config.js +0 -104
  101. package/dist/server/config.js.map +0 -1
  102. package/dist/server/graphiql.d.ts +0 -5
  103. package/dist/server/graphiql.d.ts.map +0 -1
  104. package/dist/server/graphiql.js +0 -43
  105. package/dist/server/graphiql.js.map +0 -1
  106. package/dist/server/index.d.ts +0 -18
  107. package/dist/server/index.d.ts.map +0 -1
  108. package/dist/server/index.js +0 -48
  109. package/dist/server/index.js.map +0 -1
  110. package/dist/server/router.d.ts +0 -79
  111. package/dist/server/router.d.ts.map +0 -1
  112. package/dist/server/router.js +0 -232
  113. package/dist/server/router.js.map +0 -1
  114. package/dist/server/schema-builder-extensions.d.ts +0 -42
  115. package/dist/server/schema-builder-extensions.d.ts.map +0 -1
  116. package/dist/server/schema-builder-extensions.js +0 -48
  117. package/dist/server/schema-builder-extensions.js.map +0 -1
  118. package/dist/server/sse-adapter.d.ts +0 -64
  119. package/dist/server/sse-adapter.d.ts.map +0 -1
  120. package/dist/server/sse-adapter.js +0 -227
  121. package/dist/server/sse-adapter.js.map +0 -1
  122. package/dist/server/sse-types.d.ts +0 -192
  123. package/dist/server/sse-types.d.ts.map +0 -1
  124. package/dist/server/sse-types.js +0 -63
  125. package/dist/server/sse-types.js.map +0 -1
  126. package/dist/server/ws-adapter.d.ts +0 -39
  127. package/dist/server/ws-adapter.d.ts.map +0 -1
  128. package/dist/server/ws-adapter.js +0 -247
  129. package/dist/server/ws-adapter.js.map +0 -1
  130. package/dist/server/ws-types.d.ts +0 -169
  131. package/dist/server/ws-types.d.ts.map +0 -1
  132. package/dist/server/ws-types.js +0 -11
  133. package/dist/server/ws-types.js.map +0 -1
  134. package/dist/server/ws-utils.d.ts +0 -42
  135. package/dist/server/ws-utils.d.ts.map +0 -1
  136. package/dist/server/ws-utils.js +0 -99
  137. package/dist/server/ws-utils.js.map +0 -1
  138. package/src/analyzer-extension.ts +0 -254
  139. package/src/builder/execute.ts +0 -153
  140. package/src/builder/field-builders.ts +0 -322
  141. package/src/builder/index.ts +0 -48
  142. package/src/builder/pipe-api.ts +0 -312
  143. package/src/builder/schema-builder.ts +0 -970
  144. package/src/builder/type-registry.ts +0 -670
  145. package/src/builder/types.ts +0 -305
  146. package/src/context.ts +0 -23
  147. package/src/error.ts +0 -32
  148. package/src/extensions.ts +0 -240
  149. package/src/index.ts +0 -32
  150. package/src/loader.ts +0 -363
  151. package/src/resolver-context.ts +0 -253
  152. package/src/schema-mapping.ts +0 -307
  153. package/src/server/cache-control.ts +0 -590
  154. package/src/server/complexity.ts +0 -774
  155. package/src/server/config.ts +0 -174
  156. package/src/server/graphiql.ts +0 -38
  157. package/src/server/index.ts +0 -96
  158. package/src/server/router.ts +0 -432
  159. package/src/server/schema-builder-extensions.ts +0 -51
  160. package/src/server/sse-adapter.ts +0 -327
  161. package/src/server/sse-types.ts +0 -234
  162. package/src/server/ws-adapter.ts +0 -355
  163. package/src/server/ws-types.ts +0 -192
  164. package/src/server/ws-utils.ts +0 -136
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-registry.d.ts","sourceRoot":"","sources":["../../src/builder/type-registry.ts"],"names":[],"mappings":"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"}
@@ -1,505 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getSchemaName = getSchemaName;
37
- exports.buildReverseLookups = buildReverseLookups;
38
- exports.getNonNull = getNonNull;
39
- exports.toGraphQLTypeWithRegistry = toGraphQLTypeWithRegistry;
40
- exports.schemaToFields = schemaToFields;
41
- exports.schemaToInputFields = schemaToInputFields;
42
- exports.buildInputTypeLookupCache = buildInputTypeLookupCache;
43
- exports.toGraphQLInputTypeWithRegistry = toGraphQLInputTypeWithRegistry;
44
- exports.toGraphQLArgsWithRegistry = toGraphQLArgsWithRegistry;
45
- const S = __importStar(require("effect/Schema"));
46
- const AST = __importStar(require("effect/SchemaAST"));
47
- const graphql_1 = require("graphql");
48
- const schema_mapping_1 = require("../schema-mapping");
49
- /**
50
- * Extract type name from a schema if it has one.
51
- * Supports:
52
- * - S.TaggedStruct("Name", {...}) - extracts from _tag literal
53
- * - S.TaggedClass()("Name", {...}) - extracts from identifier annotation
54
- * - S.Class<T>("Name")({...}) - extracts from identifier annotation
55
- */
56
- function getSchemaName(schema) {
57
- const ast = schema.ast;
58
- // Handle Transformation (Schema.Class, TaggedClass)
59
- if (ast._tag === "Transformation") {
60
- const identifier = AST.getIdentifierAnnotation(ast.to);
61
- if (identifier._tag === "Some") {
62
- return identifier.value;
63
- }
64
- }
65
- // Handle TypeLiteral (TaggedStruct)
66
- if (ast._tag === "TypeLiteral") {
67
- const tagProp = ast.propertySignatures.find((p) => String(p.name) === "_tag");
68
- if (tagProp && tagProp.type._tag === "Literal" && typeof tagProp.type.literal === "string") {
69
- return tagProp.type.literal;
70
- }
71
- }
72
- return undefined;
73
- }
74
- /**
75
- * Build reverse lookup maps from registration maps for O(1) type resolution
76
- */
77
- function buildReverseLookups(ctx) {
78
- // Build schema/AST -> type name lookups
79
- if (!ctx.schemaToTypeName) {
80
- ctx.schemaToTypeName = new Map();
81
- ctx.astToTypeName = new Map();
82
- for (const [typeName, typeReg] of ctx.types) {
83
- ctx.schemaToTypeName.set(typeReg.schema, typeName);
84
- ctx.astToTypeName.set(typeReg.schema.ast, typeName);
85
- }
86
- }
87
- // Build schema/AST -> interface name lookups
88
- if (!ctx.schemaToInterfaceName) {
89
- ctx.schemaToInterfaceName = new Map();
90
- ctx.astToInterfaceName = new Map();
91
- for (const [interfaceName, interfaceReg] of ctx.interfaces) {
92
- ctx.schemaToInterfaceName.set(interfaceReg.schema, interfaceName);
93
- ctx.astToInterfaceName.set(interfaceReg.schema.ast, interfaceName);
94
- }
95
- }
96
- // Build schema/AST -> input name lookups
97
- if (!ctx.schemaToInputName) {
98
- ctx.schemaToInputName = new Map();
99
- ctx.astToInputName = new Map();
100
- for (const [inputName, inputReg] of ctx.inputs) {
101
- ctx.schemaToInputName.set(inputReg.schema, inputName);
102
- ctx.astToInputName.set(inputReg.schema.ast, inputName);
103
- }
104
- }
105
- // Build cached sorted enum values and literal -> enum lookup
106
- if (!ctx.enumSortedValues) {
107
- ctx.enumSortedValues = new Map();
108
- ctx.literalToEnumName = new Map();
109
- for (const [enumName, enumReg] of ctx.enums) {
110
- ctx.enumSortedValues.set(enumName, [...enumReg.values].sort());
111
- // Build literal -> enum reverse lookup for O(1) single literal lookups
112
- for (const value of enumReg.values) {
113
- ctx.literalToEnumName.set(value, enumName);
114
- }
115
- }
116
- }
117
- // Build cached sorted union types
118
- if (!ctx.unionSortedTypes) {
119
- ctx.unionSortedTypes = new Map();
120
- for (const [unionName, unionReg] of ctx.unions) {
121
- ctx.unionSortedTypes.set(unionName, [...unionReg.types].sort());
122
- }
123
- }
124
- }
125
- // GraphQLNonNull wrapper cache for memoization
126
- const nonNullCache = new WeakMap();
127
- /**
128
- * Get or create a GraphQLNonNull wrapper (memoized)
129
- */
130
- function getNonNull(type) {
131
- let cached = nonNullCache.get(type);
132
- if (!cached) {
133
- cached = new graphql_1.GraphQLNonNull(type);
134
- nonNullCache.set(type, cached);
135
- }
136
- return cached;
137
- }
138
- /**
139
- * Convert schema to GraphQL type, checking registry first for registered types
140
- */
141
- function toGraphQLTypeWithRegistry(schema, ctx) {
142
- // Ensure reverse lookup maps are built
143
- buildReverseLookups(ctx);
144
- const ast = schema.ast;
145
- // Check registered object types first
146
- const registeredType = findRegisteredType(schema, ast, ctx);
147
- if (registeredType)
148
- return registeredType;
149
- // Check registered interfaces
150
- const registeredInterface = findRegisteredInterface(schema, ast, ctx);
151
- if (registeredInterface)
152
- return registeredInterface;
153
- // Handle transformations (like S.Array, S.optional, etc)
154
- if (ast._tag === "Transformation") {
155
- return handleTransformationAST(ast, ctx);
156
- }
157
- // Handle unions (enum literals or object type unions)
158
- if (ast._tag === "Union") {
159
- return handleUnionAST(ast, ctx);
160
- }
161
- // Check single literal for enum match
162
- if (ast._tag === "Literal") {
163
- const enumType = findEnumForLiteral(ast, ctx);
164
- if (enumType)
165
- return enumType;
166
- }
167
- // Handle tuple types (readonly arrays)
168
- if (ast._tag === "TupleType") {
169
- return handleTupleTypeAST(ast, ctx);
170
- }
171
- // Handle Suspend (recursive/self-referential schemas)
172
- if (ast._tag === "Suspend") {
173
- const innerAst = ast.f();
174
- return toGraphQLTypeWithRegistry(S.make(innerAst), ctx);
175
- }
176
- // Fall back to default conversion
177
- return (0, schema_mapping_1.toGraphQLType)(schema);
178
- }
179
- /**
180
- * Find a registered object type matching this schema (O(1) with reverse lookup)
181
- */
182
- function findRegisteredType(schema, ast, ctx) {
183
- // Use reverse lookup maps for O(1) lookup
184
- const typeName = ctx.schemaToTypeName?.get(schema) ?? ctx.astToTypeName?.get(ast);
185
- if (typeName) {
186
- return ctx.typeRegistry.get(typeName);
187
- }
188
- return undefined;
189
- }
190
- /**
191
- * Find a registered interface matching this schema (O(1) with reverse lookup)
192
- */
193
- function findRegisteredInterface(schema, ast, ctx) {
194
- // Use reverse lookup maps for O(1) lookup
195
- const interfaceName = ctx.schemaToInterfaceName?.get(schema) ?? ctx.astToInterfaceName?.get(ast);
196
- if (interfaceName) {
197
- return ctx.interfaceRegistry.get(interfaceName);
198
- }
199
- return undefined;
200
- }
201
- /**
202
- * Handle Transformation AST nodes (arrays, optional, Schema.Class, etc.)
203
- */
204
- function handleTransformationAST(ast, ctx) {
205
- const toAst = ast.to;
206
- // Check if it's an array (readonly array on the to side)
207
- if (toAst._tag === "TupleType") {
208
- if (toAst.rest && toAst.rest.length > 0) {
209
- const elementSchema = S.make(toAst.rest[0].type);
210
- const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
211
- return new graphql_1.GraphQLList(elementType);
212
- }
213
- else if (toAst.elements.length > 0) {
214
- const elementSchema = S.make(toAst.elements[0].type);
215
- const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
216
- return new graphql_1.GraphQLList(elementType);
217
- }
218
- }
219
- // Other transformations - recurse on the "to" side
220
- return toGraphQLTypeWithRegistry(S.make(ast.to), ctx);
221
- }
222
- /**
223
- * Handle Union AST nodes (literal enums or object type unions)
224
- */
225
- function handleUnionAST(ast, ctx) {
226
- const allLiterals = ast.types.every((t) => t._tag === "Literal");
227
- if (allLiterals) {
228
- // This might be an enum
229
- const enumType = findEnumForLiteralUnion(ast.types, ctx);
230
- if (enumType)
231
- return enumType;
232
- }
233
- else {
234
- // This is a Union of object types - check if it matches a registered union
235
- const unionType = findRegisteredUnion(ast.types, ctx);
236
- if (unionType)
237
- return unionType;
238
- }
239
- // Fallback: use first type
240
- if (ast.types.length > 0) {
241
- return toGraphQLTypeWithRegistry(S.make(ast.types[0]), ctx);
242
- }
243
- return (0, schema_mapping_1.toGraphQLType)(S.make(ast));
244
- }
245
- /**
246
- * Find a registered enum matching a union of literals (uses cached sorted values)
247
- */
248
- function findEnumForLiteralUnion(types, ctx) {
249
- const literalValues = types.map((t) => String(t.literal)).sort();
250
- for (const [enumName] of ctx.enums) {
251
- // Use cached sorted values instead of sorting on every comparison
252
- const enumValues = ctx.enumSortedValues?.get(enumName);
253
- if (enumValues &&
254
- literalValues.length === enumValues.length &&
255
- literalValues.every((v, i) => v === enumValues[i])) {
256
- return ctx.enumRegistry.get(enumName);
257
- }
258
- }
259
- return undefined;
260
- }
261
- /**
262
- * Find a registered union matching an object type union (uses cached sorted types)
263
- */
264
- function findRegisteredUnion(types, ctx) {
265
- // Collect _tag values from each union member
266
- const memberTags = [];
267
- for (const memberAst of types) {
268
- if (memberAst._tag === "TypeLiteral") {
269
- const tagProp = memberAst.propertySignatures.find((p) => String(p.name) === "_tag");
270
- if (tagProp && tagProp.type._tag === "Literal") {
271
- memberTags.push(String(tagProp.type.literal));
272
- }
273
- }
274
- }
275
- // Check if any registered union has matching types
276
- if (memberTags.length === types.length) {
277
- const sortedTags = memberTags.sort();
278
- for (const [unionName] of ctx.unions) {
279
- // Use cached sorted types instead of sorting on every comparison
280
- const unionTypes = ctx.unionSortedTypes?.get(unionName);
281
- if (unionTypes &&
282
- sortedTags.length === unionTypes.length &&
283
- sortedTags.every((tag, i) => tag === unionTypes[i])) {
284
- return ctx.unionRegistry.get(unionName);
285
- }
286
- }
287
- }
288
- return undefined;
289
- }
290
- /**
291
- * Find a registered enum containing a single literal value (O(1) with reverse lookup)
292
- */
293
- function findEnumForLiteral(ast, ctx) {
294
- const literalValue = String(ast.literal);
295
- // Use reverse lookup map for O(1) lookup instead of O(N×M) iteration
296
- const enumName = ctx.literalToEnumName?.get(literalValue);
297
- if (enumName) {
298
- return ctx.enumRegistry.get(enumName);
299
- }
300
- return undefined;
301
- }
302
- /**
303
- * Handle TupleType AST nodes (arrays)
304
- */
305
- function handleTupleTypeAST(ast, ctx) {
306
- if (ast.rest && ast.rest.length > 0) {
307
- const elementSchema = S.make(ast.rest[0].type);
308
- const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
309
- return new graphql_1.GraphQLList(elementType);
310
- }
311
- else if (ast.elements && ast.elements.length > 0) {
312
- const elementSchema = S.make(ast.elements[0].type);
313
- const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
314
- return new graphql_1.GraphQLList(elementType);
315
- }
316
- return (0, schema_mapping_1.toGraphQLType)(S.make(ast));
317
- }
318
- /**
319
- * Convert a schema to GraphQL fields
320
- */
321
- function schemaToFields(schema, ctx) {
322
- let ast = schema.ast;
323
- // Handle Transformation (Schema.Class, TaggedClass)
324
- if (ast._tag === "Transformation") {
325
- ast = ast.to;
326
- }
327
- // Handle Declaration (Schema.Class wraps TypeLiteral in Declaration)
328
- if (ast._tag === "Declaration") {
329
- const typeParams = ast.typeParameters;
330
- if (typeParams && typeParams.length > 0 && typeParams[0]._tag === "TypeLiteral") {
331
- ast = typeParams[0];
332
- }
333
- }
334
- if (ast._tag === "TypeLiteral") {
335
- const fields = {};
336
- for (const field of ast.propertySignatures) {
337
- const fieldName = String(field.name);
338
- const fieldSchema = S.make(field.type);
339
- let fieldType = toGraphQLTypeWithRegistry(fieldSchema, ctx);
340
- // Make non-optional fields non-null (memoized)
341
- if (!field.isOptional) {
342
- fieldType = getNonNull(fieldType);
343
- }
344
- fields[fieldName] = { type: fieldType };
345
- }
346
- return fields;
347
- }
348
- return {};
349
- }
350
- /**
351
- * Convert a schema to GraphQL input fields
352
- */
353
- function schemaToInputFields(schema, enumRegistry, inputRegistry, inputs, enums, cache) {
354
- const ast = schema.ast;
355
- if (ast._tag === "TypeLiteral") {
356
- const fields = {};
357
- for (const field of ast.propertySignatures) {
358
- const fieldName = String(field.name);
359
- const fieldSchema = S.make(field.type);
360
- let fieldType = toGraphQLInputTypeWithRegistry(fieldSchema, enumRegistry, inputRegistry, inputs, enums, cache);
361
- // Make non-optional fields non-null (memoized)
362
- if (!field.isOptional) {
363
- fieldType = getNonNull(fieldType);
364
- }
365
- fields[fieldName] = { type: fieldType };
366
- }
367
- return fields;
368
- }
369
- return {};
370
- }
371
- /**
372
- * Build lookup caches for input type resolution
373
- */
374
- function buildInputTypeLookupCache(inputs, enums) {
375
- const cache = {
376
- schemaToInputName: new Map(),
377
- astToInputName: new Map(),
378
- literalToEnumName: new Map(),
379
- enumSortedValues: new Map(),
380
- };
381
- // Build input type reverse lookups
382
- for (const [inputName, inputReg] of inputs) {
383
- cache.schemaToInputName.set(inputReg.schema, inputName);
384
- cache.astToInputName.set(inputReg.schema.ast, inputName);
385
- }
386
- // Build enum lookups
387
- for (const [enumName, enumReg] of enums) {
388
- cache.enumSortedValues.set(enumName, [...enumReg.values].sort());
389
- for (const value of enumReg.values) {
390
- cache.literalToEnumName.set(value, enumName);
391
- }
392
- }
393
- return cache;
394
- }
395
- /**
396
- * Convert a schema to GraphQL input type, checking enum and input registries.
397
- * Uses O(1) reverse lookups when cache is provided.
398
- */
399
- function toGraphQLInputTypeWithRegistry(schema, enumRegistry, inputRegistry, inputs, enums, cache) {
400
- const ast = schema.ast;
401
- // Handle transformations (like S.optional wrapping)
402
- if (ast._tag === "Transformation") {
403
- const toAst = ast.to;
404
- return toGraphQLInputTypeWithRegistry(S.make(toAst), enumRegistry, inputRegistry, inputs, enums, cache);
405
- }
406
- // Check if this schema matches a registered input type (O(1) with cache)
407
- if (cache?.schemaToInputName || cache?.astToInputName) {
408
- const inputName = cache.schemaToInputName?.get(schema) ?? cache.astToInputName?.get(ast);
409
- if (inputName) {
410
- const result = inputRegistry.get(inputName);
411
- if (result)
412
- return result;
413
- }
414
- }
415
- else {
416
- // Fallback to linear scan if no cache
417
- for (const [inputName, inputReg] of inputs) {
418
- if (inputReg.schema.ast === ast || inputReg.schema === schema) {
419
- const result = inputRegistry.get(inputName);
420
- if (result)
421
- return result;
422
- }
423
- }
424
- }
425
- // Check if this schema matches a registered enum
426
- if (ast._tag === "Union") {
427
- const unionAst = ast;
428
- // Handle S.optional which creates Union(LiteralUnion, UndefinedKeyword)
429
- const nonUndefinedTypes = unionAst.types.filter((t) => t._tag !== "UndefinedKeyword");
430
- if (nonUndefinedTypes.length === 1 && nonUndefinedTypes[0]._tag === "Union") {
431
- return toGraphQLInputTypeWithRegistry(S.make(nonUndefinedTypes[0]), enumRegistry, inputRegistry, inputs, enums, cache);
432
- }
433
- // Check for nested input type inside optional
434
- if (nonUndefinedTypes.length === 1 && nonUndefinedTypes[0]._tag === "TypeLiteral") {
435
- return toGraphQLInputTypeWithRegistry(S.make(nonUndefinedTypes[0]), enumRegistry, inputRegistry, inputs, enums, cache);
436
- }
437
- const allLiterals = unionAst.types.every((t) => t._tag === "Literal");
438
- if (allLiterals) {
439
- const literalValues = unionAst.types.map((t) => String(t.literal)).sort();
440
- // Use cached sorted values if available
441
- for (const [enumName] of enums) {
442
- const enumValues = cache?.enumSortedValues?.get(enumName) ?? [...enums.get(enumName).values].sort();
443
- if (literalValues.length === enumValues.length &&
444
- literalValues.every((v, i) => v === enumValues[i])) {
445
- const result = enumRegistry.get(enumName);
446
- if (result)
447
- return result;
448
- }
449
- }
450
- }
451
- }
452
- // Check single literal (O(1) with cache)
453
- if (ast._tag === "Literal") {
454
- const literalValue = String(ast.literal);
455
- if (cache?.literalToEnumName) {
456
- const enumName = cache.literalToEnumName.get(literalValue);
457
- if (enumName) {
458
- const result = enumRegistry.get(enumName);
459
- if (result)
460
- return result;
461
- }
462
- }
463
- else {
464
- // Fallback to linear scan if no cache
465
- for (const [enumName, enumReg] of enums) {
466
- if (enumReg.values.includes(literalValue)) {
467
- const result = enumRegistry.get(enumName);
468
- if (result)
469
- return result;
470
- }
471
- }
472
- }
473
- }
474
- // Handle Suspend (recursive/self-referential schemas)
475
- if (ast._tag === "Suspend") {
476
- const innerAst = ast.f();
477
- return toGraphQLInputTypeWithRegistry(S.make(innerAst), enumRegistry, inputRegistry, inputs, enums, cache);
478
- }
479
- // Fall back to default toGraphQLInputType
480
- return (0, schema_mapping_1.toGraphQLInputType)(schema);
481
- }
482
- /**
483
- * Convert a schema to GraphQL arguments with registry support.
484
- * Uses O(1) reverse lookups when cache is provided.
485
- */
486
- function toGraphQLArgsWithRegistry(schema, enumRegistry, inputRegistry, inputs, enums, cache) {
487
- const ast = schema.ast;
488
- if (ast._tag === "TypeLiteral") {
489
- const args = {};
490
- for (const field of ast.propertySignatures) {
491
- const fieldName = String(field.name);
492
- const fieldSchema = S.make(field.type);
493
- let fieldType = toGraphQLInputTypeWithRegistry(fieldSchema, enumRegistry, inputRegistry, inputs, enums, cache);
494
- // Make non-optional fields non-null (memoized)
495
- if (!field.isOptional) {
496
- fieldType = getNonNull(fieldType);
497
- }
498
- args[fieldName] = { type: fieldType };
499
- }
500
- return args;
501
- }
502
- // Fall back to default toGraphQLArgs
503
- return (0, schema_mapping_1.toGraphQLArgs)(schema);
504
- }
505
- //# sourceMappingURL=type-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-registry.js","sourceRoot":"","sources":["../../src/builder/type-registry.ts"],"names":[],"mappings":"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"}