MCPcopy Index your code
hub / github.com/glideapps/quicktype / GQLQuery

Class GQLQuery

src/GraphQL.ts:146–331  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144}
145
146class GQLQuery {
147 private readonly _schema: GQLSchema;
148 private readonly _fragments: { [name: string]: FragmentDefinitionNode };
149
150 readonly queries: List<OperationDefinitionNode>;
151
152 constructor(schema: GQLSchema, queryString: string) {
153 this._schema = schema;
154 this._fragments = {};
155
156 const queryDocument = graphql.parse(queryString) as DocumentNode;
157 const queries: OperationDefinitionNode[] = [];
158 for (const def of queryDocument.definitions) {
159 if (def.kind === "OperationDefinition") {
160 if (def.operation !== "query") continue;
161 queries.push(def);
162 } else if (def.kind === "FragmentDefinition") {
163 this._fragments[def.name.value] = def;
164 }
165 }
166 assert(queries.length >= 1, "GraphQL file doesn't have any queries defined.");
167 this.queries = List(queries);
168 }
169
170 private makeIRTypeFromFieldNode = (
171 builder: TypeBuilder,
172 fieldNode: FieldNode,
173 fieldType: GQLType,
174 containingTypeName: string
175 ): TypeRef => {
176 const optional = hasOptionalDirectives(fieldNode.directives);
177 let result: TypeRef;
178 switch (fieldType.kind) {
179 case TypeKind.SCALAR:
180 result = makeScalar(builder, fieldType);
181 break;
182 case TypeKind.OBJECT:
183 case TypeKind.INTERFACE:
184 case TypeKind.UNION:
185 if (!fieldNode.selectionSet) {
186 return panic("No selection set on object or interface");
187 }
188 return makeNullable(
189 builder,
190 this.makeIRTypeFromSelectionSet(
191 builder,
192 fieldNode.selectionSet,
193 fieldType,
194 fieldNode.name.value,
195 containingTypeName
196 ),
197 fieldNode.name.value,
198 null,
199 containingTypeName
200 );
201 case TypeKind.ENUM:
202 if (!fieldType.enumValues) {
203 return panic("Enum type doesn't have values");

Callers

nothing calls this directly

Calls 10

panicFunction · 0.90
assertNeverFunction · 0.90
hasOptionalDirectivesFunction · 0.85
makeScalarFunction · 0.85
makeNullableFunction · 0.85
makeTypeNamesFunction · 0.85
removeNullFunction · 0.85
expandSelectionSetFunction · 0.85
getFieldFunction · 0.85
mapMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…