generateDefinitions method
Iterable<QueryDefinition>
generateDefinitions({
- required String path,
- required DocumentNode document,
- required GeneratorOptions options,
- required SchemaMap schemaMap,
- required List<
FragmentDefinitionNode> fragmentsCommon, - required CanonicalVisitor canonicalVisitor,
Generates query definitions from a single GraphQL document.
This method processes a single document and generates all necessary query definitions, handling fragments and operations appropriately.
path - The file path for context
document - The GraphQL document to process
options - Generator options and configuration
schemaMap - Schema mapping configuration
fragmentsCommon - Common fragments to include
canonicalVisitor - Pre-configured canonical visitor
Returns an iterable of QueryDefinition objects
Throws MissingRootTypeException if root type is not found Throws GenerationProcessError if generation fails
Implementation
Iterable<QueryDefinition> generateDefinitions({
required String path,
required DocumentNode document,
required GeneratorOptions options,
required SchemaMap schemaMap,
required List<FragmentDefinitionNode> fragmentsCommon,
required CanonicalVisitor canonicalVisitor,
}) {
try {
final operations = document.definitions
.whereType<OperationDefinitionNode>()
.toList();
if (operations.isEmpty) {
return [];
}
return operations.map((operation) {
return _generateSingleQueryDefinition(
path: path,
document: document,
operation: operation,
options: options,
schemaMap: schemaMap,
fragmentsCommon: fragmentsCommon,
canonicalVisitor: canonicalVisitor,
);
});
} catch (e) {
if (e is MissingRootTypeException || e is GenerationProcessError) {
rethrow;
}
throw GenerationProcessError(
'Failed to generate definitions: $e',
context: 'Path: $path',
suggestion: 'Check your GraphQL operations and schema',
);
}
}