generateDefinitions method

Iterable<QueryDefinition> generateDefinitions({
  1. required String path,
  2. required DocumentNode document,
  3. required GeneratorOptions options,
  4. required SchemaMap schemaMap,
  5. required List<FragmentDefinitionNode> fragmentsCommon,
  6. 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',
    );
  }
}