generateDefinitions function

Iterable<QueryDefinition> generateDefinitions({
  1. required DocumentNode schema,
  2. required TypeDefinitionNodeVisitor typeDefinitionNodeVisitor,
  3. required String path,
  4. required DocumentNode document,
  5. required GeneratorOptions options,
  6. required SchemaMap schemaMap,
  7. required List<FragmentDefinitionNode> fragmentsCommon,
  8. required CanonicalVisitor canonicalVisitor,
})

Generates query definitions from a single GraphQL document.

This function processes a single GraphQL document and generates all necessary query definitions. It's typically used internally by the generation pipeline but can also be used directly for more granular control.

Parameters:

  • schema - The GraphQL schema document
  • typeDefinitionNodeVisitor - Visitor for type definitions (legacy parameter)
  • path - The file path for context
  • document - The GraphQL document to process
  • options - Generator configuration options
  • schemaMap - Schema mapping configuration
  • fragmentsCommon - Common fragments to include
  • canonicalVisitor - Pre-configured canonical visitor

Returns: An iterable of QueryDefinition objects representing the generated queries

Throws:

Note: This function is primarily used internally. For most use cases, prefer using generateLibrary instead.

Implementation

Iterable<QueryDefinition> generateDefinitions({
  required DocumentNode schema,
  required TypeDefinitionNodeVisitor typeDefinitionNodeVisitor,
  required String path,
  required DocumentNode document,
  required GeneratorOptions options,
  required SchemaMap schemaMap,
  required List<FragmentDefinitionNode> fragmentsCommon,
  required CanonicalVisitor canonicalVisitor,
}) {
  // Create services for this generation
  final schemaService = SchemaService(schema);
  const fileService = FileService.instance;
  final generationService = GenerationService(
    schemaService: schemaService,
    fileService: fileService,
  );

  // Use GenerationService to generate definitions
  return generationService.generateDefinitions(
    path: path,
    document: document,
    options: options,
    schemaMap: schemaMap,
    fragmentsCommon: fragmentsCommon,
    canonicalVisitor: canonicalVisitor,
  );
}