generateLibrary function
Generates a complete library definition from GraphQL documents and schema.
This is the main entry point for generating Dart code from GraphQL documents. It coordinates the entire generation process by:
- Creating necessary services (SchemaService, FileService, GenerationService)
- Delegating the generation work to the GenerationService
- Returning a complete LibraryDefinition with all generated code
Parameters:
path- The file path for the generated library (used for naming)gqlDocs- List of GraphQL documents containing queries, mutations, subscriptionsoptions- Generator configuration options (naming schemes, features, etc.)schemaMap- Schema mapping configuration for type resolutionfragmentsCommon- Common fragments shared across documentsschema- The GraphQL schema document
Returns: A LibraryDefinition containing all generated classes, queries, and metadata
Throws:
- GenerationProcessError if generation fails
- DuplicatedClassesException if duplicate classes are detected
- MissingRootTypeException if required root types are missing
Example:
final library = generateLibrary(
'lib/graphql/queries.dart',
[queryDocument, mutationDocument],
GeneratorOptions(),
SchemaMap(),
[],
schemaDocument,
);
Implementation
LibraryDefinition generateLibrary(
String path,
List<DocumentNode> gqlDocs,
GeneratorOptions options,
SchemaMap schemaMap,
List<FragmentDefinitionNode> fragmentsCommon,
DocumentNode schema,
) {
// Create services with dependency injection
final schemaService = SchemaService(schema);
const fileService = FileService.instance;
final generationService = GenerationService(
schemaService: schemaService,
fileService: fileService,
);
// Use GenerationService to generate the library
return generationService.generateLibrary(
path,
gqlDocs,
options,
schemaMap,
fragmentsCommon,
);
}