58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { GraphQLError } from '../../error/GraphQLError.mjs';
 | |
| 
 | |
| /**
 | |
|  * Lone Schema definition
 | |
|  *
 | |
|  * A GraphQL document is only valid if it contains only one schema definition.
 | |
|  */
 | |
| export function LoneSchemaDefinitionRule(context) {
 | |
|   var _ref, _ref2, _oldSchema$astNode;
 | |
| 
 | |
|   const oldSchema = context.getSchema();
 | |
|   const alreadyDefined =
 | |
|     (_ref =
 | |
|       (_ref2 =
 | |
|         (_oldSchema$astNode =
 | |
|           oldSchema === null || oldSchema === void 0
 | |
|             ? void 0
 | |
|             : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0
 | |
|           ? _oldSchema$astNode
 | |
|           : oldSchema === null || oldSchema === void 0
 | |
|           ? void 0
 | |
|           : oldSchema.getQueryType()) !== null && _ref2 !== void 0
 | |
|         ? _ref2
 | |
|         : oldSchema === null || oldSchema === void 0
 | |
|         ? void 0
 | |
|         : oldSchema.getMutationType()) !== null && _ref !== void 0
 | |
|       ? _ref
 | |
|       : oldSchema === null || oldSchema === void 0
 | |
|       ? void 0
 | |
|       : oldSchema.getSubscriptionType();
 | |
|   let schemaDefinitionsCount = 0;
 | |
|   return {
 | |
|     SchemaDefinition(node) {
 | |
|       if (alreadyDefined) {
 | |
|         context.reportError(
 | |
|           new GraphQLError(
 | |
|             'Cannot define a new schema within a schema extension.',
 | |
|             {
 | |
|               nodes: node,
 | |
|             },
 | |
|           ),
 | |
|         );
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       if (schemaDefinitionsCount > 0) {
 | |
|         context.reportError(
 | |
|           new GraphQLError('Must provide only one schema definition.', {
 | |
|             nodes: node,
 | |
|           }),
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       ++schemaDefinitionsCount;
 | |
|     },
 | |
|   };
 | |
| }
 |