@gqlkit-ts/cli 0.6.0 → 0.7.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 (190) hide show
  1. package/dist/auto-type-generator/auto-type-generator.d.ts +7 -0
  2. package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -1
  3. package/dist/auto-type-generator/auto-type-generator.js +375 -55
  4. package/dist/auto-type-generator/auto-type-generator.js.map +1 -1
  5. package/dist/auto-type-generator/discriminator-field-validator.d.ts +26 -0
  6. package/dist/auto-type-generator/discriminator-field-validator.d.ts.map +1 -0
  7. package/dist/auto-type-generator/discriminator-field-validator.js +242 -0
  8. package/dist/auto-type-generator/discriminator-field-validator.js.map +1 -0
  9. package/dist/auto-type-generator/discriminator-naming.d.ts +11 -0
  10. package/dist/auto-type-generator/discriminator-naming.d.ts.map +1 -0
  11. package/dist/auto-type-generator/discriminator-naming.js +15 -0
  12. package/dist/auto-type-generator/discriminator-naming.js.map +1 -0
  13. package/dist/auto-type-generator/discriminator-resolve-type-generator.d.ts +44 -0
  14. package/dist/auto-type-generator/discriminator-resolve-type-generator.d.ts.map +1 -0
  15. package/dist/auto-type-generator/discriminator-resolve-type-generator.js +77 -0
  16. package/dist/auto-type-generator/discriminator-resolve-type-generator.js.map +1 -0
  17. package/dist/auto-type-generator/index.d.ts +3 -0
  18. package/dist/auto-type-generator/index.d.ts.map +1 -1
  19. package/dist/auto-type-generator/index.js +3 -0
  20. package/dist/auto-type-generator/index.js.map +1 -1
  21. package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -1
  22. package/dist/auto-type-generator/inline-enum-collector.js +14 -7
  23. package/dist/auto-type-generator/inline-enum-collector.js.map +1 -1
  24. package/dist/auto-type-generator/inline-object-converter.d.ts +12 -0
  25. package/dist/auto-type-generator/inline-object-converter.d.ts.map +1 -0
  26. package/dist/auto-type-generator/inline-object-converter.js +72 -0
  27. package/dist/auto-type-generator/inline-object-converter.js.map +1 -0
  28. package/dist/auto-type-generator/inline-object-traverser.d.ts +2 -1
  29. package/dist/auto-type-generator/inline-object-traverser.d.ts.map +1 -1
  30. package/dist/auto-type-generator/inline-object-traverser.js +22 -4
  31. package/dist/auto-type-generator/inline-object-traverser.js.map +1 -1
  32. package/dist/auto-type-generator/inline-union-collector.d.ts.map +1 -1
  33. package/dist/auto-type-generator/inline-union-collector.js +20 -6
  34. package/dist/auto-type-generator/inline-union-collector.js.map +1 -1
  35. package/dist/auto-type-generator/inline-union-types.d.ts +2 -0
  36. package/dist/auto-type-generator/inline-union-types.d.ts.map +1 -1
  37. package/dist/auto-type-generator/inline-union-validator.js +3 -3
  38. package/dist/auto-type-generator/inline-union-validator.js.map +1 -1
  39. package/dist/auto-type-generator/intersection-flattener.d.ts +44 -0
  40. package/dist/auto-type-generator/intersection-flattener.d.ts.map +1 -0
  41. package/dist/auto-type-generator/intersection-flattener.js +398 -0
  42. package/dist/auto-type-generator/intersection-flattener.js.map +1 -0
  43. package/dist/auto-type-generator/naming-convention.d.ts +21 -0
  44. package/dist/auto-type-generator/naming-convention.d.ts.map +1 -1
  45. package/dist/auto-type-generator/naming-convention.js +145 -1
  46. package/dist/auto-type-generator/naming-convention.js.map +1 -1
  47. package/dist/auto-type-generator/typename-extractor.d.ts +2 -0
  48. package/dist/auto-type-generator/typename-extractor.d.ts.map +1 -1
  49. package/dist/auto-type-generator/typename-extractor.js +11 -3
  50. package/dist/auto-type-generator/typename-extractor.js.map +1 -1
  51. package/dist/auto-type-generator/typename-resolve-type-generator.d.ts +2 -0
  52. package/dist/auto-type-generator/typename-resolve-type-generator.d.ts.map +1 -1
  53. package/dist/auto-type-generator/typename-resolve-type-generator.js +12 -84
  54. package/dist/auto-type-generator/typename-resolve-type-generator.js.map +1 -1
  55. package/dist/auto-type-generator/typename-types.d.ts +4 -0
  56. package/dist/auto-type-generator/typename-types.d.ts.map +1 -1
  57. package/dist/auto-type-generator/typename-types.js +6 -0
  58. package/dist/auto-type-generator/typename-types.js.map +1 -1
  59. package/dist/auto-type-generator/typename-validator.d.ts.map +1 -1
  60. package/dist/auto-type-generator/typename-validator.js +4 -3
  61. package/dist/auto-type-generator/typename-validator.js.map +1 -1
  62. package/dist/commands/gen.d.ts.map +1 -1
  63. package/dist/commands/gen.js +2 -1
  64. package/dist/commands/gen.js.map +1 -1
  65. package/dist/config/types.d.ts +7 -0
  66. package/dist/config/types.d.ts.map +1 -1
  67. package/dist/config-loader/index.d.ts +1 -1
  68. package/dist/config-loader/index.d.ts.map +1 -1
  69. package/dist/config-loader/index.js.map +1 -1
  70. package/dist/config-loader/loader.d.ts +6 -0
  71. package/dist/config-loader/loader.d.ts.map +1 -1
  72. package/dist/config-loader/loader.js +1 -0
  73. package/dist/config-loader/loader.js.map +1 -1
  74. package/dist/config-loader/validator.d.ts.map +1 -1
  75. package/dist/config-loader/validator.js +84 -1
  76. package/dist/config-loader/validator.js.map +1 -1
  77. package/dist/gen-orchestrator/orchestrator.d.ts +2 -1
  78. package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -1
  79. package/dist/gen-orchestrator/orchestrator.js +15 -2
  80. package/dist/gen-orchestrator/orchestrator.js.map +1 -1
  81. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -1
  82. package/dist/resolver-extractor/extractor/define-api-extractor.js +4 -0
  83. package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -1
  84. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +2 -0
  85. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -1
  86. package/dist/resolver-extractor/validator/abstract-resolver-validator.js +16 -3
  87. package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -1
  88. package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -1
  89. package/dist/schema-generator/emitter/code-emitter.js +13 -1
  90. package/dist/schema-generator/emitter/code-emitter.js.map +1 -1
  91. package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.d.ts +18 -0
  92. package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.d.ts.map +1 -0
  93. package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.js +89 -0
  94. package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.js.map +1 -0
  95. package/dist/schema-generator/generate-schema.d.ts +2 -0
  96. package/dist/schema-generator/generate-schema.d.ts.map +1 -1
  97. package/dist/schema-generator/generate-schema.js +69 -10
  98. package/dist/schema-generator/generate-schema.js.map +1 -1
  99. package/dist/schema-generator/integrator/result-integrator.d.ts +4 -0
  100. package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -1
  101. package/dist/schema-generator/integrator/result-integrator.js +18 -2
  102. package/dist/schema-generator/integrator/result-integrator.js.map +1 -1
  103. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +2 -0
  104. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -1
  105. package/dist/schema-generator/resolver-collector/resolver-collector.js +4 -0
  106. package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -1
  107. package/dist/shared/constants.d.ts.map +1 -1
  108. package/dist/shared/constants.js +14 -1
  109. package/dist/shared/constants.js.map +1 -1
  110. package/dist/shared/enum-prefix-detector.d.ts.map +1 -1
  111. package/dist/shared/enum-prefix-detector.js +78 -8
  112. package/dist/shared/enum-prefix-detector.js.map +1 -1
  113. package/dist/shared/inline-object-utils.js +1 -1
  114. package/dist/shared/inline-object-utils.js.map +1 -1
  115. package/dist/shared/type-converter.d.ts.map +1 -1
  116. package/dist/shared/type-converter.js +55 -0
  117. package/dist/shared/type-converter.js.map +1 -1
  118. package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -1
  119. package/dist/type-extractor/converter/graphql-converter.js +11 -1
  120. package/dist/type-extractor/converter/graphql-converter.js.map +1 -1
  121. package/dist/type-extractor/extractor/field-type-resolver.d.ts +18 -0
  122. package/dist/type-extractor/extractor/field-type-resolver.d.ts.map +1 -1
  123. package/dist/type-extractor/extractor/field-type-resolver.js +198 -15
  124. package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -1
  125. package/dist/type-extractor/extractor/type-extractor.d.ts +1 -0
  126. package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -1
  127. package/dist/type-extractor/extractor/type-extractor.js +100 -9
  128. package/dist/type-extractor/extractor/type-extractor.js.map +1 -1
  129. package/dist/type-extractor/types/diagnostics.d.ts +1 -1
  130. package/dist/type-extractor/types/diagnostics.d.ts.map +1 -1
  131. package/dist/type-extractor/types/index.d.ts +1 -1
  132. package/dist/type-extractor/types/index.d.ts.map +1 -1
  133. package/dist/type-extractor/types/index.js +1 -1
  134. package/dist/type-extractor/types/index.js.map +1 -1
  135. package/dist/type-extractor/types/ts-type-reference-factory.d.ts +7 -1
  136. package/dist/type-extractor/types/ts-type-reference-factory.d.ts.map +1 -1
  137. package/dist/type-extractor/types/ts-type-reference-factory.js +18 -3
  138. package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -1
  139. package/dist/type-extractor/types/typescript.d.ts +3 -1
  140. package/dist/type-extractor/types/typescript.d.ts.map +1 -1
  141. package/dist/type-extractor/validator/type-validator.d.ts.map +1 -1
  142. package/dist/type-extractor/validator/type-validator.js +6 -1
  143. package/dist/type-extractor/validator/type-validator.js.map +1 -1
  144. package/docs/configuration.md +19 -0
  145. package/docs/index.md +1 -0
  146. package/docs/integration/ai-sdk.md +189 -0
  147. package/docs/schema/unions.md +117 -0
  148. package/package.json +2 -2
  149. package/src/auto-type-generator/auto-type-generator.ts +576 -58
  150. package/src/auto-type-generator/discriminator-field-validator.ts +368 -0
  151. package/src/auto-type-generator/discriminator-naming.ts +24 -0
  152. package/src/auto-type-generator/discriminator-resolve-type-generator.ts +136 -0
  153. package/src/auto-type-generator/index.ts +17 -0
  154. package/src/auto-type-generator/inline-enum-collector.ts +19 -4
  155. package/src/auto-type-generator/inline-object-converter.ts +100 -0
  156. package/src/auto-type-generator/inline-object-traverser.ts +33 -7
  157. package/src/auto-type-generator/inline-union-collector.ts +26 -4
  158. package/src/auto-type-generator/inline-union-types.ts +2 -0
  159. package/src/auto-type-generator/inline-union-validator.ts +3 -3
  160. package/src/auto-type-generator/intersection-flattener.ts +554 -0
  161. package/src/auto-type-generator/naming-convention.ts +205 -1
  162. package/src/auto-type-generator/typename-extractor.ts +17 -3
  163. package/src/auto-type-generator/typename-resolve-type-generator.ts +19 -108
  164. package/src/auto-type-generator/typename-types.ts +7 -0
  165. package/src/auto-type-generator/typename-validator.ts +4 -3
  166. package/src/commands/gen.ts +9 -2
  167. package/src/config/types.ts +10 -0
  168. package/src/config-loader/index.ts +1 -0
  169. package/src/config-loader/loader.ts +11 -0
  170. package/src/config-loader/validator.ts +100 -1
  171. package/src/gen-orchestrator/orchestrator.ts +19 -2
  172. package/src/resolver-extractor/extractor/define-api-extractor.ts +4 -0
  173. package/src/resolver-extractor/validator/abstract-resolver-validator.ts +20 -6
  174. package/src/schema-generator/emitter/code-emitter.ts +26 -1
  175. package/src/schema-generator/emitter/discriminator-resolve-type-emitter.ts +125 -0
  176. package/src/schema-generator/generate-schema.ts +100 -13
  177. package/src/schema-generator/integrator/result-integrator.ts +25 -1
  178. package/src/schema-generator/resolver-collector/resolver-collector.ts +7 -0
  179. package/src/shared/constants.ts +15 -1
  180. package/src/shared/enum-prefix-detector.ts +96 -8
  181. package/src/shared/inline-object-utils.ts +1 -1
  182. package/src/shared/type-converter.ts +63 -0
  183. package/src/type-extractor/converter/graphql-converter.ts +17 -1
  184. package/src/type-extractor/extractor/field-type-resolver.ts +241 -16
  185. package/src/type-extractor/extractor/type-extractor.ts +119 -5
  186. package/src/type-extractor/types/diagnostics.ts +10 -1
  187. package/src/type-extractor/types/index.ts +2 -1
  188. package/src/type-extractor/types/ts-type-reference-factory.ts +24 -3
  189. package/src/type-extractor/types/typescript.ts +6 -2
  190. package/src/type-extractor/validator/type-validator.ts +6 -1
@@ -1,13 +1,15 @@
1
+ import { relative } from "node:path";
1
2
  import ts from "typescript";
2
3
  import { detectBrandedType, detectUniformBrandedType, } from "../../shared/branded-type-detector.js";
3
4
  import { isInternalTypeSymbol } from "../../shared/constants.js";
4
5
  import { extractInlineObjectProperties as extractInlineObjectPropertiesShared } from "../../shared/inline-object-extractor.js";
5
6
  import { isInlineObjectType } from "../../shared/inline-object-utils.js";
6
7
  import { detectScalarMetadata } from "../../shared/metadata-detector.js";
8
+ import { getSourceLocationFromNode, } from "../../shared/source-location.js";
7
9
  import { extractTsDocFromSymbol, } from "../../shared/tsdoc-parser.js";
8
10
  import { findEnumParentSymbol, findNonNullTypeNode, getNonNullableTypes, getTypeNameFromNode, isBooleanUnion, isNullableUnion, resolveOriginalSymbol, } from "../../shared/typescript-utils.js";
9
11
  import { lookupScalarMapping } from "../mapper/scalar-base-type-mapper.js";
10
- import { createArrayType, createInlineEnumType, createInlineObjectType, createLiteralType, createPrimitiveType, createReferenceType, createScalarType, createUnionType, } from "../types/ts-type-reference-factory.js";
12
+ import { createArrayType, createInlineEnumType, createInlineObjectType, createNeverType, createNumericLiteralType, createPrimitiveType, createReferenceType, createScalarType, createStringLiteralType, createUnionType, } from "../types/ts-type-reference-factory.js";
11
13
  /**
12
14
  * Resolves a TypeScript type to a TSTypeReference for use in field context.
13
15
  *
@@ -119,8 +121,25 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
119
121
  const innerResult = resolveFieldTypeInternal(nonNullTypes[0], nonNullTypeNode, ctx);
120
122
  return { ...innerResult, nullable };
121
123
  }
122
- const memberResults = nonNullTypes.map((t) => resolveFieldTypeInternal(t, undefined, ctx));
123
- return createUnionType({ members: memberResults, nullable });
124
+ const memberResults = nonNullTypes.map((t) => {
125
+ const result = resolveFieldTypeInternal(t, undefined, ctx);
126
+ // If the result is an unresolvable reference and the original type is an
127
+ // object type with properties, try to expand it as an inline object.
128
+ // This handles external library types used as union members.
129
+ // When type discovery is active, discovered types are kept as references
130
+ // so they can be registered with their original names later.
131
+ if (result.kind === "reference" &&
132
+ result.name !== null &&
133
+ !ctx.knownTypeNames.has(result.name) &&
134
+ t.flags & ts.TypeFlags.Object &&
135
+ t.getProperties().length > 0 &&
136
+ !ctx.discoveredTypes?.has(result.name)) {
137
+ return tryExtractAsInlineObject(t, ctx, result.name);
138
+ }
139
+ return result;
140
+ });
141
+ const aliasName = type.aliasSymbol?.getName() ?? null;
142
+ return createUnionType({ members: memberResults, nullable, aliasName });
124
143
  }
125
144
  // Array type handling
126
145
  if (checker.isArrayType(type)) {
@@ -135,6 +154,25 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
135
154
  : createPrimitiveType({ name: "unknown", nullable: false });
136
155
  return createArrayType(elementResult);
137
156
  }
157
+ // Never type — represents an impossible value, skip this field
158
+ // Also handles `undefined` which results from `field?: never` (never | undefined simplifies to undefined)
159
+ if (type.flags & ts.TypeFlags.Never || type.flags & ts.TypeFlags.Undefined) {
160
+ return createNeverType();
161
+ }
162
+ // Unknown type — represents arbitrary values, map to JSON scalar (graphql-scalars)
163
+ if (type.flags & ts.TypeFlags.Unknown) {
164
+ return createScalarType({
165
+ name: "JSON",
166
+ scalarInfo: {
167
+ scalarName: "JSON",
168
+ typeName: "unknown",
169
+ baseType: undefined,
170
+ isCustom: true,
171
+ only: null,
172
+ },
173
+ nullable: false,
174
+ });
175
+ }
138
176
  // Primitive types
139
177
  const typeString = checker.typeToString(type);
140
178
  if (type.flags & ts.TypeFlags.String) {
@@ -148,10 +186,14 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
148
186
  return createPrimitiveType({ name: "boolean", nullable: false });
149
187
  }
150
188
  if (type.flags & ts.TypeFlags.StringLiteral) {
151
- return createLiteralType(typeString.replace(/"/g, ""));
189
+ return createStringLiteralType(typeString.replace(/"/g, ""));
152
190
  }
153
191
  if (type.flags & ts.TypeFlags.NumberLiteral) {
154
- return createLiteralType(typeString);
192
+ return createNumericLiteralType(typeString);
193
+ }
194
+ // Template literal types (e.g., `prefix-${string}`) represent string subsets
195
+ if (type.flags & ts.TypeFlags.TemplateLiteral) {
196
+ return createPrimitiveType({ name: "string", nullable: false });
155
197
  }
156
198
  // Intersection types in field context
157
199
  // GraphQL doesn't have intersection types, so we must resolve them appropriately
@@ -186,11 +228,62 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
186
228
  nullable: false,
187
229
  });
188
230
  }
189
- // 4. Otherwise, treat as inline object
190
- return tryExtractAsInlineObject(type, ctx);
231
+ // 4. Register in discoveredTypes if applicable (same logic as alias expansion)
232
+ // This handles non-exported recursive intersection types that would otherwise
233
+ // cause cycle detection failures in tryExtractAsInlineObject.
234
+ if (type.aliasSymbol) {
235
+ const aliasName = type.aliasSymbol.getName();
236
+ if (!knownTypeNames.has(aliasName)) {
237
+ if (ctx.discoveredTypes && !ctx.discoveredTypes.has(aliasName)) {
238
+ const resolvedAliasSymbol = resolveOriginalSymbol(type.aliasSymbol, checker);
239
+ const declarations = resolvedAliasSymbol.getDeclarations();
240
+ const decl = declarations?.[0];
241
+ if (decl && !decl.getSourceFile().isDeclarationFile) {
242
+ const properties = type.getProperties();
243
+ if (properties.length > 0) {
244
+ const declSourceFile = decl.getSourceFile();
245
+ const location = getSourceLocationFromNode(decl) ?? {
246
+ file: declSourceFile.fileName,
247
+ line: 1,
248
+ column: 1,
249
+ };
250
+ ctx.discoveredTypes.set(aliasName, {
251
+ name: aliasName,
252
+ tsType: type,
253
+ tsSymbol: resolvedAliasSymbol,
254
+ sourceFile: relative(process.cwd(), declSourceFile.fileName),
255
+ sourceLocation: location,
256
+ });
257
+ return createReferenceType({ name: aliasName, nullable: false });
258
+ }
259
+ }
260
+ }
261
+ if (ctx.discoveredTypes?.has(aliasName)) {
262
+ return createReferenceType({ name: aliasName, nullable: false });
263
+ }
264
+ }
265
+ }
266
+ // 5. Otherwise, treat as inline object
267
+ return tryExtractAsInlineObject(type, ctx, null);
191
268
  }
192
269
  // Inline object type handling
193
270
  if (isInlineObjectType(type)) {
271
+ // Index signature types (Record<string, T>, { [key: string]: T })
272
+ // These have no named properties, only index signatures — map to JSONObject (graphql-scalars)
273
+ const hasStringIndex = checker.getIndexTypeOfType(type, ts.IndexKind.String) !== undefined;
274
+ if (hasStringIndex && type.getProperties().length === 0) {
275
+ return createScalarType({
276
+ name: "JSONObject",
277
+ scalarInfo: {
278
+ scalarName: "JSONObject",
279
+ typeName: "Record",
280
+ baseType: undefined,
281
+ isCustom: true,
282
+ only: null,
283
+ },
284
+ nullable: false,
285
+ });
286
+ }
194
287
  // Check if typeNode references a known type
195
288
  if (typeNode && ts.isTypeReferenceNode(typeNode)) {
196
289
  const typeName = getTypeNameFromNode(typeNode);
@@ -200,12 +293,27 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
200
293
  return createReferenceType({ name: typeName, nullable: false });
201
294
  }
202
295
  }
203
- return tryExtractAsInlineObject(type, ctx);
296
+ return tryExtractAsInlineObject(type, ctx, null);
204
297
  }
205
298
  // Mapped types (utility types like Omit, Pick, user-defined utilities)
206
299
  if (type.flags & ts.TypeFlags.Object) {
207
300
  const objectType = type;
208
301
  if (objectType.objectFlags & ts.ObjectFlags.Mapped) {
302
+ // Index signature mapped types (Record<string, T>) — map to JSONObject (graphql-scalars)
303
+ const hasMappedStringIndex = checker.getIndexTypeOfType(type, ts.IndexKind.String) !== undefined;
304
+ if (hasMappedStringIndex && type.getProperties().length === 0) {
305
+ return createScalarType({
306
+ name: "JSONObject",
307
+ scalarInfo: {
308
+ scalarName: "JSONObject",
309
+ typeName: "Record",
310
+ baseType: undefined,
311
+ isCustom: true,
312
+ only: null,
313
+ },
314
+ nullable: false,
315
+ });
316
+ }
209
317
  // Check if typeNode references a known type (schema-defined type)
210
318
  if (typeNode && ts.isTypeReferenceNode(typeNode)) {
211
319
  const typeName = getTypeNameFromNode(typeNode);
@@ -216,7 +324,7 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
216
324
  }
217
325
  }
218
326
  // Not a known type - treat as inline object
219
- return tryExtractAsInlineObject(type, ctx);
327
+ return tryExtractAsInlineObject(type, ctx, null);
220
328
  }
221
329
  }
222
330
  // Type alias expansion: type aliases not in knownTypeNames should be expanded as inline objects
@@ -233,8 +341,39 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
233
341
  const isAnonymousObject = (type.flags & ts.TypeFlags.Object) !== 0 &&
234
342
  (type.objectFlags & ts.ObjectFlags.Anonymous) !== 0;
235
343
  if (isAnonymousObject) {
344
+ // Check if this type alias qualifies for transitive discovery.
345
+ // Type aliases to object literals used as union members should be
346
+ // discovered with their original alias name, not expanded as inline
347
+ // objects with auto-generated names. (#202)
348
+ if (ctx.discoveredTypes && !ctx.discoveredTypes.has(aliasName)) {
349
+ const resolvedAliasSymbol = resolveOriginalSymbol(type.aliasSymbol, checker);
350
+ const declarations = resolvedAliasSymbol.getDeclarations();
351
+ const decl = declarations?.[0];
352
+ if (decl && !decl.getSourceFile().isDeclarationFile) {
353
+ const properties = type.getProperties();
354
+ if (properties.length > 0) {
355
+ const declSourceFile = decl.getSourceFile();
356
+ const location = getSourceLocationFromNode(decl) ?? {
357
+ file: declSourceFile.fileName,
358
+ line: 1,
359
+ column: 1,
360
+ };
361
+ ctx.discoveredTypes.set(aliasName, {
362
+ name: aliasName,
363
+ tsType: type,
364
+ tsSymbol: resolvedAliasSymbol,
365
+ sourceFile: relative(process.cwd(), declSourceFile.fileName),
366
+ sourceLocation: location,
367
+ });
368
+ return createReferenceType({ name: aliasName, nullable: false });
369
+ }
370
+ }
371
+ }
372
+ if (ctx.discoveredTypes?.has(aliasName)) {
373
+ return createReferenceType({ name: aliasName, nullable: false });
374
+ }
236
375
  // Not a known schema type and is an anonymous object - expand to generate Payload type
237
- return tryExtractAsInlineObject(type, ctx);
376
+ return tryExtractAsInlineObject(type, ctx, null);
238
377
  }
239
378
  }
240
379
  }
@@ -288,7 +427,7 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
288
427
  return createReferenceType({ name: symbolName, nullable: false });
289
428
  }
290
429
  // Type from outside schema files - expand as inline object
291
- return tryExtractAsInlineObject(type, ctx);
430
+ return tryExtractAsInlineObject(type, ctx, null);
292
431
  }
293
432
  // Check for scalar base type mapping
294
433
  // This allows automatic mapping of base types (e.g., Date) to scalar types (e.g., DateTime)
@@ -330,21 +469,64 @@ function resolveFieldTypeInternal(type, typeNode, ctx) {
330
469
  });
331
470
  }
332
471
  }
472
+ // Discover extractable named types for transitive type registration
473
+ if (ctx.discoveredTypes && !ctx.discoveredTypes.has(symbolName)) {
474
+ const declarations = resolvedSymbol.getDeclarations();
475
+ const decl = declarations?.[0];
476
+ if (decl && !decl.getSourceFile().isDeclarationFile) {
477
+ const properties = type.getProperties();
478
+ if (properties.length > 0) {
479
+ const declSourceFile = decl.getSourceFile();
480
+ const location = getSourceLocationFromNode(decl) ?? {
481
+ file: declSourceFile.fileName,
482
+ line: 1,
483
+ column: 1,
484
+ };
485
+ ctx.discoveredTypes.set(symbolName, {
486
+ name: symbolName,
487
+ tsType: type,
488
+ tsSymbol: resolvedSymbol,
489
+ sourceFile: relative(process.cwd(), declSourceFile.fileName),
490
+ sourceLocation: location,
491
+ });
492
+ }
493
+ }
494
+ }
333
495
  // Unknown type - still return reference but it will likely cause validation error later
334
496
  return createReferenceType({ name: symbolName, nullable: false });
335
497
  }
336
498
  }
337
499
  return createReferenceType({ name: typeString, nullable: false });
338
500
  }
339
- function tryExtractAsInlineObject(type, ctx) {
501
+ function tryExtractAsInlineObject(type, ctx, hintName) {
340
502
  const { visitedTypes, checker } = ctx;
341
503
  if (visitedTypes.has(type)) {
342
- // Cycle detected, return a placeholder reference
343
- const typeName = type.symbol?.getName() ?? "Unknown";
344
- return createReferenceType({ name: typeName, nullable: false });
504
+ // Prefer aliasSymbol (type alias name) over type.symbol (which may be __type for anonymous objects)
505
+ const candidateName = type.aliasSymbol?.getName() ?? type.symbol?.getName();
506
+ if (candidateName &&
507
+ !isInternalTypeSymbol(candidateName) &&
508
+ (ctx.knownTypeNames.has(candidateName) ||
509
+ ctx.discoveredTypes?.has(candidateName))) {
510
+ // Valid reference target exists in the schema
511
+ return createReferenceType({ name: candidateName, nullable: false });
512
+ }
513
+ // No valid reference target — emit warning and skip field
514
+ ctx.diagnostics.push({
515
+ code: "CYCLE_DETECTED",
516
+ message: "Cycle detected in type resolution; field will be skipped",
517
+ severity: "warning",
518
+ });
519
+ return createNeverType();
345
520
  }
346
521
  visitedTypes.add(type);
347
522
  const inlineProperties = extractInlineObjectPropertiesShared(type, checker, (propType) => resolveFieldTypeInternal(propType, undefined, ctx));
523
+ // Allow this type to be visited again in sibling union members.
524
+ // Cycle detection still works because real cycles are caught during the
525
+ // recursive extractInlineObjectPropertiesShared call above (while the
526
+ // type is still in visitedTypes). Removing it afterward prevents
527
+ // false-positive cycle detection when TypeScript shares the same type
528
+ // object across multiple union members (common with generic .d.ts types).
529
+ visitedTypes.delete(type);
348
530
  // Extract type-level TSDoc from the alias symbol if present (Requirement 7.2)
349
531
  // Only extract from user-defined types, not built-in TypeScript utility types
350
532
  let description = null;
@@ -365,6 +547,7 @@ function tryExtractAsInlineObject(type, ctx) {
365
547
  properties: inlineProperties,
366
548
  description,
367
549
  deprecated,
550
+ hintName,
368
551
  });
369
552
  }
370
553
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"field-type-resolver.js","sourceRoot":"","sources":["../../../src/type-extractor/extractor/field-type-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field-type-resolver.js","sourceRoot":"","sources":["../../../src/type-extractor/extractor/field-type-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,6BAA6B,IAAI,mCAAmC,EAAE,MAAM,yCAAyC,CAAC;AAC/H,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,yBAAyB,GAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAChB,MAAM,uCAAuC,CAAC;AA6C/C;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAa,EACb,QAAiC,EACjC,GAA6B;IAE7B,MAAM,WAAW,GAA6B;QAC5C,GAAG,GAAG;QACN,YAAY,EAAE,IAAI,OAAO,EAAE;KAC5B,CAAC;IACF,OAAO,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAa,EACb,QAAiC,EACjC,GAA6B;IAE7B,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,GAAG,CAAC;IAE5D,mBAAmB;IACnB,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,IACE,cAAc,CAAC,UAAU;QACzB,CAAC,cAAc,CAAC,WAAW;QAC3B,CAAC,cAAc,CAAC,MAAM,EACtB,CAAC;QACD,OAAO,gBAAgB,CAAC;YACtB,IAAI,EAAE,cAAc,CAAC,UAAU;YAC/B,UAAU,EAAE;gBACV,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,QAAQ,EAAE,cAAc,CAAC,UAAU;gBACnC,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,cAAc,CAAC,IAAI;aAC1B;YACD,QAAQ,EAAE,cAAc,CAAC,QAAQ;SAClC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvC,kEAAkE;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC9C,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,mGAAmG;QACnG,IAAI,QAAQ,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClE,IACE,QAAQ;gBACR,iBAAiB,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAE,GAAG,CAAC,EACzD,CAAC;gBACD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE/C,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC5C,wDAAwD;YACxD,IAAI,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;gBACvD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,0DAA0D;YAC1D,MAAM,kBAAkB,GAAG,kCAAkC,CAC3D,gBAAgB,EAChB,OAAO,CACR,CAAC;YACF,IAAI,kBAAkB,EAAE,CAAC;gBACvB,OAAO,oBAAoB,CAAC;oBAC1B,OAAO,EAAE,kBAAkB,CAAC,OAAO;oBACnC,QAAQ;oBACR,kBAAkB,EAAE,gBAAgB;oBACpC,uBAAuB,EAAE,kBAAkB,CAAC,WAAW;oBACvD,sBAAsB,EAAE,kBAAkB,CAAC,UAAU;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,oBAAoB,CAAC;gBAC1B,OAAO,EAAE,gBAAgB;gBACzB,QAAQ;gBACR,kBAAkB,EAAE,IAAI;gBACxB,uBAAuB,EAAE,IAAI;gBAC7B,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,yDAAyD;QACzD,iFAAiF;QACjF,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;QACpE,IACE,oBAAoB,CAAC,SAAS;YAC9B,oBAAoB,CAAC,QAAQ,KAAK,IAAI,EACtC,CAAC;YACD,OAAO,mBAAmB,CAAC;gBACzB,IAAI,EAAE,oBAAoB,CAAC,QAAQ;gBACnC,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,eAAe,GACnB,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACtC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBAC/B,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,WAAW,GAAG,wBAAwB,CAC1C,YAAY,CAAC,CAAC,CAAE,EAChB,eAAe,EACf,GAAG,CACJ,CAAC;YACF,OAAO,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC3D,yEAAyE;YACzE,qEAAqE;YACrE,6DAA6D;YAC7D,yEAAyE;YACzE,6DAA6D;YAC7D,IACE,MAAM,CAAC,IAAI,KAAK,WAAW;gBAC3B,MAAM,CAAC,IAAI,KAAK,IAAI;gBACpB,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM;gBAC7B,CAAC,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EACtC,CAAC;gBACD,OAAO,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC;QACtD,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAI,IAAyB,CAAC,aAAa,CAAC;QAC1D,MAAM,WAAW,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAElC,IAAI,eAAwC,CAAC;QAC7C,IAAI,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC;QACzC,CAAC;QAED,MAAM,aAAa,GAAG,WAAW;YAC/B,CAAC,CAAC,wBAAwB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,CAAC;YAC7D,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9D,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,+DAA+D;IAC/D,0GAA0G;IAC1G,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3E,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,mFAAmF;IACnF,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,gBAAgB,CAAC;YACtB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE;gBACV,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;aACX;YACD,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QACjC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,EACxC,CAAC;QACD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IACD,6EAA6E;IAC7E,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC9C,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,sCAAsC;IACtC,iFAAiF;IACjF,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1B,oFAAoF;QACpF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,kEAAkE;YAClE,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAChC,CAAC;YACF,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,gBAAgB,CAAC;oBACtB,IAAI,EAAE,aAAa,CAAC,UAAU;oBAC9B,UAAU,EAAE;wBACV,UAAU,EAAE,aAAa,CAAC,UAAU;wBACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,aAAa,CAAC,IAAI;qBACzB;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC/D,OAAO,mBAAmB,CAAC;gBACzB,IAAI,EAAE,aAAa,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,+EAA+E;QAC/E,iFAAiF;QACjF,iEAAiE;QACjE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/D,MAAM,mBAAmB,GAAG,qBAAqB,CAC/C,IAAI,CAAC,WAAW,EAChB,OAAO,CACR,CAAC;oBACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,eAAe,EAAE,CAAC;oBAC3D,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,iBAAiB,EAAE,CAAC;wBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;4BAC5C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI;gCAClD,IAAI,EAAE,cAAc,CAAC,QAAQ;gCAC7B,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,CAAC;6BACV,CAAC;4BACF,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE;gCACjC,IAAI,EAAE,SAAS;gCACf,MAAM,EAAE,IAAI;gCACZ,QAAQ,EAAE,mBAAmB;gCAC7B,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC;gCAC5D,cAAc,EAAE,QAAQ;6BACzB,CAAC,CAAC;4BACH,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wBACnE,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,8BAA8B;IAC9B,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,kEAAkE;QAClE,8FAA8F;QAC9F,MAAM,cAAc,GAClB,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;QACtE,IAAI,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,gBAAgB,CAAC;gBACtB,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE;oBACV,UAAU,EAAE,YAAY;oBACxB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,IAAI;iBACX;gBACD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,4CAA4C;QAC5C,IAAI,QAAQ,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClE,IACE,QAAQ;gBACR,iBAAiB,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAE,GAAG,CAAC,EACzD,CAAC;gBACD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,uEAAuE;IACvE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAqB,CAAC;QACzC,IAAI,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACnD,yFAAyF;YACzF,MAAM,oBAAoB,GACxB,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;YACtE,IAAI,oBAAoB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9D,OAAO,gBAAgB,CAAC;oBACtB,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE;wBACV,UAAU,EAAE,YAAY;wBACxB,QAAQ,EAAE,QAAQ;wBAClB,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,IAAI;qBACX;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;YACL,CAAC;YAED,kEAAkE;YAClE,IAAI,QAAQ,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAClE,IACE,QAAQ;oBACR,iBAAiB,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAE,GAAG,CAAC,EACzD,CAAC;oBACD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YACD,4CAA4C;YAC5C,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,8EAA8E;IAC9E,2EAA2E;IAC3E,sFAAsF;IACtF,qEAAqE;IACrE,8FAA8F;IAC9F,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,qFAAqF;YACrF,oFAAoF;YACpF,MAAM,iBAAiB,GACrB,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;gBACxC,CAAE,IAAsB,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEzE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,+DAA+D;gBAC/D,kEAAkE;gBAClE,oEAAoE;gBACpE,4CAA4C;gBAC5C,IAAI,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/D,MAAM,mBAAmB,GAAG,qBAAqB,CAC/C,IAAI,CAAC,WAAW,EAChB,OAAO,CACR,CAAC;oBACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,eAAe,EAAE,CAAC;oBAC3D,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,iBAAiB,EAAE,CAAC;wBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;4BAC5C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI;gCAClD,IAAI,EAAE,cAAc,CAAC,QAAQ;gCAC7B,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,CAAC;6BACV,CAAC;4BACF,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE;gCACjC,IAAI,EAAE,SAAS;gCACf,MAAM,EAAE,IAAI;gCACZ,QAAQ,EAAE,mBAAmB;gCAC7B,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC;gCAC5D,cAAc,EAAE,QAAQ;6BACzB,CAAC,CAAC;4BACH,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wBACnE,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,uFAAuF;gBACvF,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,2BAA2B;IAC3B,wEAAwE;IACxE,qGAAqG;IACrG,IAAI,QAAQ,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,kDAAkD;YAClD,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CACjC,CAAC;YACF,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,gBAAgB,CAAC;oBACtB,IAAI,EAAE,aAAa,CAAC,UAAU;oBAC9B,UAAU,EAAE;wBACV,UAAU,EAAE,aAAa,CAAC,UAAU;wBACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,aAAa,CAAC,IAAI;qBACzB;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;YACL,CAAC;YAED,kDAAkD;YAClD,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACpD,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,oEAAoE;YACpE,yFAAyF;YACzF,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,cAAc,GAAG,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC1E,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,yDAAyD;YACzD,2CAA2C;YAC3C,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnC,sEAAsE;gBACtE,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBACxD,kEAAkE;oBAClE,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpE,CAAC;gBACD,2DAA2D;gBAC3D,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,qCAAqC;YACrC,4FAA4F;YAC5F,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;oBAC9C,cAAc,EAAE,cAAc;oBAC9B,OAAO,EAAE,GAAG,CAAC,oBAAoB;oBACjC,KAAK,EAAE,GAAG,CAAC,kBAAkB;iBAC9B,CAAC,CAAC;gBAEH,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;oBAChC,OAAO,gBAAgB,CAAC;wBACtB,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU;wBAC5C,UAAU,EAAE;4BACV,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU;4BAClD,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc;4BACpD,QAAQ,EAAE,SAAS;4BACnB,QAAQ,EAAE,IAAI;4BACd,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI;yBACvC;wBACD,QAAQ,EAAE,KAAK;qBAChB,CAAC,CAAC;gBACL,CAAC;gBACD,8DAA8D;YAChE,CAAC;YAED,6DAA6D;YAC7D,2EAA2E;YAC3E,oEAAoE;YACpE,MAAM,YAAY,GAChB,CAAC,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClD,cAAc,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;YACxE,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,kBAAkB,GAAG,kCAAkC,CAC3D,cAAc,EACd,OAAO,CACR,CAAC;gBACF,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAO,oBAAoB,CAAC;wBAC1B,OAAO,EAAE,kBAAkB,CAAC,OAAO;wBACnC,QAAQ,EAAE,KAAK;wBACf,kBAAkB,EAAE,cAAc;wBAClC,uBAAuB,EAAE,kBAAkB,CAAC,WAAW;wBACvD,sBAAsB,EAAE,kBAAkB,CAAC,UAAU;qBACtD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,IAAI,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChE,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;gBACtD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,iBAAiB,EAAE,CAAC;oBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBAC5C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI;4BAClD,IAAI,EAAE,cAAc,CAAC,QAAQ;4BAC7B,IAAI,EAAE,CAAC;4BACP,MAAM,EAAE,CAAC;yBACV,CAAC;wBACF,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE;4BAClC,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE,IAAI;4BACZ,QAAQ,EAAE,cAAc;4BACxB,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC;4BAC5D,cAAc,EAAE,QAAQ;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wFAAwF;YACxF,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAa,EACb,GAA6B,EAC7B,QAAuB;IAEvB,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACtC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,oGAAoG;QACpG,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5E,IACE,aAAa;YACb,CAAC,oBAAoB,CAAC,aAAa,CAAC;YACpC,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC;gBACpC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,EAC1C,CAAC;YACD,8CAA8C;YAC9C,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,0DAA0D;QAC1D,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,0DAA0D;YACnE,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;QACH,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEvB,MAAM,gBAAgB,GAAG,mCAAmC,CAC1D,IAAI,EACJ,OAAO,EACP,CAAC,QAAQ,EAAE,EAAE,CAAC,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CACjE,CAAC;IAEF,gEAAgE;IAChE,wEAAwE;IACxE,sEAAsE;IACtE,iEAAiE;IACjE,sEAAsE;IACtE,0EAA0E;IAC1E,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1B,8EAA8E;IAC9E,8EAA8E;IAC9E,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,UAAU,GAA2B,IAAI,CAAC;IAC9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QACxD,MAAM,aAAa,GACjB,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACvC,CAAC,CAAC,IAAI,KAAK,CAAC;QAEd,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpE,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;YACpC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,sBAAsB,CAAC;QAC5B,UAAU,EAAE,gBAAgB;QAC5B,WAAW;QACX,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,KAA6B;IAE7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,IAA4B,CAAC;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAEhC,OAAO,CAAC,IAAI,CAAC;YACX,KAAK;YACL,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAcD;;;;;GAKG;AACH,SAAS,kCAAkC,CACzC,UAAqB,EACrB,OAAuB;IAEvB,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;IAClD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAChE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;QAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,YAAY;YAC5B,CAAC,CAAC,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC;YAC/C,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAE5C,OAAO,CAAC,IAAI,CAAC;YACX,KAAK;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,OAAO;QACP,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,UAAU,EAAE,SAAS,CAAC,UAAU;KACjC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,IAAY,EACZ,UAAiC,EACjC,GAA6B;IAE7B,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAE1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtE,OAAO,kBAAkB,KAAK,YAAY,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,MAAiB,EACjB,WAAgC;IAEhC,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAC9C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;IAC/C,OAAO,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
@@ -31,6 +31,7 @@ export interface ExtractionResult {
31
31
  readonly diagnostics: ReadonlyArray<Diagnostic>;
32
32
  readonly detectedScalarNames: ReadonlyArray<string>;
33
33
  readonly detectedScalars: ReadonlyArray<ScalarMetadataInfo>;
34
+ readonly discoveredTypeNames: ReadonlySet<string>;
34
35
  }
35
36
  export declare function extractTypesFromProgram(program: ts.Program, sourceFiles: ReadonlyArray<string>, options: ExtractionOptions): ExtractionResult;
36
37
  //# sourceMappingURL=type-extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-extractor.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/extractor/type-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AA2C5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAQL,KAAK,UAAU,EAEf,KAAK,iBAAiB,EAOvB,MAAM,mBAAmB,CAAC;AAG3B;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC9D,yEAAyE;IACzE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1D,iFAAiF;IACjF,QAAQ,CAAC,0BAA0B,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpE,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAyrCD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CA0UlB"}
1
+ {"version":3,"file":"type-extractor.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/extractor/type-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AA8C5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EASL,KAAK,UAAU,EAEf,KAAK,iBAAiB,EAOvB,MAAM,mBAAmB,CAAC;AAO3B;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC9D,yEAAyE;IACzE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1D,iFAAiF;IACjF,QAAQ,CAAC,0BAA0B,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpE,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC5D,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnD;AAktCD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAgYlB"}
@@ -1,6 +1,6 @@
1
1
  import { resolve } from "node:path";
2
2
  import ts from "typescript";
3
- import { isInternalTypeSymbol } from "../../shared/constants.js";
3
+ import { isBuiltInScalar, isInternalTypeSymbol, } from "../../shared/constants.js";
4
4
  import { detectDefaultValueMetadata } from "../../shared/default-value-detector.js";
5
5
  import { detectDirectiveMetadata, hasDirectiveMetadata, unwrapDirectiveType, } from "../../shared/directive-detector.js";
6
6
  import { detectIgnoreFieldsMetadata } from "../../shared/ignore-fields-detector.js";
@@ -12,8 +12,8 @@ import { detectScalarMetadata } from "../../shared/metadata-detector.js";
12
12
  import { getSourceLocationFromNode, } from "../../shared/source-location.js";
13
13
  import { extractTsDocFromSymbol, extractTsDocInfo, } from "../../shared/tsdoc-parser.js";
14
14
  import { extractPropertySymbols, filterNonNullTypeNodes, findEnumParentSymbol, findNonNullTypeNode, getNonNullableTypes, getTypeNameFromNode, hasUndefinedInType, isAnonymousObjectType, isBooleanUnion, isExported, isNullableUnion, isNullOrUndefined, shouldTreatIntersectionAsInline, } from "../../shared/typescript-utils.js";
15
- import { createArrayType, createInlineObjectType, createLiteralType, createPrimitiveType, createReferenceType, createScalarType, createUnionType, } from "../types/index.js";
16
- import { resolveFieldType } from "./field-type-resolver.js";
15
+ import { createArrayType, createInlineObjectType, createNumericLiteralType, createPrimitiveType, createReferenceType, createScalarType, createStringLiteralType, createUnionType, } from "../types/index.js";
16
+ import { resolveFieldType, } from "./field-type-resolver.js";
17
17
  function isDefaultExport(node, sourceFile) {
18
18
  let hasDefaultExport = false;
19
19
  const nodeName = node.name?.getText(sourceFile);
@@ -50,6 +50,7 @@ function tryExtractAsInlineObject(type, ctx) {
50
50
  properties: inlineProperties,
51
51
  description: null,
52
52
  deprecated: null,
53
+ hintName: null,
53
54
  }),
54
55
  };
55
56
  }
@@ -120,6 +121,7 @@ function convertTsTypeToReference(type, ctx, typeNode) {
120
121
  tsType: createUnionType({
121
122
  members: memberResults.map((r) => r.tsType),
122
123
  nullable,
124
+ aliasName: type.aliasSymbol?.getName() ?? null,
123
125
  }),
124
126
  };
125
127
  }
@@ -159,12 +161,12 @@ function convertTsTypeToReference(type, ctx, typeNode) {
159
161
  }
160
162
  if (type.flags & ts.TypeFlags.StringLiteral) {
161
163
  return {
162
- tsType: createLiteralType(typeString.replace(/"/g, "")),
164
+ tsType: createStringLiteralType(typeString.replace(/"/g, "")),
163
165
  };
164
166
  }
165
167
  if (type.flags & ts.TypeFlags.NumberLiteral) {
166
168
  return {
167
- tsType: createLiteralType(typeString),
169
+ tsType: createNumericLiteralType(typeString),
168
170
  };
169
171
  }
170
172
  // Handle intersection types that should be treated as inline objects
@@ -256,7 +258,7 @@ function collectAllFieldNames(type, checker) {
256
258
  return fieldNames;
257
259
  }
258
260
  function extractFieldsFromType(params) {
259
- const { type, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, sourceFiles, scalarMappingTable, scalarMappingContext, ignoreFields, } = params;
261
+ const { type, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, sourceFiles, scalarMappingTable, scalarMappingContext, ignoreFields, discoveredTypes, } = params;
260
262
  const fields = [];
261
263
  const diagnostics = [];
262
264
  const properties = extractPropertySymbols(type, checker);
@@ -317,6 +319,7 @@ function extractFieldsFromType(params) {
317
319
  ts.isPropertyDeclaration(declaration))) {
318
320
  propTypeNode = declaration.type;
319
321
  }
322
+ const fieldDiagnostics = [];
320
323
  const resolvedType = resolveFieldType(actualPropType, propTypeNode, {
321
324
  checker,
322
325
  knownTypeNames,
@@ -326,7 +329,21 @@ function extractFieldsFromType(params) {
326
329
  sourceFiles,
327
330
  scalarMappingTable,
328
331
  scalarMappingContext,
332
+ discoveredTypes,
333
+ diagnostics: fieldDiagnostics,
329
334
  });
335
+ for (const d of fieldDiagnostics) {
336
+ diagnostics.push({
337
+ code: d.code,
338
+ message: `Field '${propName}': ${d.message}`,
339
+ severity: d.severity,
340
+ location: getSourceLocationFromNode(declaration),
341
+ });
342
+ }
343
+ // Skip fields with never type — they have no GraphQL representation
344
+ if (resolvedType.kind === "never") {
345
+ continue;
346
+ }
330
347
  // Preserve nullability from original WithDirectives type
331
348
  const tsType = directiveNullable && !resolvedType.nullable
332
349
  ? { ...resolvedType, nullable: true }
@@ -551,7 +568,7 @@ function createGenericTypeDiagnostic(declaration, exportedName, location) {
551
568
  return null;
552
569
  }
553
570
  function processReexportedSymbol(params) {
554
- const { exportedName, resolvedSymbol, type, location, filePath, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scannedSourceFiles, scalarMappingTable, scalarMappingContext, } = params;
571
+ const { exportedName, resolvedSymbol, type, location, filePath, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scannedSourceFiles, scalarMappingTable, scalarMappingContext, discoveredTypes, } = params;
555
572
  const diagnostics = [];
556
573
  const scalarMetadataResult = detectScalarMetadata(type, checker);
557
574
  if (scalarMetadataResult.scalarName && !scalarMetadataResult.isPrimitive) {
@@ -659,6 +676,7 @@ function processReexportedSymbol(params) {
659
676
  scalarMappingTable,
660
677
  scalarMappingContext,
661
678
  ignoreFields,
679
+ discoveredTypes,
662
680
  });
663
681
  diagnostics.push(...fieldResult.diagnostics);
664
682
  return {
@@ -676,7 +694,7 @@ function processReexportedSymbol(params) {
676
694
  skip: false,
677
695
  };
678
696
  }
679
- function processExportDeclaration(node, sourceFile, filePath, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scannedSourceFiles, scalarMappingTable) {
697
+ function processExportDeclaration(node, sourceFile, filePath, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scannedSourceFiles, scalarMappingTable, discoveredTypes) {
680
698
  const types = [];
681
699
  const diagnostics = [];
682
700
  const detectedScalarNames = [];
@@ -754,6 +772,7 @@ function processExportDeclaration(node, sourceFile, filePath, checker, globalTyp
754
772
  scannedSourceFiles,
755
773
  scalarMappingTable,
756
774
  scalarMappingContext: exportedName.endsWith("Input") ? "input" : "output",
775
+ discoveredTypes,
757
776
  });
758
777
  if (result.skip)
759
778
  continue;
@@ -886,6 +905,7 @@ export function extractTypesFromProgram(program, sourceFiles, options) {
886
905
  const diagnostics = [];
887
906
  const detectedScalarNames = new Set();
888
907
  const detectedScalars = [];
908
+ const discoveredTypes = new Map();
889
909
  const { globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scalarMappingTable, } = options;
890
910
  const scannedSourceFilesSet = new Set(sourceFiles);
891
911
  for (const filePath of sourceFiles) {
@@ -1084,6 +1104,7 @@ export function extractTypesFromProgram(program, sourceFiles, options) {
1084
1104
  ? "input"
1085
1105
  : "output",
1086
1106
  ignoreFields,
1107
+ discoveredTypes,
1087
1108
  });
1088
1109
  const fields = fieldResult.fields;
1089
1110
  diagnostics.push(...fieldResult.diagnostics);
@@ -1127,7 +1148,7 @@ export function extractTypesFromProgram(program, sourceFiles, options) {
1127
1148
  types.push(typeInfo);
1128
1149
  }
1129
1150
  if (ts.isExportDeclaration(node)) {
1130
- const result = processExportDeclaration(node, sourceFile, filePath, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scannedSourceFilesSet, scalarMappingTable);
1151
+ const result = processExportDeclaration(node, sourceFile, filePath, checker, globalTypeMappings, knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, scannedSourceFilesSet, scalarMappingTable, discoveredTypes);
1131
1152
  types.push(...result.types);
1132
1153
  diagnostics.push(...result.diagnostics);
1133
1154
  for (const scalarName of result.detectedScalarNames) {
@@ -1137,11 +1158,81 @@ export function extractTypesFromProgram(program, sourceFiles, options) {
1137
1158
  }
1138
1159
  });
1139
1160
  }
1161
+ // Process transitively discovered types
1162
+ const processedDiscovered = new Set();
1163
+ while (discoveredTypes.size > processedDiscovered.size) {
1164
+ for (const [name, entry] of discoveredTypes) {
1165
+ if (processedDiscovered.has(name))
1166
+ continue;
1167
+ processedDiscovered.add(name);
1168
+ if (knownTypeNames.has(name))
1169
+ continue;
1170
+ const { fields } = extractFieldsFromType({
1171
+ type: entry.tsType,
1172
+ checker,
1173
+ globalTypeMappings,
1174
+ knownTypeNames,
1175
+ knownTypeSymbols,
1176
+ underlyingSymbolToTypeName,
1177
+ sourceFiles: scannedSourceFilesSet,
1178
+ scalarMappingTable,
1179
+ scalarMappingContext: "output",
1180
+ ignoreFields: null,
1181
+ discoveredTypes,
1182
+ });
1183
+ if (fields.length === 0)
1184
+ continue;
1185
+ types.push({
1186
+ metadata: {
1187
+ name,
1188
+ kind: "object",
1189
+ sourceFile: entry.sourceFile,
1190
+ sourceLocation: entry.sourceLocation,
1191
+ exportKind: "named",
1192
+ description: null,
1193
+ deprecated: null,
1194
+ directives: null,
1195
+ },
1196
+ fields,
1197
+ enumMembers: null,
1198
+ unionMembers: null,
1199
+ implementedInterfaces: null,
1200
+ inlineObjectMembers: null,
1201
+ });
1202
+ }
1203
+ }
1204
+ // Collect scalar names from field types (e.g., unknown → Unknown scalar)
1205
+ for (const typeInfo of types) {
1206
+ for (const field of typeInfo.fields) {
1207
+ collectScalarNamesFromType(field.tsType, detectedScalarNames);
1208
+ }
1209
+ }
1140
1210
  return {
1141
1211
  types,
1142
1212
  diagnostics,
1143
1213
  detectedScalarNames: [...detectedScalarNames],
1144
1214
  detectedScalars,
1215
+ discoveredTypeNames: new Set(discoveredTypes.keys()),
1145
1216
  };
1146
1217
  }
1218
+ function collectScalarNamesFromType(tsType, scalarNames) {
1219
+ if (tsType.kind === "scalar" &&
1220
+ tsType.scalarInfo?.isCustom &&
1221
+ !isBuiltInScalar(tsType.scalarInfo.scalarName)) {
1222
+ scalarNames.add(tsType.scalarInfo.scalarName);
1223
+ }
1224
+ if (tsType.elementType) {
1225
+ collectScalarNamesFromType(tsType.elementType, scalarNames);
1226
+ }
1227
+ if (tsType.members) {
1228
+ for (const member of tsType.members) {
1229
+ collectScalarNamesFromType(member, scalarNames);
1230
+ }
1231
+ }
1232
+ if (tsType.inlineObjectProperties) {
1233
+ for (const prop of tsType.inlineObjectProperties) {
1234
+ collectScalarNamesFromType(prop.tsType, scalarNames);
1235
+ }
1236
+ }
1237
+ }
1147
1238
  //# sourceMappingURL=type-extractor.js.map